有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
本文简介 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 2.x.x版本仅支持单线程运行。多线程运行需 提交申请 使用 LogListener 3.x.x版本
默认内存资源限制
Loglistener 默认内存阈值设置为2G,若需限制,可参见 配置 LogListener,修改 LogListener 配置文件中的 max_mem 修改最大内存占用。建议不低于300M。
默认带宽资源限制
Loglistener 默认未限制带宽资源,若需限制,可参见 配置 LogListener,修改 LogListener 配置文件中的 max_send_rate,对程序使用的网络带宽进行限制。
资源超限处理策略
若 Loglistener 占用相关 CPU 和内存资源超过最大限制的时间超过5分钟,则采集程序会强制自动重启。
日志压缩
采集日志默认会压缩后上传,若不需要压缩,可参见 配置 LogListener,修改 LogListener 配置文件中的 request_compression 关闭压缩上传。
监控目录数
默认最大监控目录数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 模式可以同时使用。
采集黑名单是在采集路径下进行排除,因此无论是文件路径模式,还是目录路径模式,其指定路径要求为采集路径的子集。