技术

十步轻松部署ELK收集Docker容器日志

December 12, 2018

架构图:
tu.png
简述:Filebeat安装在各个跑Docker的服务器中,对接Elasticsearch和Logstash
本文中系统为:Centos7.5,跑ELK的服务器配置为4核8G内存 实验中吃了3.05G内存
第一步,安装docker

参考:http://docs.xiz.im/700399

第二步,获取ELK images

docker pull sebp/elk

第三步,修改内存配置

sysctl -w vm.max_map_count=262144
vi /etc/sysctl.conf
#在尾部添加
vm.max_map_count=262144

第四步,允许IPV4转发

vim  /usr/lib/sysctl.d/00-system.conf
#在最下面添加
net.ipv4.ip_forward=1
#重启网络服务
systemctl restart network

第五步,运行容器

docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it  --log-opt max-size=500m --log-opt max-file=1 --restart=always  --name elk sebp/elk
#参数:开放5601、9200、5044端口,限制容器日志大小为500MB最多一个日志文件,随着Docker启动

第六步,进入容器 修改Logstash

docker exec it elk bash
vi /etc/logstash/conf.d/02-beats-input.conf
#删除关于SSL的配置信息,一共3条

第七步,到需要收集日志的服务器上安装「Filebeat」

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.5.1-x86_64.rpm
rpm -vi filebeat-6.5.1-x86_64.rpm

第八步,编辑Filebeat的配置

vi /etc/filebeat/filebeat.yml
#24行,修改为true
enabled: true
#28行,修改为
- /var/lib/docker/containers/*/*-json.log
#128行,修改为如下配置,elk是域名 建议使用域名方式
host: "elk:5601"

在148行中的elasticsearch配置修改成如下,elk是域名 建议使用域名方式
tu2.png

第九步,启用并配置elasticsearch模块

filebeat modules enable elasticsearch
filebeat setup
service filebeat start
systemctl enable filebeat

第十步,在kibana中建立索引
「management」>「Index Patterns」
tu3.png

我弄了一个nginx的容器来测试日志传输,最后实验成果了,效果如下图
tu4.png

拓展
1.定期清除收集的日志,如7天清理一次

#设立定时任务
crontab -e
0 1 */7 * * sh~/clean.sh
#创建一个sh脚本
vi clean.sh
time=`date +%Y.%m.%d -d "7 days ago"`
echo $shijian
curl -XDELETE "http://10.140.10.51:9200/filebeat-6.5.1-${time}"

添加新评论