Docker快速部署ELK并采集docker日志(快速简单,方便宝子们学习ELK)
·
使用sebp/elk部署
sebp/elk官网
https://elk-docker.readthedocs.io/
拉取镜像
docker pull sebp/elk:8.17.6
启动容器
- 创建网桥
创建elknet的目的,是为了方便后面filebeat的访问,filebeat访问可以直接使用
docker network create -d bridge elknet
- 创建数据卷
docker volume create kibana_volume
docker volume create es_volume
docker volume create logstash_volume1
docker volume create logstash_volume2
- 启动容器
docker run -d -p 5601:5601 -p 5044:5044 -p 9200:9200 -p 9300:9300 \
--network=elknet \
-v kibana_volume:/opt/kibana/config/ \
-v es_volume:/opt/elasticsearch/config \
-v logstash_volume1:/opt/logstash/config \
-v logstash_volume2:/etc/logstash/conf.d/ \
--restart=always --name elk sebp/elk:8.17.6
配置logstash(关闭SSL认证)
cat>/var/lib/docker/volumes/logstash_volume2/_data/02-beats-input.conf<<'EOF'
input {
beats {
port => 5044
}
}
EOF
配置kibana(开启中文化)
sed -i '$a i18n.locale: "zh-CN"' /var/lib/docker/volumes/kibana_volume/_data/kibana.yml
重启ELK
docker restart elk
filebeat部署(采集docker日志)
部署filebeat
- 创建数据卷
docker volume create filebeat_vloume
- 启动容器
docker run -d \
--name filebeat \
--user=root \
--network=elknet \
--restart=always \
-v filebeat_vloume:/usr/share/filebeat \
-v /var/lib/docker/containers:/var/lib/docker/containers \
--volume="/var/run/docker.sock:/var/run/docker.sock:ro" \
docker.elastic.co/beats/filebeat:8.17.6 \
filebeat -e --strict.perms=false -c filebeat.yml
更改filebeat配置
cat>/var/lib/docker/volumes/filebeat_vloume/_data/filebeat.yml<<'EOF'
filebeat.inputs:
- type: filestream
id: my-filestream-id
paths:
- '/var/lib/docker/containers/*/*.log'
prospector.scanner.fingerprint:
enabled: true
offset: 0
length: 64
output:
logstash:
enabled: true
hosts:
- elk:5044
timeout: 2
EOF
这里提供另一种input设置,各位替换即可
filebeat.inputs:
- type: filestream
id: my-filestream-id
paths:
- '/var/lib/docker/containers/*/*.log'
prospector.scanner.fingerprint:
enabled: true
offset: 0
length: 64
parsers:
- container:
stream: all
重启filebeat
docker restart filebeat
docker ps -a
docker logs -f filebeat
验证
虚拟机IP:5601登录kibana创建视图





更多推荐
所有评论(0)