Jenkins 是一个非常流行的开源的 CI/CD 工具。它可以将软件开发相关的构建、测试与部署自动化。
关于 Jenkins 的监控工具有很多很多,有开源的 jenkins 插件和解决方案,也有商业的解决方案。
监控维度,从 服务器 到 jvm 到 job、build、queue、event、plugin 等等。
Jenkins 监控插件以及解决方案清单
关于 jenkins 插件以及解决方案,我整理了一个清单,github 链接如下(欢迎 star 与 pr):
https://github.com/donhui/awesome-jenkins-monitor
个人最喜爱的商业解决方案
在众多商业解决方案中,个人最喜欢的是 Datadog 提供的解决方案。
首先,它的 Dashboard 有很多不同纬度的指标,多种指标能够让人能够全面了解 jenkins 的状态。这些指标有:queue、node status、job build status、job build duration、多种 events(system events、 security events、 build events)等。其中 events 指标让我觉得耳目一新。
其次,它的 Dashboard 排版布局美观,让人看着也很舒服。
最流行的开源解决方案
如果说到开源的解决方案,那么最流行的莫过于 Promotheus Grafana。
安装及配置步骤大概为:
1、Jenkins 上安装 Prometheus 插件,用于暴露指标
2、Prometheus 上增加 target 用于采集指标
3、Grafana 上配置 Dashbord 用于展示指标
前两个步骤大多相同,主要是最后一个步骤,在配置 Dashbord 时,不同的人绘制的不尽相同。
当然,Grafana 上也有一些开发者分享的公开的 Dashbord 可以参考。
正是站在前人的肩膀上,从实际需求出发,我配置出了满足自己需求的 Dashbord。
Dashboard 分成多组(Overview、Executors、Jobs and Builds、Web UI ),截图如下:
Grafana Dashboard 也导出为 json 文件,并放到 GitHub 仓库:
https://github.com/donhui/awesome-jenkins-monitor/tree/main/grafana_dashboards
不可或缺的告警
有了美轮美奂、丰富多彩的 Dashboard 看起来很不错了,但仅仅有它是不够的。
我们希望在 jenkins 服务出问题时及时告警,比如 jenkins master 挂了、jenkins agent 挂了、jenkins job 队列堆积等等。
根据这些问题查找是否有满足需求的指标,然后在 prometheus alertmanager 配置告警规则以及告警渠道。
告警规则示例:
jenkins_queue_size_value>10
jenkins_health_check_score<1
jenkins_node_offline_value>0
总结
关于 jenkins 的监控,本文讲述了商业方案与开源方案,希望对希望对 jenkins 进行监控的你有所帮助。