首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在没有根文件的情况下,将停靠器日志放入文件中

在没有根文件的情况下,将停靠器日志放入文件中
EN

Stack Overflow用户
提问于 2018-12-19 05:38:29
回答 1查看 1.8K关注 0票数 2

我试着从我所有的码头集装箱收集日志,然后把它们发送到麋鹿堆叠中。我想使用file节拍来完成这个任务,所以我采用了类似于https://logz.io/blog/docker-logging/中描述的方法。

我的filebeat.yml

代码语言:javascript
复制
filebeat:
  inputs:
  - paths:
    - /var/jenkins_home/jobs/*/branches/*/builds/*/log
    document_type: jenkinslog
  - type: docker
    containers.ids: '*'
    document_type: docker     
output:
  logstash:
    hosts: ["logstash:5044"]

我的Dockerfile:

代码语言:javascript
复制
FROM docker.elastic.co/beats/filebeat:6.5.2
COPY filebeat.yml /usr/share/filebeat/filebeat.yml
USER root
RUN chown root:filebeat /usr/share/filebeat/filebeat.yml

我命令运行这个映像:

代码语言:javascript
复制
docker run --rm --name filebeat_container --volumes-from jenkins_container:ro -v /var/lib/docker:/var/lib/docker --network=ttydinternproject_default filebeatimage

我正在将/var/lib/docker文件夹挂载为卷,并且必须是根用户才能访问它,根据这个https://github.com/hashicorp/vagrant/issues/6822#issuecomment-169826764,"/var/lib/docker是用于docker守护进程的,而不是其他任何人“。

肯定有一种更好的方法来让docker容器日志进入file节拍,而不是让filebeat容器运行根用户访问文件夹,显然不应该被访问。是否需要从默认的码头日志记录驱动程序切换到支持的其他驱动程序之一?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-19 11:17:43

您可以重新配置Jenkins容器,以便将其日志文件发布到主机目录(使用docker run -v/var/jenkins_home/jobs树提供一些主机目录;这可能是一个好主意,因为如果您需要更新基本的Jenkins代码,则不希望丢失所有作业历史记录)。然后,您可以使用docker run -v将相同的目录注入File节拍容器,也可以直接在主机上运行File节拍(如果其主要任务是读取主机系统文件.)。

如果您有此选项,并且处于更高效的设置中,则切换日志驱动程序以指向您的logstash也是一个好主意,但这只会收集主进程的stdout和stderr (而不必运行docker logs,数据将显示在您的中央日志服务器上)。但这不会收集佩尔詹金斯的工作日志文件。

我的经验与您引用的Vagrant一致:不要查看/var/lib/docker内部,尤其不要试图将Docker的内部状态安装到Docker容器中。(您可能不会感到内核恐慌。)

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

https://stackoverflow.com/questions/53845180

复制
相关文章

相似问题

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