docker 日志收集

一、环境准备

sysctl vm.max_map_count=262144 
docker pull sebp/elk

二、运行ELK容器

docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --rm --name elk sebp/elk
#容器启动后执行下面地址验证es是否启动成功
http://192.168.1.xx:9200/_search?pretty

 

三、安装fluentd软件(与elk容器安装同一台机)

docker pull fluent/fluentd       #拉取软件
mkdir /fluentd_log     #创建一个收集日志后保存的路径

docker run -d -p 24224:24224 -p 24224:24224/udp -v /fluentd_log:/fluentd/log fluent/fluentd

 

四、安装日志收集工具filebeat (与elk容器安装同一台机)#

https://artifacts.elastic.co/downloads/beats/filebeat/filebeat
rpm -ivh filebeat-6.x.x-x86_l4.rpm
#安装RPM包后,修改以下配置项
vim /etc/filebeat/filebeat.yml

enabled:true  #开启
paths:
    - /var/log/*.log  #注释掉这行日志目录
    - /data/docker/containers/*/*.log   #注释,此目录为容器ID
    - /fluentd_log     #添加这行
output.elasticsearch:
hosts:["192.168.1.xx:9200"]       #改成ES地址

/etc/init.d/filebeat start     #启动 filebeat

/etc/init.d/filebeat status        #查看 filebeat 状态

五、修改docker日志驱动,发送日志到fluentd软件

(要收集日志的 主机修改此文件)

vim /etc/docker/daemon.json

{
    "log-driver":“fluent”,
    "log-opts":{
        "fluentd-address":"192.168.1.xx:24224",
        "tag":"linux-node4.xx.com"   #标识,改成自己主机名
        }
}

systemctl daemon-reload       #重载配置
systemctl restart docker        #记得关闭防火墙,selinux之类的。

六、容器时间同步方法

docker cp /usr/share/zoneinfo/Asia d2kldds23:/usr/share/zoneinfo/Asia
docker exec d2kldds23 mkdir /usr/share/zoneinfo -p
docker cp /usr/share/zoneinfo/Asia d2kldds23:/usr/share/zoneinfo/Asia
docker restart d2kldds23