配置fluentd以在kubernetes集群中选择Jenkins作业/应用程序日志

时间:2020-08-31 14:32:48

标签: jenkins logging kubernetes splunk fluentd

我有一个kubernetes集群,其中有jenkins和大三角帆吊舱正在运行。我需要实现一种日志记录机制,该机制可以收集日志并将日志发送到splunk服务器。我选择使用fluentd。我已经部署了一套流利的守护程序,以便在每个节点上运行并从每个节点收集日志并发送到splunk服务器。

对于我们使用“ kubectl日志”看到的日志或进入stdout的日志,它运行良好。但是,我需要从詹金斯工作中拾取日志(詹金斯工作构建的控制台输出)。这些日志不会从节点输出到std,而是存储在不可直接访问的容器存储内的 / var / jenkins_home / jobs / XXX / builds / >中。 / strong>流利的日志收集。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

很长距离:

  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/。 然后它将由守护程序分别收集和标记。