使用zabbix监控Jenkins
一、监控架构图

二、实现思路
- 在 Jenkins 上安装 Metrics 插件,使 Jenkins 暴露 metrics api;
- 编写python代码从api抓取数据,并将数据解析为zabbix可以识别的格式;
- 配置 Zabbix server 及 agent 以实现监控及告警
三、具体配置
1、安装Jenkins Metrics插件
插件下载地址:http://updates.jenkins-ci.org/download/plugins/metrics/
安装 Metrics 插件,在系统配置中,会多出“Metrics”的配置,如下图:

配置项不复杂。我们需要点击“Generate...”生成一个 Access Key(生成后,记得要保存)。这个 Key 用于身份校验,后面我们会用到。
保存后,我们在浏览器中输入URL:http://jenkins.local,me/metrics/<刚生成的 Access Key> 验证 Jenkins 是否已经暴露 metrics。如果看到如下图,就说明可以进行下一步了:

1.1 Metrics 插件介绍
Metrics 插件是基于 dropwizard/metrics 实现。它通过4个接口暴露指标数据:/metrics,/ping,/threads,/healthcheck。
1.2 Metrics 插件:/metrics 接口介绍
点击上图中的metric链接(http://jenkins.local.me/metrics/<Access Key>/metrics),它暴露了以下指标数据:
{
version: "4.0.0",
gauges: {...},
counters: {...},
histograms: {...},
meters: {...},
timers: {...}
}
- Gauges:某项指标的瞬时值,例如:当前 Jenkins executor 的总个数(jenkins.executor.count.value)
- Counters:某项指标的总数值,例如:http 请求活动连接数(http.activeRequests)
- Meters:一段时间内,某事件的发生概率,例如:Jenkins成功执行的任务每分钟的执行次数(jenkins.runs.success.m1_rate)
- Histogram:统计指标的分布情况。例如:Jenkins executor 数量的分布(jenkins.executor.count.history)
- Timer:某项指标的持续时间。例如:Jenkins 任务等待时间(jenkins.job.waiting.duration)
1.3 Metrics插件其他接口
/ping:接口返回
pong代表 Jenkins 存活,如下图:

/threads:返回 Jenkins 的线程信息
/healthcheck:返回以下指标:
{
"disk-space" : {
"healthy" : true
},
"plugins" : {
"healthy" : true,
"message" : "No failed plugins"
},
"temporary-space" : {
"healthy" : true
},
"thread-deadlock" : {
"healthy" : true
}
}
2、配置 Zabbix server 与 agent 实现监控及告警
Zabbix server 通过与 Zabbix agent 进行通信实现数据的采集。而 Zabbix agent 又分为被动和主动两种模式。我们使用的是被动模式,也就是Zabbix server 向 agent 索要数据。
所以,我们需要在 Zabbix agent 所在机器放一个获取 Jenkins 指标数据的脚本。再配置 Zabbix server 定时从该 agent 获取数据,最后配置触发器(trigger)实现告警。
2.1 创建监控模板并链接至主机组


2.2 创建监控项

这里需要解释其中几个选项为什么要那样填:
- 类型:是 Zabbix server 采集指标的类型,我们选择的是 Zabbix agent,如上文所说。
- 键值:由于我们要监控的指标并不是 Zabbix 预定义的。所以,需要使用用户自定义参数来实现监控 Jenkins 指标。Key 填的值为:jenkins.metrics[gauges.jenkins.node.count.value.value]。
jenkins.metrics是需要执行的真正的 Key 名称。而[]内是传给该 Key 对应的命令的参数。对于初学者,Zabbix 这部分概念非常不好理解。也许这样会更好理解:在使用用户自定义参数来实现监控的情况下,Zabbix server 会将这个 Key 发送给 agent,然后 agent 根据这个 Key 执行指定的 逻辑 以获取指标数据。这个 逻辑 通常是一段脚本(shell命令或Python脚本等)。而脚本也是可以传参的,[]中的值就是传给脚本的参数。 - 信息类型:监控数据的数据类型,由于该监控项监控的是 Jenkins node 节点的个数,所以,使用数字整型。
- 更新间隔:指 Zabbix server 多长时间向 agent 获取一次数据。
到此,Zabbix server 端已经配置完成。可以在监测->最新数据中查看是否有最新的数据,然后可以创建仪表盘将数据以图形的方式呈现出来。其他监控项也可以按此方法进行配置。
使用zabbix监控Jenkins的更多相关文章
- 使用 Zabbix 监控 Jenkins
笔者最近的工作涉及到使用 Zabbix 监控 Jenkins.在谷歌上搜索到的文章非常少,能操作的就更少了.所以决定写一篇文章介绍如何使用 Zabbix 监控 Jenkins. 下图为整体架构图: 整 ...
- 使用Zabbix监控Oracle数据库
Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...
- Zabbix监控nginx-rtmp status(json版)
与前面的文章 zabbix监控nginx-rtmp status(html版)区别只在于取值的页面不一样 http://127.0.0.1:81/control/get/all_streams sta ...
- Zabbix监控mysql performance
介绍 zabbix监控mysql性能,使用zabbix自带的mysql监控模板,可以监控以下内容OPS(增删改查).mysql慢查询数量.mysql请求\响应流量带宽 配置 新建mysql监控用户 G ...
- zabbix监控Java 8080端口
linux下端口和服务是对应的,Java进程启动时默认监听8080端口,如果服务挂掉则8080端口就没有了. lsof -i:8080 端口,如果没有任何的输出,说明该端口不在工作. 想在zabbix ...
- zabbix监控报错zabbix server is not running解决方法
问题描述: 布置好zabbix监控,正常运行.但是重启了虚拟机服务器之后,页面出现如下的报错,而且设置的报信息也是失效的:
- Zabbix监控Tengine
title: Zabbix监控Tengine tags: zabbix,nginx,tengine author: Chinge Yang date: 2016-12-29 --- Zabbix监控T ...
- zabbix 监控web网站性能
一直在纠结用什么实例来给大家演示呢?想来想去还是官方的好,那我们怎么用zabbix监控web性能和可用性呢?我们这边分为几个步骤:打开网站.登陆.登陆验证.退出,一共4个小step,看实例. 检测流程 ...
- Zabbix监控disk performance
概述 zabbix获取/sys里面的磁盘信息并分析来监控disk performance sysfs是Linux内核中设计较新的一种虚拟的基于内存的文件系统,它的作用与 proc 有些类似(默认挂载在 ...
随机推荐
- 正则表达式小应用之对xml格式字符串每个字段加双引号
通过Python对接口进行自动化后需要把xml格式的报文放到LoadRunner上进行压力测试,在pyCharm控制台打印出报文后,把报文放到LoadRunner中做了格式调整后,每个字段需要添加双引 ...
- pause容器作用
1.概念 Pause容器 全称infrastucture container(又叫infra)基础容器. 作为init pod存在,其他pod都会从pause 容器中fork出来. 每个Pod里运行着 ...
- Linux 网络编程的5种IO模型:多路复用(select/poll/epoll)
Linux 网络编程的5种IO模型:多路复用(select/poll/epoll) 背景 我们在上一讲 Linux 网络编程的5种IO模型:阻塞IO与非阻塞IO中,对于其中的 阻塞/非阻塞IO 进行了 ...
- 关于python递归函数,这样写就对了
大家好我是致力于让每个人都能够轻松学会编程的小梁,在这条路上任重道远,关注我,每天让您获取来自编程的乐趣. 关注公众号"轻松学编程".了解更多. 今天就给大家分享一下关于使用递归函 ...
- [NOIP 2016D2T2/Luogu P1600] 天天爱跑步 (LCA+差分)
待填坑 Code //Luogu P1600 天天爱跑步 //Apr,4th,2018 //树上差分+LCA #include<iostream> #include<cstdio&g ...
- [LuoguP2161[ [SHOI2009]会场预约 (splay)
题面 传送门:https://www.luogu.org/problemnew/show/P2161 Solution splay 的确有线段树/树状数组的做法,但我做的时候脑残没想到 我们可以考虑写 ...
- 消息队列--ActiveMQ集群部署
一.activeMQ主要的部署方式? 1,默认的单机部署(kahadb) activeMQ默认的存储单机模式,如果配置文件不做修改,则默认使用此模式.以本地的kahadb文件的方式进行存储,性能完全依 ...
- 服务器断电导致的ORACLE异常 : ORA-00214 ORA-01033 ORA-01034 ORA-00172 ORA-27101
工作环境中的集群迁移之后,oracle出了挺多问题,最开始一直没找到原因,后来发现做迁移的人是冷迁移的,且数据库节点是硬关机的,惊了( 表现症状有不能登陆,登录了不能操作等 第一个报的是 ORA-00 ...
- JWT基本概念
json web token 简称 JWT,它并不是一个具体的技术实现,而更像是一种标准. JWT规定了数据传输的结构,一串完整的JWT由三段落组成,每个段落用英文句号连接(.)连接,他们分别是:He ...
- Numpy_02
# 十,使用数组进行文件输入和输出 # Numpy 可以将数据以[文本]或[二进制]的形式存入硬盘,或从硬盘载入. # 由于大部分用户更倾向于使用pandas等其他工具来载入文本或表格型数据,因此,这 ...