ELK-Filebeat7.4.0单机多实例
1.起因
业务需求,已经转成json格式的nginx日志直接通过filebeat传入了Elasticsearch中,而其他程序日志需要通过filebeat传入logstash进行二次过滤。就需要解决多output的问题。而根据官方文档:
You configure Filebeat to write to a specific output by setting options in the Outputs section of the
filebeat.yml
config file. Only a single output may be defined.
可知filebeat.yml
中output有且只能有一个。当然你可以在filebeat.yml
input模块中添加多个tags,并传递给logstash,并在logstash上通过不同的标签区分后传入不同的index中。
2.配置单机多实例
2.1 filebeat介绍
logstash 和filebeat都具有日志收集功能,因为filebeat由Golang编写相较于logstash更轻量,占用资源更少。所以决定在同一台机器上启动两个filebeat实例,分别用于拉取不同程序日志。
2.2分析原版filebeat的systemd启动脚本:
1 | cat /usr/lib/systemd/system/filebeat.service |
2.3结合filebeat.yml可知:
filebeat并不需要占用独立端口
依赖/etc/filebeat/filebeat.yml作为程序配置文件
依赖/var/lib/filebeat目录记录上次抓取指定日志的偏移量和时间戳
其他目录:
- /usr/share/filebeat #filebeat程序家目录
- /var/log/filebeat #filebeat日志目录
2.4分别创建以上文件/目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51mkdir -p /var/log/filebeat2
mkdir -p /var/lib/filebeat2
cat > /etc/filebeat/filebeat_logstash.yml <<'EOF'
filebeat.inputs:
- type: log
enabled: true
- /var/applogs/*/*.log
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 1
setup.kibana:
output.logstash:
hosts: ["172.19.111.144:8080"]
processors:
- add_host_metadata:
netinfo.enabled: true
cache.ttl: 5m
EOF
修改systemd启动脚本:
cat > /usr/lib/systemd/system/filebeat_logstash.service <<'EOF'
[Unit]
Description=Filebeat sends log files to Logstash or directly to Elasticsearch.
Documentation=https://www.elastic.co/products/beats/filebeat
Wants=network-online.target
After=network-online.target
[Service]
Environment="BEAT_LOG_OPTS=-e"
Environment="BEAT_CONFIG_OPTS=-c /etc/filebeat/filebeat_logstash.yml"
Environment="BEAT_PATH_OPTS=-path.home /usr/share/filebeat -path.logs /var/log/filebeat2 -path.data /var/lib/filebeat2"
ExecStart=/usr/share/filebeat/bin/filebeat $BEAT_LOG_OPTS $BEAT_CONFIG_OPTS $BEAT_PATH_OPTS
Restart=always
[Install]
WantedBy=multi-user.target
EOF
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BingCheng!