本文简介 Loglistener 采集数据时在文件采集、配置、资源、性能、错误处理等方面的能力与限制,以及相关使用说明。
文件采集限制
项目 | 能力与限制 |
文件编码 | 支持 UTF8,GBK 格式编码。 注意: GBK 编码格式需要 Loglistener 2.6.2及以上版本。 |
软链接 | 支持。 |
单条日志大小 | 单行日志大小限制为512KB,若日志超过512KB 后,会截断只保留前512KB。多行日志按行首正则表达式划分后,单条日志最大限制为1M。 |
正则表达式 | 正则表达式类型支持 Perl 兼容正则表达式。 |
首次日志采集行为 | Loglistener 支持全量采集/增量采集策略: 全量采集:首次安装启动 Loglistener 后,会采集所有符合条件的日志,包括已经没有写入的文件。 增量采集:首次安装启动 Loglistener 后,存量文件会从最新位置开始采集。 注意: 增量/全量采集需要 Loglistener 2.6.2及以上版本。 |
日志文件轮转 | 支持。(推荐轮转后的文件名,不要被采集通配路径覆盖到) 注意: 文件轮转后60秒内,若无新增日志写入轮转后的日志文件,轮转后的日志文件将不会再被采集,否则将持续采集轮转后的日志文件。 |
日志解析失败时采集行为 | 推荐开启解析失败上传功能,开启后将会把解析失败的日志按照单行全文格式上传至预设索引中。否则,解析失败日志将被丢弃。 |
文件打开行为 | Loglistener 会在采集读取文件时打开,读完关闭。 |
过滤规则 | 单、多行全文采集最多可配置1条过滤规则。 |
| 分隔符、正则提取模式、JSON 格式最多可以配置5条过滤规则。 |
Key 字段长度 | 分隔符、正则提取模式 Key 字段长度最多为128Byte。 |
Key-Value 组个数 | 所有解析模式下,提取 Key-Value 组的个数最多为1000个,超过部分将会被丢弃。 |
LogListener 最大连接数 | LogListener 最大连接数限制:1024。 |
内存占用 | LogListener 的内存占用,正常情况最多50MB。 |
CPU占用 | LogListener 的 CPU 使用在5MB/s日志量下,业务进程合计不超过单核20%。 |
采集配置生效延时 | 更新采集配置之后会有1分钟的生效延时。 |
日志文件 | LogListener 运行的采集目标日志文件大小建议小于500MB。 |
Checkpoint 管理
项目 | 能力与限制 |
Checkpoint 保存位置 | 保存路径默认为 Loglistener 安装目录下 data 目录下。若需修改,可参见 配置 LogListener,修改 LogListener 配置文件中的 checkpoint_cache_file,修改 Checkpoint 保存位置。 |
Checkpoint 保存策略 | Loglistener 存有两份 checkpoint 元数据: 一份只记录已上传完成的位点信息,实时持久化到磁盘上。 一份同时记录了已完成位点信息与已采集但尚未完成的位点信息,周期性持久化到磁盘上。程序退出时也会优先进行持久化。 |
资源、性能限制
项目 | 能力与限制 |
默认 CPU 核数限制 | LogListener 仅支持单核运行。 |
默认 CPU 资源限制 | LogListener 默认未做 CPU 资源限制,若需限制,可参见 配置 LogListener,修改 LogListener 配置文件中的 cpu_usage_thres 最大 CPU 利用率。目前 Loglistener 的实现架构,如未作 CPU 资源限制,其最高能够达到的单核 CPU 使用率为110%左右(业务线程最大100%, 管控线程10%左右)。 |
默认线程数限制 | |
默认内存资源限制 | |
默认带宽资源限制 | |
资源超限处理策略 | 若 Loglistener 占用相关 CPU 和内存资源超过最大限制的时间超过5分钟,则采集程序会强制自动重启。 |
日志压缩 | |
监控目录数 | 默认最大监控目录数5000,如超出可能会引起采集失败。 |
监控文件数 | 推荐最大监控文件数10000,如超出可能会引起采集失败。 |
监控事件数 | Polling 模式下,推荐最大事件数10000,如超出可能会引起采集失败。 |
错误处理
项目 | 能力与限制 |
网络错误处理 | 非需要特殊处理的异常(如日志主题删除),其它错误都会进行重试(网络异常、超时、频控、欠费等)。 |
超时最大重试时间 | 若数据持续发送失败超过1小时,则丢弃该数据。 默认行为是间隔重试,且重试间隔时间会越来越长,直至超过超时最大尝试时间。 |
重试次数 | 可通过 loglistener.conf 配置文件设置,默认不配置。此时默认会一直重试,直至超过最大重试时间,之后丢弃。 如果配置了重试次数,则按照重试次数进行重试,超过最大次数则丢弃。 |
换行符缺失 | 采集时,若单条日志结尾缺少换行符, 采集器将等待五分钟, 若五分钟内没有检测到换行符, 将自动填充换行符,并继续往下采集 |
文件采集规则
项目 | 能力与限制 |
日志上传策略 | Loglistener 会将同一文件的日志自动聚合上传,聚合条件为:10000条日志、日志集合总大小达到1M或者日志采集时间超过3秒,任一条件满足则触发上传行为。 |
文件采集的处理策略 | 单个目标文件(采集路径所能匹配到的一个文件)只支持上传日志到一个日志主题中,不支持多个 topic 的采集路径覆盖到同一个文件。如果想要将一个文件上传到多个日志主题中,可以通过软链接进行;对同一个目标文件创建多个软链接,不同的日志主题采集不同的软链接。 |
日志采集延迟 | 实时采集情况下,会在1分钟之内完成数据采集、传输、存储落盘,达到控制台可检索的效果。 如果日志生产量巨大,或者将采集程序使用的资源限制的较小,会有一定的采集延迟。 |
日志主题相关规则
项目 | 能力与限制 |
采集配置数量限制 | 一个日志主题可关联的采集配置数量上限为100个 |
机器组相关规则
项目 | 能力与限制 |
机器组逻辑 | 目前机器组分为两类,其使用方法是相互独立的,且两种用法是不兼容的,如果混合使用,采集机器将拉取不到正确的采集配置,造成不采集的现象。 IP 机器组,机器 IP 需要在控制台上手动加入机器组,对应机器上 loglistener.conf 的 group_label 需为空。 标签机器组,控制台设置机器组标签,对应机器上 loglistener.conf 的 group_label 需要设置为相同的标签。 |
机器组与日志主题的关系 | 单个日志主题,可以绑定多个机器组。 单个机器组,可以绑定到多个日志主题上。 |
机器组与采集机器的关系 | 单个采集机器,可以加入到多个机器组中。 对于 IP 机器组,采集机器加入的机器组数量不受限制。 对于标签机器组,采集机器加入的机器组数量上限为20个。 |
标签机器组 label 限制 | 标签机器组的 label,目前限制为32字符。 标签机器组,单个机器组最多可设置20个 label。 |
采集路径/采集黑名单用法
项目 | 能力与限制 |
采集黑名单 | 此功能是用来指定采集路径下,需要忽略采集的内容,目前采集黑名单分为两类: 文件路径模式:采集路径下,需要忽略采集的完整文件路径,支持通配模式。 目录路径模式:采集路径下,需要忽略采集的目录前缀,支持通配模式。 注意: FILE/PATH 模式可以同时使用。 采集黑名单是在采集路径下进行排除,因此无论是文件路径模式,还是目录路径模式,其指定路径要求为采集路径的子集。 |