这两天在运维群里面看到有人说 Jenkins 节点也可以监控,以前没想过搞这个,现在就对公司 Jenkins 搞搞顺便记录下呗。

一、使用 Jenkins Prometheus 插件(推荐方式)

1. 安装插件

在 Jenkins 插件管理里搜索并安装 Prometheus Metrics Plugin

2. 启用指标导出

插件安装后,Jenkins 会自动暴露一个 /prometheus 的 HTTP endpoint,例如:

http://<jenkins_host>:8080/prometheus

这里包含了 Job、构建、节点(Agent) 等相关指标。

3. 节点状态指标示例

插件会提供类似的指标:

default_jenkins_nodes_online{node="agent1"} 1
default_jenkins_nodes_online{node="agent2"} 0

其中:

  • 1 表示在线
  • 0 表示离线

也可以在 Prometheus 中直接编写告警规则,例如:

- alert: JenkinsNodeOfflineexpr: default_jenkins_nodes_online == 0for: 2mlabels:severity: warningannotations:summary: "Jenkins 节点离线"description: "Jenkins 节点 {{ $labels.node }} 已离线超过 2 分钟"

二、Jenkins 监控常见用途及原理

常见用途

这里说下普罗米修斯监控 Jenkins 的话一般做些什么。

  1. 节点健康监控

    • 发现某个 Agent 掉线及时告警
    • 判断节点是否长期闲置,辅助缩容
  2. 任务执行监控

    • 构建成功率统计(CI 健康度)
    • 构建耗时分析(定位瓶颈)
    • 失败趋势分析(发现不稳定测试或问题代码)
  3. 资源使用监控

    • 队列长度、Executor 使用情况
    • 帮助判断是否需要扩容构建资源

原理

一般普罗米修斯监控都是靠 Exporter 去定规则监控,这里简单讲下 Node ExporterJenkins Prometheus 的原理与区别。

