1. 简介
Filebeat 是使用 Golang 实现的轻量型日志采集器。本质上是一个 agent ,可以安装在各个节点上,根据配置读取对应位置的日志,并上报到相应的地方去。
2. 下载
下载地址:Past Releases of Elastic Stack Software | Elastic
建议下载和 ElasticSearch 版本号一样的版本,我自己的 ElasticSearch 是 7.6.2 版本的,这里我也下载 FileBeat-7.6.2 版本的。并将安装包上传到 linux 的 /home/software/ 下。然后按照如下方式安装:
cd /home/software
tar -zxvf filebeat-7.6.2-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local
mv filebeat-7.6.2-linux-x86_64/ filebeat-7.6.2
3. 配置
配置 Filebeat
vim /usr/local/filebeat-7.6.2/filebeat.yml
我这里使用 filebeat 去抓取 log4j2 的日志文件,然后将数据发送给 kafka,所以配置如下:
###################### Filebeat Configuration Example #########################
filebeat.inputs:
- input_type: log
paths:
## 定义了日志文件路径,可以采用模糊匹配模式,如*.log
- /workspaces/logs/logCollector/app-collector.log
#定义写入 ES 时的 _type 值
document_type: "app-log"
multiline:
#pattern: '^\s*(\d{4}|\d{2})\-(\d{2}|[a-zA-Z]{3})\-(\d{2}|\d{4})' # 指定匹配的表达式(匹配以 2017-11-15 08:04:23:889 时间格式开头的字符串)
pattern: '^\[' # 指定匹配的表达式(匹配以 [ 开头的字符串)
negate: true # 是否需要匹配到
match: after # 不匹配的行,合并到上一行的末尾
max_lines: 2000 # 最大的行数
timeout: 2s # 如果在规定时间没有新的日志事件就不等待后面的日志
fields: ## topic 对应的消息字段或自定义增加的字段
logbiz: collector
logtopic: app-log-collector ## 按服务划分用作kafka topic,会在logstash filter 过滤数据时候作为 判断参数 [fields][logtopic]
evn: dev
- input_type: log
paths:
## 定义了日志文件路径,可以采用模糊匹配模式,如*.log
- /workspaces/logs/logCollector/error-collector.log
#定义写入 ES 时的 _type 值
document_type: "error-log"
multiline:
#pattern: '^\s*(\d{4}|\d{2})\-(\d{2}|[a-zA-Z]{3})\-(\d{2}|\d{4})' # 指定匹配的表达式(匹配以 2017-11-15 08:04:23:889 时间格式开头的字符串)
pattern: '^\[' # 指定匹配的表达式(匹配以 [ 开头的字符串)
negate: true # 是否匹配到
match: after # 不匹配的行,合并到上一行的末尾
max_lines: 2000 # 最大的行数
timeout: 2s # 如果在规定时间没有新的日志事件就不等待后面的日志,直接进行推送操作
fields: ## topic 对应的消息字段或自定义增加的字段
logbiz: collector
logtopic: error-log-collector ## 按服务划分用作kafka topic
evn: dev
output.kafka: ## filebeat 支持多种输出,支持向 kafka,logstash,elasticsearch 输出数据,此处设置数据输出到 kafka。
enabled: true ## 启动这个模块
hosts: ["192.168.31.101:9092"] ## 地址
topic: '%{[fields.logtopic]}' ## 主题(使用动态变量)
partition.hash: ## kafka 分区 hash 规则
reachable_only: true
compression: gzip ## 数据压缩
max_message_bytes: 1000000 ## 最大容量
required_acks: 1 ## 是否需要 ack,有三个值可以取:0、1、-1
logging.to_files: true
进入到 FileBeat 安装目录下,可以使用如下命令进行启动:
## 检查配置是否正确
./filebeat -c filebeat.yml test config
# 启动filebeat:
/usr/local/filebeat-7.6.2/filebeat &
#查看是否启动成功
ps -ef | grep filebeat
## 停止
ps -ef | grep filebeat |awk '{print $2}'|xargs kill
由于要用到 kafka, 所以需要先启动 kafka。