我 有 一 个 kubernetes 集群 , 其中 安装 并 运行 了 jenkins 和 spinnaker pod 。 我 需要 实现 一 个 日志 记录 机制 来 收集 日志 并 将 其 发送 到 splunk 服务 器 。 我 选择 使用 fluentd 来 完成 此 操作 。 我 * * 部署 了 一 个 fluentd 守护 程序 集 * * , 以 在 每个 节点 上 运行 , 并 从 每个 节点 收集 日志 并 将 其 发送 到 splunk 服务 器 。
对于 我们 看到 的 使用 " kubectl 日志 " 的 日志 或 进入 stdout 的 日志 , 它 工作 正常 。 但是 , 我 需要 * * 从 jenkins 作业 中 选择 日志 * *( jenkins 作业 构建 的 控制 台 输出 ) 。 这些 日志 不会 从 节点 输出 ,并 存储 在 * */var/jenkins _ home/jobs/XXX/builds/〈 buildno * * 〉 中 的 容器 存储 中 , 该 容器 存储 * * 不可 直接 访问 * *以 进行 日志 收集 。
我 愿意 接受 任何 解决 这个 问题 的 方法 。 请 提出 建议 。
3条答案
按热度按时间8wtpewkr1#
Fluentd在kubernetes的情况下没有任何类似的功能,因为kubernetes不允许直接访问任何第三方插件来读取容器中的数据。对于STDOUT日志,也首先由kubernetes处理并保存在节点级别。之后您将能够看到。
作为一种解决办法,您可以按照以下链接。
Kubernetes - How to read logs that are written to files in pods instead of stdout/stderr?
u4vypkhs2#
道长道:
1.将
hostpath
目录卷添加到Jenkins部署:https://kubernetes.io/docs/concepts/storage/volumes/#hostpath1.运行单独的FluentBit/Fluentd从该目录收集日志。它们都支持将路径放在日志的专用字段或标记中:https://docs.fluentbit.io/manual/pipeline/inputs/tail
1.使用path/tag解析出作业名称并相应地组织目标存储。或者仅保留原样并在视图上进行筛选。
**捷径:**使用jenkins kubernetes插件将每个作业作为单独的单元运行:https://plugins.jenkins.io/kubernetes/。然后,它将被一个daemonset单独收集和标记。
bihw5rsg3#
关于 Cloud Native Jenkins 日志 管理
参考 : https://www.jenkins.io/sigs/cloud-native/pluggable-storage/