基于zabbix实现监控Jenkins过程---超详细

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老
导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监控工具、脚本编程、云服务等。
常用运维工具系列:常用的运维开发工具, zabbix、nagios、docker、k8s、puppet、ansible等
数据库系列:详细总结了常用数据库 mysql、Redis、MongoDB、oracle 技术点,以及工作中遇到的 mysql 问题等
懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

基于zabbix实现监控Jenkins过程---超详细

zabbix监控简介

Zabbix是一个企业级的分布式开源监控方案,由 Alexei Vladishev创建,目前由 Zabbix SIA**在持续开发和支持。**‌ 它能够监控各种网络参数以及服务器健康性和完整性,使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警,从而快速反馈服务器的问题。Zabbix基于已存储的数据提供了出色的报告和数据可视化功能,这些功能使其成为容量规划的理想方案。它支持主动轮询和被动捕获,所有的报告、统计信息和配置参数都可以通过基于Web的前端页面进行访问,确保用户可以从任何方面评估网络状态和服务器的健康性。Zabbix是免费的,根据GPL通用公共许可证第2版编写和发行,这意味着它的源代码是免费发行的,可供公众任意使用。商业支持由Zabbix公司提供。

Zabbix的功能包括但不限于:

  • 数据收集‌:支持SNMP(包括主动轮询和被动获取)、IPMI、JMX、VMware监控等。
  • 可用性和性能检查‌:通过server/proxy+agents执行,提供灵活的阀值定义,高度可配置化的告警,使用宏变量使告警通知更高效有用。
  • Web监控功能‌:可以追踪模拟鼠标在Web网站上的点击操作,检查Web的功能和响应时间。
  • 丰富的可视化选项‌:支持创建自定义的图表,以仪表盘的样式自定义大屏展现和幻灯片轮询播放。
  • 网络拓扑图‌:以图形化方式展示网络结构和设备间的依赖关系。
  • 报表‌:提供监控内容的高级(业务)视图和历史数据存储。

Zabbix由几个主要的软件组件构成,包括Server(数据的中心组件)、Proxy代理服务器(可选部分,用于分担负载)、Agent监控代理(部署在监控目标上,主动监控本地资源和应用程序)等。这些组件协同工作,使得Zabbix能够有效地监控和管理复杂的IT基础设施。

本篇主要介绍基于zabbix实现监控Jenkins过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一、监控架构图

二、实现思路

  • 在 Jenkins 上安装 Metrics 插件,使 Jenkins 暴露 metrics api;
  • 编写python代码从api抓取数据,并将数据解析为zabbix可以识别的格式;
  • 配置 Zabbix server 及 agent 以实现监控及告警

三、具体配置

1、安装Jenkins Metrics插件

插件下载地址: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),它暴露了以下指标数据:

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:返回以下指标:

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 端已经配置完成。可以在监测->最新数据中查看是否有最新的数据,然后可以创建仪表盘将数据以图形的方式呈现出来。其他监控项也可以按此方法进行配置。

相关推荐
原来是猿3 小时前
网络计算器:理解序列化与反序列化(中)
linux·运维·服务器·网络·tcp/ip
AOwhisky4 小时前
虚拟化技术学习笔记
linux·运维·笔记·学习·虚拟化技术
rabbit_pro5 小时前
Docker compose部署Ollama使用模型
linux·运维·docker
凤舞飘伶7 小时前
jenkins问题处理方法
jenkins
Irissgwe8 小时前
六、Ext系列文件系统(2.核心原理与应用)
linux·分区··inode·软硬连接·路径缓存·ext系列文件
tkevinjd8 小时前
wsl2安装
linux·wsl·虚拟机·wsl2
故事还在继续吗8 小时前
Linux 内核模块开发实战
linux·linux内核
南境十里·墨染春水9 小时前
linux学习进展 守护进程
linux·服务器·学习
REDcker9 小时前
Android HWASan 详解:硬件标记原理、Clang 启用与排障实践
android·linux·debug·编译·clang·asan·hwasan
数智工坊10 小时前
VMware 17 Pro 中 Ubuntu 虚拟机共享 Windows 文件夹(完美踩坑版)
linux·人工智能·windows·ubuntu