我想要实现的是使用graylog2(我目前正在使用旧版本,全部合一)将python打印从一个docker容器重定向到另一个docker容器(无需对python代码进行任何修改)。
因此,我的第一个 docker 实例包含 graylog 服务器。我使用 Ubuntu 通过 Dockerfile 创建了第二个实例,并包含了打印当前时间的简单脚本:
from datetime import datetime
import time
date = datetime.now()
print(str(date.day) + '/' + str(date.month) + '/' + str(date.year))
while True:
date = datetime.now()
print(str(date.hour) + ':' + str(date.minute) + ':' + str(date.second))
time.sleep(1)
我正在使用下面的命令来启动graylog
docker run -t -p 9000:9000 -p 12201:12201 graylog2/allinone
并启动第二个容器并运行我的脚本:
docker run --log-driver=gelf --log-opt gelf-address=udp://0.0.0.0:12201 test python -i ../test.py
我正在尝试将我的日志发送到 GELF UDP,不确定这是否是正确的方法,因为无论我选择哪个地址/端口,都没有任何日志。目前我甚至无法从 bash 记录简单的回显,但我不确定问题本身在哪里。
我的‘输入’概述:
答案1
所以我终于让它工作了。我的问题是我没有指定要使用哪个端口 udp 协议 - 在本例中是 12201。要解决这个问题,您需要像这样启动它:
docker run -t -p 9000:9000 -p 12201:12201/udp graylog2/allinone