Docker compose提取了两个图像,一个应用程序和fluentd,但没有将fluentd的日志发送到stdout
我是新的fluentd,我使用了两张docker图片,一张是fluentd,另一张是我的webapp。webapp正在创建日志,fluentd正在侦听具有in_forward类型的端口,但日志未发送到stdout Docker-compose.yml文件Docker compose提取了两个图像,一个应用程序和fluentd,但没有将fluentd的日志发送到stdout,docker,go,docker-compose,fluentd,Docker,Go,Docker Compose,Fluentd,我是新的fluentd,我使用了两张docker图片,一张是fluentd,另一张是我的webapp。webapp正在创建日志,fluentd正在侦听具有in_forward类型的端口,但日志未发送到stdout Docker-compose.yml文件 dataporter: image: <app-docker> command: <associated command> ports: - 80:8080 links:
dataporter:
image: <app-docker>
command: <associated command>
ports:
- 80:8080
links:
- fluentd
logging:
driver: "fluentd"
options:
fluentd-address: :24224
tag: data-porter
fluentd:
image: <fluentd-docker>
volumes:
- ./fluentd.conf:/fluentd/etc/fluent.conf
ports:
- "24224:24224"
dataporter:
图片:
命令:
端口:
- 80:8080
链接:
-弗伦特
登录中:
司机:“fluentd”
选项:
fluentd地址::24224
标签:数据搬运工
fluentd:
图片:
卷数:
-./fluentd.conf:/fluentd/etc/fluent.conf
端口:
- "24224:24224"
fluentd.conf文件
<source>
@type forward
port 24224
bind "0.0.0.0"
</source>
<match **>
@type stdout
</match>
@打字前进
端口24224
绑定“0.0.0.0”
@类型标准输出
我的应用程序在golang,我把一些简单的日志语句放在这个包中
import log“github.com/sirupsen/logrus”
,因此我的简单日志语句是log.Info(“Infof print”)
但除了初始启动语句外,fluentd docker容器日志中没有显示新日志。fluentd映像没有看到日志的原因是data porter映像需要fluentd来完成其设置,因此尽管data porter容器正在运行,但无法正确连接到fluentd容器。总之,任何需要连接到fluentd的容器都需要等待fluentd完成设置。
为了解决这个问题,我使用了一个脚本来停止依赖fluentd的容器并启动它进行备份。将容器\u名称:
添加到docker-compose.yml文件中,以获取脚本的服务帮助
docker-compose up -d
sleep(3)
docker stop <container-name-relying-on-fluentd>
docker-compose up -d
docker compose up-d
睡眠(3)
码头停靠站
docker compose up-d
fluentd映像没有看到日志的原因是data porter映像需要fluentd来完成设置,因此尽管data porter容器正在运行,但无法正确连接到fluentd容器。总之,任何需要连接到fluentd的容器都需要等待fluentd完成设置。
为了解决这个问题,我使用了一个脚本来停止依赖fluentd的容器并启动它进行备份。将容器\u名称:
添加到docker-compose.yml文件中,以获取脚本的服务帮助
docker-compose up -d
sleep(3)
docker stop <container-name-relying-on-fluentd>
docker-compose up -d
docker compose up-d
睡眠(3)
码头停靠站
docker compose up-d
我创建了一个最小的设置来尝试复制它——一个go应用程序在一个容器中使用logrus,在另一个容器中使用fluentd——并且毫无问题地获得了日志输出。请阅读有关如何创建一个显示您的问题并更新您的问题的信息。我在这里找到了问题。即使使用也依赖于或链接
,dataporter
容器也不会等待fluentd
完成运行。只需停止dataporter
container并重新组合docker映像即可修复它。我不确定我是应该删除这个问题还是让其他人看。如果有人可以回复此评论,将其保留或删除,那就太好了。如果您打算保留此评论,我建议您创建一个包含有关问题和解决方案的更多详细信息的答案,并将其标记为已接受,因此,其他人可以更容易地看到答案是否与他们相关。我创建了一个最小的设置来尝试复制它-一个go应用程序,在一个容器中使用logrus,在另一个容器中使用fluentd-并毫无问题地获得日志输出。请阅读有关如何创建一个显示您的问题并更新您的问题的信息。我在这里找到了问题。即使使用也依赖于或链接
,dataporter
容器也不会等待fluentd
完成运行。只需停止dataporter
container并重新组合docker映像即可修复它。我不确定我是应该删除这个问题还是让其他人看。如果有人可以回复此评论,将其保留或删除,那就太好了。如果您打算保留此评论,我建议您创建一个包含有关问题和解决方案的更多详细信息的答案,并将其标记为已接受,以便其他人可以更容易地看到答案是否与他们相关。