1. Node Exporter 的原理

  • 实现方式:独立进程(Go 编写)
  • 采集数据:通过 /proc/sys 读取主机指标,例如 CPU、内存、磁盘、网络
  • 暴露方式:HTTP 服务(默认 :9100/metrics
  • 特点:与应用解耦,只关注系统层面

2. Jenkins Prometheus 插件的原理

  • 实现方式:Jenkins 插件,运行在 JVM 内部

  • 采集数据:调用 Jenkins 内部对象模型(Java API),如:

    • Computer → 节点信息
    • Run → Job 构建状态
    • Queue → 任务队列
  • 暴露方式http://<jenkins>:8080/prometheus

  • 特点:强依赖 Jenkins,只能监控 CI/CD 业务指标

3. 本质区别

对比点Node ExporterJenkins Prometheus 插件
运行位置宿主机/容器,独立进程Jenkins JVM 内部
采集来源Linux 内核接口(/proc)Jenkins 内部 Java API/对象模型
采集对象操作系统层面资源应用级别 CI/CD 指标
暴露方式HTTP :9100/metricsJenkins /prometheus 路径
依赖关系与应用解耦,独立运行依赖 Jenkins,本身不可独立使用

总结一句话:

  • Node Exporter 监控机器
  • Jenkins Prometheus 插件监控流水线

三、Prometheus 抓取 Jenkins 数据

在 Prometheus 配置文件 prometheus.yaml 中加入:

- job_name: 'jenkins'scrape_interval: 5mscrape_timeout: 3mstatic_configs:- targets:- jenkins.example.commetrics_path: /prometheus

如果在 Kubernetes 容器内访问:

- job_name: 'jenkins'scrape_interval: 5mscrape_timeout: 3mstatic_configs:- targets:- jenkins.jenkins.svc.cluster.local:8080metrics_path: /prometheus

说明:

  • metrics_path:Prometheus 抓取的路径(不填默认对应 /metrics,上方对应:http://jenkins.example.com/prometheus
  • targets:目标主机+端口。K8s 里用 服务名.命名空间.svc.cluster.local:端口 格式

配置完成后,重启 Prometheus 即可在 Prometheus UI 里看到 Jenkins 指标(可能等1-2分钟)。


四、Grafana 面板展示及报警配置

实际上,我也没监控 Jenkins 任务、资源的需求,这里就监控下 Jenkins 节点在线情况就好了。

首先确认 default_jenkins_nodes_online 是节点在线状态,抓取到的信息是这样的:

default_jenkins_nodes_online{node="aa",} 1.0
default_jenkins_nodes_online{node="bb",} 1.0
default_jenkins_nodes_online{node="cc",} 0.0
...

面板展示

先 New Dashboard,再 Add visualization。

1. Table Panel 配置

  1. 在 Grafana 下新建的 Panel,选择 Table 视图(默认是 Time series
  2. 在 Query Options 下,Format 设置为 Table(而非 Time series),Type 设置为 Instant(即时)

2. 处理重复数据

然后发现同一节点出现多行,可以在 Prometheus 查询里使用聚合函数,例如:

max by (node) (default_jenkins_nodes_online)

这样每个节点只保留一行最新状态。

出现多行是因为指标被采集多次,或者 Grafana 默认把 每个时间点都作为一行。

3. 表格美化

  • Transform - Organize fields → 删除不需要的列,修改列名

  • 右侧列 - Add field override → 按列名设置阈值颜色(设Cell options > Cell type 为 Colored text,添加 Thresholds > Thresholds)

    • 1 设 绿色
    • 1.001/0.999/Base 设 红色
  • 排序 → 点击表格列名,按状态递增排列,离线节点置顶

  • 列宽度(Colored text) → 调整为合适宽度,避免过长

然后点保存,这样就完成了对 Jenkins 节点的视图面板了。

⚠ 注意:Dashboard 名称和 Panel 名称不要完全相同,否则会报错。

报警配置

在 Alert rules 里 Create alert rule

  • 输入 Rule name
  • 查询语句处(A)选择 prometheus 类型并输入:
    count(max by (node) (default_jenkins_nodes_online)) 
    
  • sum(max by (node) (default_jenkins_nodes_online))

    >即 A 代表了查询的值,这里用节点总数的和减去返回值的和(节点正常返回1),只要 ≠ 0,就是有异常Options -> Format 选择 Table
    
  • Add expression 选择 Classic_conditions
    WHEN last() OF A IS OUTSIDE RANGE -0.999 TO 0.001

    限制 A 的值大于或小于 0 就报警

  • 最后选择 Folder、Evaluation group,保存

这样就完成了 Jenkins 节点离线异常报警了。

注意事项

default_jenkins_nodes_online 这个指标只有两种状态:

  • 1 → 节点在线
  • 0 → 节点离线

需要注意的是:
如果你是 手动将节点下线,这个指标同样会变为 0,并不会区分是手动下线还是节点故障。因此:

  • 如果直接以 jenkins_nodes_online 状态不等于 1 作为告警条件,手动下线的节点也会触发告警。
  • 插件本身没有额外的参数能标识“手动下线”。

解决思路:

  1. 调用 Jenkins API → 可以进一步判断某个节点是否被手动禁用,再结合 Prometheus 告警规则做过滤。

  2. 配置告警排除规则 → 如果节点较少,可以在告警规则里直接排除某些手动下线的节点,例如:

    jenkins_node_online{node!="手动下线的节点"}
    

对于节点规模不大、手动下线很少的场景,这样写一行过滤规则就能解决。


总结

  • Jenkins Prometheus 插件:轻量、无侵入,快速导出 Jenkins 的业务指标
  • Prometheus:集中采集
  • Grafana:可视化 + 报表 + 告警

在我本篇博文的基础上,稍微参照一下其他的 Jenkins/prometheus 抓取信息说明,很容易就可以实现从 节点状态任务健康度队列资源 的全方位对 Jenkins 监控了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/921581.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921581.shtml
英文地址,请注明出处:http://en.pswp.cn/news/921581.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用博图FB类比c#中sdk的api

我有一个大胆的想法我准备自己做个简单的视觉软件来锻炼自己的c#编程能力&#xff0c;我准备用到海康工业机器人官网下载的mvs软件的sdk,听说sdk的主要作用就是api提供了开放的接口给第三方免费调用。按照我的理解&#xff0c;api接口就像西门子博图的FB块&#xff0c;所谓api接…

【Leetcode】高频SQL基础题--1164.指定日期的产品价格

【Leetcode】高频SQL基础题–1164.指定日期的产品价格 要求&#xff1a;一开始&#xff0c;所有产品价格都为 10。编写一个解决方案&#xff0c;找出在 2019-08-16 所有产品的价格。 以 任意顺序 返回结果表。解题思路&#xff1a; 找到 2019-08-16 前所有有改动的产品及其最新…

Django全局异常处理全攻略

在 Django 中处理全局异常&#xff0c;有几种常见的方式&#xff0c;通常目标是&#xff1a; 捕获项目中未被单独处理的错误统一返回给前端&#xff08;如 JSON 响应 / 自定义错误页&#xff09;方便记录日志1. 使用 Django 自带的全局异常处理机制 Django 有一些内置的全局错误…

【开题答辩全过程】以电商数据可视化系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

MyBatis入门到精通:CRUD实战指南

1. MyBatisORM&#xff1a;对象关系映射O&#xff08;Object&#xff09;&#xff1a;Java虚拟机中的Java对象R&#xff08;Relational&#xff09;&#xff1a;关系型数据库M&#xff08;Mapping&#xff09;&#xff1a;将Java虚拟机中的Java对象映射到数据库表中一行记录&am…

WebRTC开启实时通信新时代

摘要&#xff1a;WebRTC&#xff08;Web实时通信&#xff09;是一项开源技术&#xff0c;支持浏览器直接进行低延迟音视频通信和数据传输&#xff0c;无需安装插件。其核心技术包括RTCPeerConnection&#xff08;建立点对点连接&#xff09;、MediaStream&#xff08;媒体流处理…

【51单片机8*8点阵显示箭头动画详细注释】2022-12-1

缘由51单片机实现8*8滚动箭头的程序,运行时什么图案都没有,甚至根本不亮 - 24小时必答区 #include<reg52.h> unsigned char code M[]{0xff,0xff,0xfe,0xfd,0xf8,0xfd,0xfe,0xff,0xff,0xff,0xfd,0xfb,0xf0,0xfb,0xfd,0xff,0xff,0xff,0xfb,0xf7,0xe0,0xf7,0xfb,0xff,0xff,0…

手撕Redis底层3-持久化机制与集群化方案

1.Redis持久化机制Redis设计了两种持久化落盘机制&#xff1a;RDB和AOF1.1 RDB持久化RDB持久化是Redis的数据快照&#xff0c;简单来说就是把内存中的所有数据都记录到磁盘中&#xff0c;当Redis实例故障重启后&#xff0c;从磁盘中读取快照文件来恢复数据。快照文件称为RDB文件…

mysql中null值对in子查询的影响

1、场景 有这样一个查询&#xff0c;有些时候是正确的&#xff0c;有些时候没报错但是又查询不到数据&#xff0c;分析数据排查后发现当user_id字段存在null值的时候查询不到数据。select * from table1 where id in (select user_id from talbe2 where status1);2、问题 为什么…

如何在 tortoise-orm 内使用 JSON_EXTRACT

先说结论&#xff1a; # 假设 JsonField 名称为 data&#xff0c;内容为 {"info": {"path": "我的资源创建"}} qs qs.filter(data__filter{"info.path": "我的资源创建"})我查看了 tortoise-orm 官方文档&#xff0c;没有这…

西门子S7-200 SMART PLC:编写最基础的“起保停”程序

一、什么是“起保停”电路&#xff1f;“起保停”是“启动-保持-停止”的简称&#xff0c;也称为“自锁电路”。它是继电器控制系统和PLC程序中最基本、最核心的控制逻辑。启动 (Start): 由一个点动按钮&#xff08;常开触点&#xff09;触发&#xff0c;使设备运行。保持 (H…

漏洞修复 Nginx SSL/TLS 弱密码套件

扫描结果 [rootlocalhost nmap]# docker run --rm -v $(pwd)/results:/results securecodebox/nmap nmap --script ssl-enum-ciphers -p 443 xxx.cn -oX /results/output_0904.xml Starting Nmap 7.80 ( https://nmap.org ) at 2025-09-04 05:02 UTC Nmap scan report for xxx.…

ChartGPT深度体验:AI图表生成工具如何高效实现数据可视化与图表美化?

最近帮运营同事做季度数据报告时&#xff0c;我差点在图表样式上栽跟头 —— 明明数据都算好了&#xff0c;用 Excel 调柱状图的颜色、字体、坐标轴标签&#xff0c;来回改了快半小时&#xff0c;要么字体太大挤在一起&#xff0c;要么颜色搭配显脏&#xff0c;运营催得急&…

深入理解 JVM 字节码文件:从组成结构到 Arthas 工具实践

在 Java 技术体系中&#xff0c;JVM&#xff08;Java 虚拟机&#xff09;是实现 “一次编写&#xff0c;到处运行” 的核心。而字节码文件作为 Java 代码编译后的产物&#xff0c;是 JVM 执行的 “原材料”。今天&#xff0c;我们就从字节码文件的组成结构讲起&#xff0c;再结…

SoundSource for Mac 音频控制工具

SoundSource for Mac 是一款音频控制工具&#xff0c;中文常被称为 音频源管理器。它能够精确控制系统与应用程序的音量、输出设备和音效处理&#xff0c;让用户获得比 macOS 原生更灵活的音频管理体验。SoundSource 既适合音乐发烧友&#xff0c;也适合日常办公和影音娱乐用户…

云平台面试内容(二)

5. VPC、子网、路由、NAT网关、安全组、网络ACL 区别与网络隔离设计 概念区别: VPC(虚拟私有云): VPC是在公有云上划分出的一个用户专属的虚拟网络环境,相当于用户在云上的私有数据中心。用户可以自定义VPC的IP地址段、路由策略等。不同VPC网络隔离,默认互不相通,确保资…

2023 arXiv MapperGPT: Large Language Models for Linking and Mapping Entities

论文基本信息 题目&#xff1a;MapperGPT: Large Language Models for Linking and Mapping Entities作者&#xff1a;Nicolas Matentzoglu, J. Harry Caufield, Harshad B. Hegde, Justin T. Reese, Sierra Moxon, Hyeongsik Kim, Nomi L. Harris, Melissa A Haendel, Christo…

Docker入门到精通:从零基础到生产部署

前言&#xff1a;为什么你需要学习Docker&#xff1f; 想象一下&#xff0c;你开发了一个应用程序&#xff0c;在你的电脑上运行完美&#xff0c;但当你把它交给同事或部署到服务器时&#xff0c;却出现了各种奇怪的问题。这就是著名的"在我机器上能运行"问题。 Do…

HOT100--Day15--98. 验证二叉搜索树,230. 二叉搜索树中第 K 小的元素,199. 二叉树的右视图

HOT100–Day15–98. 验证二叉搜索树&#xff0c;230. 二叉搜索树中第 K 小的元素&#xff0c;199. 二叉树的右视图 每日刷题系列。今天的题目是《力扣HOT100》题单。 题目类型&#xff1a;二叉树。 关键&#xff1a;要深刻理解《递归》 98. 验证二叉搜索树 思路&#xff1a; …

独角数卡对接蓝鲸支付平台实现个人

目录 什么是独角数卡&#xff1f;安装部署教程一、独角数卡安装二、独角数卡支付配置三、独角数卡BUG修复 什么是独角数卡&#xff1f; ‌ ‌ ‌ ‌ ‌ ‌ ‌ 独角数卡(Dujiaoka)‌是一款基于Laravel框架开发的开源式站长自动化售货解决方案&#xff0c;主要用于虚拟商品和数字…