【问题标题】:Configure fluentd to pick Jenkins job/application logs in a kubernetes cluster配置 fluentd 以在 kubernetes 集群中选择 Jenkins 作业/应用程序日志
【发布时间】:2020-08-31 14:32:48
【问题描述】:

我有一个 kubernetes 集群,其中 jenkins 和 spinnaker pod 启动并运行。我需要实现一个日志机制,收集日志并将其发送到 splunk 服务器。我选择使用流利的。我已经部署了一组 fluentd 的守护进程在每个节点上运行并从每个节点收集日志并发送到 splunk 服务器。

对于我们使用“kubectl 日志”看到的日志或来自标准输出的日志,它工作正常。但是,我需要从 jenkins 作业中挑选日志(jenkins 作业构建的控制台输出)。这些日志不会从节点输出到 std,而是存储在 /var/jenkins_home/jobs/XXX/builds/> 的容器存储中,不能直接访问 流利地进行日志收集。

我愿意为这个问题提供任何解决方案。请提出建议。

【问题讨论】:

    标签: jenkins logging kubernetes splunk fluentd


    【解决方案1】:

    对于 kubernetes,Fluentd 没有任何类似的功能,因为 kubernetes 不允许直接访问任何第三方插件以从容器中读取数据。对于 STDOUT 日志也首先由 kubernetes 处理并保存在节点级别。之后你就可以看到了。

    作为一种解决方法,您可以点击以下链接。

    Kubernetes - How to read logs that are written to files in pods instead of stdout/stderr?

    【讨论】:

      【解决方案2】:

      漫长的路:

      1. hostpath 目录卷添加到jenkins 部署: https://kubernetes.io/docs/concepts/storage/volumes/#hostpath
      2. 运行单独的 FluentBit/Fluentd 以从该目录收集日志。 它们都支持将路径放在日志中的专用字段或标签中: https://docs.fluentbit.io/manual/pipeline/inputs/tail
      3. 使用路径/标签解析出作业名称并相应地组织目标存储。或者保持原样并过滤视图。

      捷径: 使用 jenkins kubernetes 插件将每个作业作为单独的 pod 运行: https://plugins.jenkins.io/kubernetes/。 然后它将被一个守护进程单独收集和标记。

      【讨论】:

        猜你喜欢
        • 2021-02-02
        • 2021-07-16
        • 1970-01-01
        • 2018-10-10
        • 2017-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多