Docker 安装 ELK (ElasticSearch、ElasticSearch-head、Logstash、Kibana、Filebeat) 容器 (完整详细图文版)
说明
ELK做日志分析的时候,有时需要一个filebeat采集多个日志,送给ES,或者给logstash做解析。下面举例演示以下filebeat采集messages日志,secure日志,以及nginx日志送给ES或者送给logstash做解析的正确配置方法。
1、filebeat.yml 配置
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/logdir/serviceA/warn.log
document_type: serviceA
fields_under_root: true
fields:
appid: serviceA
log_type: warn
- type: log
enabled: true
paths:
- /var/logdir/serviceA/error.log
document_type: serviceA
fields_under_root: true
fields:
appid: serviceA
log_type: error
- type: log
enabled: true
paths:
- /var/logdir/serviceB/warn.log
document_type: serviceB
fields_under_root: true
fields:
appid: serviceB
log_type: warn
- type: log
enabled: true
paths:
- /var/logdir/serviceB/error.log
document_type: serviceB
fields_under_root: true
fields:
appid: serviceB
log_type: error
output.logstash:
hosts: ["172.17.0.3:5044"]
2、logstash.conf 配置
input {
beats {
port => 5044
}
}
output {
if [log_type] == "warn" {
elasticsearch {
hosts => ["http://172.17.0.2:9200"]
index => "warn-%{+YYYY.MM.dd}"
}
stdout{
codec=>rubydebug
}
}
else if [log_type] == "error" {
elasticsearch {
hosts => ["http://172.17.0.2:9200"]
index => "error_-%{+YYYY.MM.dd}"
}
stdout{
codec=>rubydebug
}
}
}
3、运行filebeat容器
日志文件
# -v 进行目录挂载
# /home/logdir 是日志文件的路径
docker run -d --name filebeat-up \
-v /home/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /home/logdir:/var/logdir \
-d elastic/filebeat:7.17.4
4、测试结果