LLOG
Lightweight log agent.
说明
- 超轻量级日志收集,过滤,上报工具。支持glob选取日志,收集日志上报至指定API或ES,后续支持kafka,redis。
- 支持filebeat核心功能。
- 相同运行环境,监控相同日志,比filebeat占用内存少50%以上。
测试机器:mac book pro 系统版本:10.14.5 配置:i9/1TB SSD/32G
程序 |
监控文件数 |
占用内存 |
线程数 |
llog |
4 |
6.1MB |
23 |
llog |
20 |
6.8MB |
34 |
llog |
50 |
7.1MB |
36 |
filebeat |
4 |
13.9MB |
31 |
filebeat |
20 |
16.2MB |
37 |
filebeat |
50 |
35.3MB |
38 |
- 一键安装,无依赖。
安装
指定配置
1. 下载对应版本LLA
# 下载linux 64 bit
wget http://qiniucdn.schoeu.com/llog_64bit
或
# 下载linux 32 bit
wget http://qiniucdn.schoeu.com/llog_32bit
2. 创建配置文件,新建llog_conf.yml文件,内容如下
# 日志收集配置块
input:
# 存放各类日志文件的glob匹配路径
- log_path: ["/var/folders/lp/jd6nj9ws5r3br43_y7qw66zw0000gn/T/.nm_logs/nm_apps?/*.log"]
# 在输入中排除符合正则表达式列表的日志行
#exclude_lines: ["test"]
# 包含输入中符合正则表达式列表的日志行
#include_lines: ["^\\w+"]
# 忽略掉符合正则表达式列表的文件
#exclude_files: ["\\d{4}.log"]
# 默认为false, 从文件开始处重新发送所有内容。设置为true会从文件尾开始监控文件新增内容把新增的每一行文件进行发送
tail_files: true
#检测是否有新增日志文件的频率,默认为10秒
scan_frequency: 160
# 最后一次读取文件后,持续时间内没有再写入日志,将关闭文件句柄,默认是 5分钟
close_inactive: 30
# 发送自定义字段,默认会放在fields字段下, 当然也可以使用json字符串, 如 '{"a":"b"}'
#fields: "some field here"
# 多行匹配
#multiline:
# 多行匹配点
#pattern: "^normal_log"
# 最多匹配多少行,默认10
#max_lines: 10
- log_path: ["/var/folders/lp/jd6nj9ws5r3br43_y7qw66zw0000gn/T/.nm/*.log"]
# 多行匹配
multiline:
# 多行匹配点
pattern: "^error_log"
# 最多匹配多少行,默认10
max_lines: 5
scan_frequency: 160
close_inactive: 30
# 输出配置块:
output:
# 把收集到的日志发送到指定API
# 请求boby中带有JSON数据,以POST方法发送至指定接口
#api_server:
# 是否启用
#enable: false
#url: "http://127.0.0.1:9200/nma"
elasticsearch:
# 是否启用
enable: true
host: ["http://127.0.0.1:9200/"]
index: "nma"
# 输出认证.
#username: "admin"
#password: "s3cr3t"
# 通用配置块
# 应用名
#name: "llog"
# 是否上报系统级别日志(cpu,内存,磁盘,网络), 默认为false,不上报
#sys_info: true
# 系统信息上报时间间隔,默认为10秒
#sys_info_during: 10
# 设置最大使用cpu数量, 默认无限制
#max_procs: 8
# 文件状态保持配置
#snapshot:
# 文件状态开关, 默认不开启
#enable: false
# 文档状态保存,快照当前状态到本地,下次启动会优先使用快照内容
#snapshot_dir: '/path/to/snapshot/file'
# 定时保存文件状态,默认为5秒
#snapshot_during: 5
3. 后台启动llog
# 默认配置启动
nohup ./llog_64bit >> llog_nohup.log 2>&1 &
# 指定配置文件启动
nohup ./llog_64bit ./llog_conf.yml >> llog_nohup.log 2>&1 &
上报数据格式
{
"@logId": "cc621467-b53e-4e76-84b5-5679567c986f",
"@message": "log content here...",
"@timestamps": 1569751757188,
"@name": "LLOG",
"@version": "1.0.0",
"@type": "normal|error|system",
"@fields": "{\"key\":\"value\"}"
}
特性
- 获取系统信息(cpu,内存,磁盘,网络)
- 支持Glob语法批量指定日志
- output支持ElasticSearch
- output支持HTTP API
- 在输入中排除符合正则表达式列表的日志行
- 包含输入中符合正则表达式列表的日志行
- 忽略掉符合正则表达式列表的文件
- 一次日志事件中最多上传多少个字符
- 更换配置文件为yaml
- API, ES请求Timeout设置
- 多行日志匹配,一般用于错误堆栈信息收集
- 多行日志匹配限制行上限
- 可配置从日志文件起始或尾部进行日志监听
- 新增文件检测
- 自动关闭长期不活动文件句柄
- 可限制cpu最多使用核数
- 支持自定义字段,用于检索
- 保存文件状态
- 支持多套独立配置
- 可设置日志上报线程数