如何在一个地方聚合来自多个 Jenkins Jobs\Pipelines 的日志?

How to aggregate logs from several Jenkins Jobs\Pipelines in one place?

我们的项目负责将数据从一个系统迁移到另一个系统。我们将使用 Jenkins 运行 转换、验证和迁移脚本。

我不清楚如何在 Jenkins 中聚合来自多个作业或管道的日志。怎么做到的?

我们将严重依赖日志来识别在验证等过程中发现的任何问题。

就我们计划的设置而言,我们将拥有 AWS EC2 实例 + 我们可以使用 Datadog(我们公司使用它)。我们可以为此目的使用 Datadog 吗?

您可以参考 this doc 以查找 Jenkins 的默认日志记录路径,具体取决于您的 OS。 (对于 linux,如果您不将其配置为其他内容,则为 /var/log/jenkins/jenkins.log

那么只要你Datadog agent is v6+ you can use the Datadog agent to tail your jenkins.log file by following this doc

具体来说,您需要将此行添加到 dadatod.yaml:

logs_enabled: true

并将此内容添加到嵌套在 conf.d/ 目录中的任何旧 conf.yaml 文件中,例如 conf.d/jenkins.d/conf.yaml:

logs:
  - type: file
    path: /var/log/jenkins/jenkins.log
    service: jenkins
    source: jenkins

然后代理将跟踪您的日志文件,因为它被写入,并将其转发到您的 Datadog 帐户,以便您可以在那里查询、绘制和监控您的日志数据。

收到日志后,您可能想编写一个 processing pipeline 来解析关键属性,但对于一个新问题,这将是 material :)。