拉取镜像
docker pull elastic/filebeat:7.12.0
运行镜像
docker run -d --name=elk-filebeat elastic/filebeat:7.12.0
说明:因为filebeat的配置文件修改需要权限,我们不能直接在容器中修改,所以我们就临时启动一个filebeat镜像服务,将我们的filebeat容器中的配置文件拷贝与我们的虚拟机,在虚拟机中授权修改配置文件,然后同步到我们的容器中。
拷贝配置文件
docker cp elk-filebeat:/usr/share/filebeat /opt/elk/
授权
chmod 777 -R /opt/elk/
给filebeat的配置文件filebeat.yml授权
chmod go-w /opt/elk/filebeat/filebeat.yml
创建一个log122目录,用于存放同步的日志文件
mkdir /opt/elk/filebeat/log122
修改filebeat.yml的配置
数据输入配置
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/share/filebeat/log122/*.log
filebeat.config:
modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
processors:
- add_cloud_metadata: ~
- add_docker_metadata: ~
#数据输出到kafka配置
output.kafka:
# initial brokers for reading cluster metadata
hosts: ["192.168.1.120:9091", "192.168.1.120:9092", "192.168.1.120:9093"]
# message topic selection + partitioning
topic: 'log122'
partition.round_robin:
reachable_only: false
required_acks: 1
compression: gzip
max_message_bytes: 1000000
移除我们的临时filebeat容器
docker rm -f elk-filebeat
重启一个新的容器
docker run -d --name=elk-filebeat --restart=always --user=root --privileged=true -v /elk/filebeat:/usr/share/filebeat elastic/filebeat:7.12.0
启动查看日志
docker logs elk-filebeat
修改logstash服务的配置
input{
#方式一:直接通过logback收集日志
tcp{
port => 5044
type => "simplelog"
codec => "json_lines"
}
#方式二:kafka方式
kafka {
type => 'kafka'
bootstrap_servers => "kafka01:9092,kafka02:9092,kafka03:9092"
topics => "test"
group_id => "elk"
}
}
output{
#普通方式
if [type] == 'simplelog'{
elasticsearch {
#es地址
hosts => ["es01:9200","es02:9200","es03:9200"]
#索引
index => "elk-cluster-logstash-01-%{[app]}-%{+YYYY.MM.dd}"
}
}
#kafka方式
if [type] == 'kafka'{
elasticsearch {
#es地址
hosts => ["es01:9200","es02:9200","es03:9200"]
#索引
index => "elk-simplelog-%{+YYYY.MM.dd}"
}
}
}