热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用logspout向Logstash发送log

logspout收集docker宿主机上所有运行的容器的log,并将其路由到log收集系统使用场景:在Docker宿主机上运行logspout容器,然后将log路由到ELK的Logstas

logspout 收集docker宿主机上所有运行的容器的log,并将其路由到log收集系统
使用场景:在Docker宿主机上运行logspout容器,然后将log路由到ELK的Logstash,Logstash在整理log并将其发送给ES

使用的命令:

docker run -d --name=logspout  --env DEBUG=1 --publish=127.0.0.1:8000:80 --volume=/var/run/docker.sock:/var/run/docker.sock gliderlabs/logspout syslog+udp://192.168.56.101:55555

docker run -d --name logstash -p 55555:55555/udp 55555:55555/tcp logstash

发现问题:在同一台机器上运行上述两个容器的时候发现 logspout始终无法连接 Logstash
ping可以ping通,但是始终无法连接

问题原因: Logstash使用iptables的port转发来接收所有发送给55555的数据包,但是这个iptable是宿主机的配置,这时在 logspout容器内是无法直接访问 宿主机IP:55555 的。

问题解决:参考docker的–link 参数,将两个容器连接起来,将被连接的容器的IP加入到连接容器的host中这个特性,将启动 logspout的命令转换为如下问题就完美解决了。

docker run -d --name=logspout --link logstash --env DEBUG=1 --publish=127.0.0.1:8000:80 --volume=/var/run/docker.sock:/var/run/docker.sock gliderlabs/logspout syslog+udp://logstash:55555

收获:更加深入的理解了–link的用法和机制


推荐阅读
author-avatar
nnyoyo8
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有