背景
在上一篇分享中,我们发现数据采集到的日志数据都在 message
属性里,本次分享如何利用模块格式化日志信息
Filebeat Module
Filebeat 内置提供了许多开箱即用的 modules ,对日志文件做简单的收集和解析处理,可以简化我们的配置,直接使用就可以
cd /usr/local/filebeat-7.6.2-linux-x86_64
# 查看支持哪些模块
./filebeat modules list
Enabled:
Disabled:
activemq
apache
auditd
aws
azure
cef
cisco
coredns
elasticsearch
envoyproxy
googlecloud
haproxy
ibmmq
icinga
iis
iptables
kafka
kibana
logstash
misp
mongodb
mssql
mysql
nats
netflow
nginx
osquery
panw
postgresql
rabbitmq
redis
santa
suricata
system
traefik
zeek
配置 nginx 模块
可以看到,内置了很多的 module,但是都没有启用,如果需要启用需要进行 enable 操作
# 启动
./filebeat modules enable nginx
# 输出,说明 nginx 模块已可用
Enabled nginx
# 禁用
./filebeat modules disable nginx
模块开启之后,进入到 modules.d
目录下,发现只有 nginx.yml
后面没有 .disabled
cd modules.d/
ls -al
-rw-r--r-- 1 root root 483 Mar 26 01:23 activemq.yml.disabled
-rw-r--r-- 1 root root 475 Mar 26 01:23 apache.yml.disabled
-rw-r--r-- 1 root root 280 Mar 26 01:23 auditd.yml.disabled
-rw-r--r-- 1 root root 3064 Mar 26 01:23 aws.yml.disabled
-rw-r--r-- 1 root root 1382 Mar 26 01:23 azure.yml.disabled
-rw-r--r-- 1 root root 200 Mar 26 01:23 cef.yml.disabled
-rw-r--r-- 1 root root 1978 Mar 26 01:23 cisco.yml.disabled
-rw-r--r-- 1 root root 318 Mar 26 01:23 coredns.yml.disabled
-rw-r--r-- 1 root root 964 Mar 26 01:23 elasticsearch.yml.disabled
-rw-r--r-- 1 root root 327 Mar 26 01:23 envoyproxy.yml.disabled
-rw-r--r-- 1 root root 2019 Mar 26 01:23 googlecloud.yml.disabled
-rw-r--r-- 1 root root 376 Mar 26 01:23 haproxy.yml.disabled
-rw-r--r-- 1 root root 295 Mar 26 01:23 ibmmq.yml.disabled
-rw-r--r-- 1 root root 651 Mar 26 01:23 icinga.yml.disabled
-rw-r--r-- 1 root root 470 Mar 26 01:23 iis.yml.disabled
-rw-r--r-- 1 root root 366 Mar 26 01:23 iptables.yml.disabled
-rw-r--r-- 1 root root 398 Mar 26 01:23 kafka.yml.disabled
-rw-r--r-- 1 root root 293 Mar 26 01:23 kibana.yml.disabled
-rw-r--r-- 1 root root 471 Mar 26 01:23 logstash.yml.disabled
-rw-r--r-- 1 root root 300 Mar 26 01:23 misp.yml.disabled
-rw-r--r-- 1 root root 296 Mar 26 01:23 mongodb.yml.disabled
-rw-r--r-- 1 root root 311 Mar 26 01:23 mssql.yml.disabled
-rw-r--r-- 1 root root 471 Mar 26 01:23 mysql.yml.disabled
-rw-r--r-- 1 root root 287 Mar 26 01:23 nats.yml.disabled
-rw-r--r-- 1 root root 214 Mar 26 01:23 netflow.yml.disabled
-rw-r--r-- 1 root root 472 Mar 26 01:23 nginx.yml
-rw-r--r-- 1 root root 495 Mar 26 01:23 osquery.yml.disabled
-rw-r--r-- 1 root root 356 Mar 26 01:23 panw.yml.disabled
-rw-r--r-- 1 root root 305 Mar 26 01:23 postgresql.yml.disabled
-rw-r--r-- 1 root root 343 Mar 26 01:23 rabbitmq.yml.disabled
-rw-r--r-- 1 root root 566 Mar 26 01:23 redis.yml.disabled
-rw-r--r-- 1 root root 266 Mar 26 01:23 santa.yml.disabled
-rw-r--r-- 1 root root 299 Mar 26 01:23 suricata.yml.disabled
-rw-r--r-- 1 root root 477 Mar 26 01:23 system.yml.disabled
-rw-r--r-- 1 root root 302 Mar 26 01:23 traefik.yml.disabled
-rw-r--r-- 1 root root 1294 Mar 26 01:23 zeek.yml.disabled
修改 nginx.yml
配置文件,分别增加 access
和 error
的日志文件路径,注意路径最后增加 *
,因为 Nginx
以日期归档日志文件
[root@localhost filebeat-7.6.2-linux-x86_64]# vi filebeat-nginx-es.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/nginx/logs/*.log
setup.template.settings:
index.number_of_shards: 3
output.elasticsearch:
hosts: ["192.168.111.238:9200", "192.168.111.239:9200", "192.168.111.240:9200"]
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
# 加载 module
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
启动 filebeat
,发现日志报错
./filebeat -e -c filebeat-nginx-es.yml
根据上面的日志提示,执行如下命令进行安装(在线安装有点慢...)
离线安装方式,注意切换到 Elasticsearch 启动权限的用户
wget https://artifacts.elastic.co/downloads/elasticsearch-plugins/ingest-user-agent/ingest-user-agent-6.6.1.zip
wget https://artifacts.elastic.co/downloads/elasticsearch-plugins/ingest-geoip/ingest-geoip-6.6.1.zip
bin/elasticsearch-plugin install file:///usr/local/src/ingest-user-agent-6.6.1.zip
bin/elasticsearch-plugin install file:///usr/local/src/ingest-geoip-6.6.1.zip
# 查看已经安装的插件
bin/elasticsearch-plugin list
在集群中安装成功后,重启 Elasticsearch
测试观察输出
在数据浏览查看索引数据,如下图:
可对比上篇文章中的测试结果
下一步计划
在 Kibana 中查看数据