当前位置: 首页 > 工具软件 > Logspout > 使用案例 >

使用logspout向Logstash发送log

岳锦
2023-12-01

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的用法和机制

 类似资料: