1. 查看容器log插件
Docker有很多日志插件,默认使用json-file。只有使用json-file格式的时候,docker logs -f 才可以显示实时日志。
查看docker默认的日志插件
1 | docker info | grep 'Logging Driver' |
当容器运行时,docker会在宿主机上创建一个该容器相关的文件,然后将容器产生的日志转存到该文件下。docker logs -f 命令就会找到该文件内容并显示在终端上
2. 启用syslog服务
默认,Linux 操作系统已经安装了 Syslog 软件包,但它叫 Rsyslog。无需单独安装
1 | rsyslogd -v |
如果要开启 Rsyslog 服务,我们必须对 Rsyslog 进行配置
vim /etc/rsyslog.conf
1 | 启用服务器端口监听 |
1 | mkdir -p /var/log/syslog |
3. 为容器配置log插件
默认支持的log插件:参考
在启动容器时,可以使用 –log-driver 参数指定不同的日志插件,并使用 –log-opt参数进行响应设置。
下面是一个指定 Logging Driver 为 syslog 并传送到 logstash 的例子
1 | docker run \ |
注释:
- –log-driver 指定日志插件为syslog
- –log-opt syslog-address 指定把日志发送到的syslog服务器地址
- –log-opt syslog-facility 指定要使用的syslog工具
4. 收集容器应用log
在收集之前,可以先确认系统/var/log/message中是否已经有了docker中的trojan日志
1 | [root@test supervisord.d]# tail -f /var/log/syslog/127.0.0.1-23357beeb213.log |
既然文件都已经存储到系统文件了,索性logstash input直接使用file模块好了,就不用syslog了。如下:
logstash配置
1 | input { |
1 | 测试语法正确性 |
重启logstash
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2019/12/03/Docker容器应用的LOG日志收集/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!