基于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
 }
}

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

监控脚本代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • zabbix监控Linux系统服务的流程

    Zabbix自动发现规则监控Linux系统的service units 项目要求:通过systemctl命令查看Linux系统的service units: 监控前提:zabbix环境已搭建好: 监控原理:通过shell脚本把systemctl命令返回的结果以json格式发送到zabbix: 1. 在scripts目录编写脚本,脚本内容如下: 2. 在/etc/zabbix_agentd.conf.d目录编写配置文件,内容如下: vim service_status.conf UserParam

  • 解决zabbix监控因php问题导致图形界面中文乱码方法

    解决因编译php中添加了-enable-gd-jis-conv选项导致Zabbix监控系统图形界面中文乱码问题 现象: php编译参数: 说明: 如果PHP编译时启用–enable-gd-jis-conv选项的话,那么非ASCII字符(例如汉字.拼音.希腊文和箭头) 会被当成EUC-JP编码 (phpinfo中美其名曰"支持JIS编码的字体"), 从而导致乱码(由于西文字体没有假名或汉字,一般表现为全部是方框).imagettftext()函数是将字符写入到图片的函数,这个问题就是由这

  • Zabbix配置监控项及聚合图形的实例代码

    1.安装Zabbix Agent监控本机 安装agent软件 与server端不同,Agent只需安装zabbix-agent包 cat /etc/yum.repos.d/zabbix.repo [zabbix] name=Zabbix Official Repository - $basearch baseurl=https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/$basearch/ enabled=1 gpgcheck=1 gpgkey=

  • Zabbix如何使用过滤器实现监控

    最近在做监控设备时,老是会有端口down掉的告警,一查数据发现,端口本来一直就是down的,关了之后,过段时间又继续发告警:还有领导反馈监控项那么多为啥那么多没有数据的,然后又blablabla解释了一大堆.所以,就想到了使用过滤器,添加正则表达式给这些没啥实际意义的监控项去掉,记录下来供大家参考.具体操作请以实际情况为准. 过滤器,顾名思义是指过滤掉不需要的监控项,比如端口没有数据的.状态一直是down的.虚拟端口等:在自动发现规则使用过滤器就对我们的监控需求很有帮助. 下面以网络设备的端口的

  • zabbix监控4.4升级至5.0的详细教程

    1.ZABBIX备份 [root@iZ2zeapnvuohe8p14289u6Z /]# mkdir -p /soft/zabbixback/zabbix-backup [root@iZ2zeapnvuohe8p14289u6Z /]# cp /etc/zabbix/zabbix_server.conf /soft/zabbixback/zabbix-backup [root@iZ2zeapnvuohe8p14289u6Z /]# cp /etc/zabbix/zabbix_agentd.con

  • zabbix监控Nginx/Tomcat/MySQL的详细教程

    zabbix监控Nginx A机器:zabbix服务端(192.168.234.128) B机器:zabbix客户端(192.168.234.125) 在B机器(zabbix客户端)操作: 编辑nginx虚拟主机配置文件: [root@centos ~]# vi /etc/nginx/conf.d/default.conf 在server{}中添加以下内容: location /nginx_status { stub_status on; access_log off; allow 127.0.

  • zabbix 添加你需要监控的主机

    添加监控主机 主机192.168.179.104添加进zabbix监控项(在192.168.179.104安装上zabbix-agent) #添加监控主机,注意zabbix版本要和server端一致 [root@localhost ~]# yum install zabbix40-agent -y --被监控的主机192.168.179.104安装上agent [root@localhost ~]# rpm -qc zabbix40-agent /etc/zabbix/zabbix_agentd

  • Zabbix监控SQL Server服务状态的方法详解

    SQL Server数据库的服务(SQL Server (MSSQLSERVER).SQL Server Agent (MSSQLSERVER)等服务)一般配置成自动启动,但是有时候有些服务组件也会突然停止.有些是因为异常或Bug,有些是因为配置缘故.有些是因为非规范操作(例如重启SQL Server (MSSQLSERVER)时关闭了SQL Server Agnt服务,但是没有检查或重启这个服务).那么监控SQL Server的服务状态也是数据库监控里面的一项常规工作. 以前我们用Solarw

  • Zabbix3.4监控mongodb数据库状态的方法

    mongodb有db.serverStatus()命令,可以查看mongodb的运行状态,那么zabbix就可以调用这个命令实现mongodb的监控. 一.db.serverStatus()命令的使用 注:只有超级管理员账号才有权限使用此命令 1.查看mongodb服务状态 echo "db.serverStatus()" | mongo --port 37485 -u username -p 'password' --authenticationDatabase 'admin' 2.

  • 基于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 插件,在系统

  • 分布式监控系统之Zabbix主动、被动及web监控的过程详解

    前文我们了解了zabbix的网络发现功能,以及结合action实现自动发现主机并将主机添加到zabbix hosts中,链接指定模板进行监控:回顾请参考https://www.jb51.net/article/200678.htm:今天我们来了解下zabbix的主动监控.被动监控以及web监控相关话题: 1.什么是主动监控?什么是被动监控? 我们知道获取数据的方式有两种,一种是get,一种是push:在zabbix中描述主动监控和被动监控都是站在agent的一方来描述的:我们把agent主动将数

  • 基于python实现雪花算法过程详解

    这篇文章主要介绍了基于python实现雪花算法过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Snowflake是Twitter提出来的一个算法,其目的是生成一个64bit的整数: 1bit:一般是符号位,不做处理 41bit:用来记录时间戳,这里可以记录69年,如果设置好起始时间比如今年是2018年,那么可以用到2089年,到时候怎么办?要是这个系统能用69年,我相信这个系统早都重构了好多次了. 10bit:10bit用来记录机器ID

  • Spring基于xml文件配置Bean过程详解

    这篇文章主要介绍了spring基于xml文件配置Bean过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过全类名来配置: class:bean的全类名,通过反射的方式在IOC容器中创建Bean,所以要求bean中必须有一个无参的构造器. <bean id="helloWorld" class="com.gong.spring.beans.HelloWorld"> <property na

  • JavaScript代码异常监控实现过程详解

    这篇文章主要介绍了JavaScript代码异常监控实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 JavaScript异常一般有两方面:语法错误和运行时错误.两种错误的捕获和处理方式不同,从而影响具体的方案选型.通常来说,处理JS异常的方案有两种:try...catch捕获 和 window.onerror捕获.以下就两种方案分别分析各自的优劣. 虽然语法错误本应该在开发构建阶段使用测试工具避免,但难免会有马失前蹄部署到线上的时候.

  • Java 用Prometheus搭建实时监控系统过程详解

    上帝之火 本系列讲述的是开源实时监控告警解决方案Prometheus,这个单词很牛逼.每次我都能联想到带来上帝之火的希腊之神,普罗米修斯.而这个开源的logo也是火,个人挺喜欢这个logo的设计. 本系列着重介绍Prometheus以及如何用它和其周边的生态来搭建一套属于自己的实时监控告警平台. 本系列受众对象为初次接触Prometheus的用户,大神勿喷,偏重于操作和实战,但是重要的概念也会精炼出提及下.系列主要分为以下几块 Prometheus各个概念介绍和搭建,如何抓取数据(本次分享内容)

  • CentOS 7 安装 Jenkins过程详解

    通过 Yum 安装 Jenkins 一.安装 # yum 源导入 wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo # 导入密钥 rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key # 安装 yum install -y jenkins 二.开放端口 # 端口可以在 /etc/sysconfig

  • 基于javascript处理nginx请求过程详解

    nginx是一个HTTP和反向代理服务器,目前很多网站都在使用nginx作为反向代理服务器. njs是JavaScript语言的一个子集,它允许扩展nginx的功能,这点跟lua有点类似,不过采用的语言是javascript. 1. 安装nginx 要使用njs,需要安装一个nginx,这里的我使用的环境是Ubuntu18.04.4. 首先从http://nginx.org/en/download.html下载最新的stable version的nginx源码. a. 解压源码 sudo tar

  • 基于Java代码操作Redis过程详解

    Jedis简介 实际开发中,我们需要用Redis的连接工具连接Redis然后操作Redis, 对于主流语言,Redis都提供了对应的客户端: 提供了很多客户端 官方推荐的是Jedis 托管地址:https://github.com/xetorthio/jedis 要使用redis首先得下载pom依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId&g

  • Python基于pip实现离线打包过程详解

    新公司是内网环境,无法使用pip安装第三方资源库,在网上搜下,可以直接使用pip打包本机所安装的第三方资源库,打包成whl文件 一 进入cmd命令行 1 打包单个模块 pip download pytest -d /tmp 2 打包本机所有的包 pip freeze >requirements.txt pip download -r requirements.txt -d /tmp 或者 pip install --download /tmp/packages -r requirements.t

随机推荐