首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在nginx容器中启动syslogd

如何在nginx容器中启动syslogd
EN

Stack Overflow用户
提问于 2020-04-01 23:13:59
回答 1查看 644关注 0票数 0

我使用Nginx docker容器作为应用程序的基础镜像。我正在将Nginx日志重定向到syslog,但我不确定启动busybox syslogd的最佳方法是什么。如果我手动启动它,它都可以工作,我只需要它在容器运行时自动作为守护程序运行。

看到nginxinit.d中,我在我的Dockerfile文件中尝试了以下内容:

RUN ln -s /bin/busybox syslogd /etc/init.d/syslogd || :

但是syslogd仍然没有在启动时运行。因为documentation说只允许一个[CMD],所以我有以下技巧:

代码语言:javascript
复制
FROM nginx:mainline-alpine
CMD nginx & busybox syslogd -n

这至少在本地是有效的,但我想知道什么是正确的解决方案。默认情况下,容器已经将日志文件符号链接到stdoutstderr,但我不想使用docker的syslog日志记录驱动程序,因为应用程序将被部署到Kubernetes,所以我需要一个独立的解决方案,它将在pod中工作。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-02 07:36:19

将您的容器日志记录到stdout,但在其他地方收集日志。

一种选择是将Docker本身配置为send container logs to syslog

代码语言:javascript
复制
docker run --log-driver=syslog --log-opt syslog-address=udp://... ... nginx

由于Docker守护进程本身正在配置,因此syslog-address必须是可以从主机访问的内容。如果您在单独的容器中运行syslogd,则此选项需要指向已发布的端口。

另一种选择是使用标准的Docker JSON格式的日志记录,但使用另一个工具将日志转发到其他地方。这有一个缺点,那就是需要一个额外的工具,但docker logs的优点是不需要修改。Fluentd是一个重要的开源选择。(Logstash是另一个,但似乎没有直接集成Docker。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60974267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档