主頁 > 知識(shí)庫 > 基于zabbix實(shí)現(xiàn)監(jiān)控Jenkins過程詳解

基于zabbix實(shí)現(xiàn)監(jiān)控Jenkins過程詳解

熱門標(biāo)簽:智能手機(jī) 百度競(jìng)價(jià)點(diǎn)擊價(jià)格的計(jì)算公式 網(wǎng)站建設(shè) 使用U盤裝系統(tǒng) 美圖手機(jī) 硅谷的囚徒呼叫中心 阿里云 檢查注冊(cè)表項(xiàng)

一、監(jiān)控架構(gòu)圖

二、實(shí)現(xiàn)思路

  • 在 Jenkins 上安裝 Metrics 插件,使 Jenkins 暴露 metrics api;
  • 編寫python代碼從api抓取數(shù)據(jù),并將數(shù)據(jù)解析為zabbix可以識(shí)別的格式;
  • 配置 Zabbix server 及 agent 以實(shí)現(xiàn)監(jiān)控及告警

三、具體配置

1、安裝Jenkins Metrics插件

插件下載地址:http://updates.jenkins-ci.org/download/plugins/metrics/

安裝 Metrics 插件,在系統(tǒng)配置中,會(huì)多出“Metrics”的配置,如下圖:


配置項(xiàng)不復(fù)雜。我們需要點(diǎn)擊“Generate...”生成一個(gè) Access Key(生成后,記得要保存)。這個(gè) Key 用于身份校驗(yàn),后面我們會(huì)用到。

保存后,我們?cè)跒g覽器中輸入U(xiǎn)RL:http://jenkins.local,me/metrics/<剛生成的 Access Key> 驗(yàn)證 Jenkins 是否已經(jīng)暴露 metrics。如果看到如下圖,就說明可以進(jìn)行下一步了:

1.1 Metrics 插件介紹

Metrics 插件是基于 dropwizard/metrics 實(shí)現(xiàn)。它通過4個(gè)接口暴露指標(biāo)數(shù)據(jù):/metrics,/ping,/threads,/healthcheck。

1.2 Metrics 插件:/metrics 接口介紹

點(diǎn)擊上圖中的metric鏈接(http://jenkins.local.me/metrics/<Access Key>/metrics),它暴露了以下指標(biāo)數(shù)據(jù):

{
 version: "4.0.0",
 gauges: {...},
 counters: {...},
 histograms: {...},
 meters: {...},
 timers: {...}
}

Gauges:某項(xiàng)指標(biāo)的瞬時(shí)值,例如:當(dāng)前 Jenkins executor 的總個(gè)數(shù)(jenkins.executor.count.value)
Counters:某項(xiàng)指標(biāo)的總數(shù)值,例如:http 請(qǐng)求活動(dòng)連接數(shù)(http.activeRequests)
Meters:一段時(shí)間內(nèi),某事件的發(fā)生概率,例如:Jenkins成功執(zhí)行的任務(wù)每分鐘的執(zhí)行次數(shù)(jenkins.runs.success.m1_rate)
Histogram:統(tǒng)計(jì)指標(biāo)的分布情況。例如:Jenkins executor 數(shù)量的分布(jenkins.executor.count.history)
Timer:某項(xiàng)指標(biāo)的持續(xù)時(shí)間。例如:Jenkins 任務(wù)等待時(shí)間(jenkins.job.waiting.duration)

1.3 Metrics插件其他接口

/ping:接口返回pong代表 Jenkins 存活,如下圖:

/threads:返回 Jenkins 的線程信息

/healthcheck:返回以下指標(biāo):

{
 "disk-space" : {
  "healthy" : true
 },
 "plugins" : {
  "healthy" : true,
  "message" : "No failed plugins"
 },
 "temporary-space" : {
  "healthy" : true
 },
 "thread-deadlock" : {
  "healthy" : true
 }
}

Zabbix server 通過與 Zabbix agent 進(jìn)行通信實(shí)現(xiàn)數(shù)據(jù)的采集。而 Zabbix agent 又分為被動(dòng)和主動(dòng)兩種模式。我們使用的是被動(dòng)模式,也就是Zabbix server 向 agent 索要數(shù)據(jù)。
所以,我們需要在 Zabbix agent 所在機(jī)器放一個(gè)獲取 Jenkins 指標(biāo)數(shù)據(jù)的腳本。再配置 Zabbix server 定時(shí)從該 agent 獲取數(shù)據(jù),最后配置觸發(fā)器(trigger)實(shí)現(xiàn)告警。

2.1 創(chuàng)建監(jiān)控模板并鏈接至主機(jī)組


2.2 創(chuàng)建監(jiān)控項(xiàng)

這里需要解釋其中幾個(gè)選項(xiàng)為什么要那樣填:

  • 類型:是 Zabbix server 采集指標(biāo)的類型,我們選擇的是 Zabbix agent,如上文所說。
  • 鍵值:由于我們要監(jiān)控的指標(biāo)并不是 Zabbix 預(yù)定義的。所以,需要使用用戶自定義參數(shù)來實(shí)現(xiàn)監(jiān)控 Jenkins 指標(biāo)。Key 填的值為:jenkins.metrics[gauges.jenkins.node.count.value.value]。jenkins.metrics是需要執(zhí)行的真正的 Key 名稱。而 [] 內(nèi)是傳給該 Key 對(duì)應(yīng)的命令的參數(shù)。對(duì)于初學(xué)者,Zabbix 這部分概念非常不好理解。也許這樣會(huì)更好理解:在使用用戶自定義參數(shù)來實(shí)現(xiàn)監(jiān)控的情況下,Zabbix server 會(huì)將這個(gè) Key 發(fā)送給 agent,然后 agent 根據(jù)這個(gè) Key 執(zhí)行指定的 邏輯 以獲取指標(biāo)數(shù)據(jù)。這個(gè) 邏輯 通常是一段腳本(shell命令或Python腳本等)。而腳本也是可以傳參的,[]中的值就是傳給腳本的參數(shù)。
  • 信息類型:監(jiān)控?cái)?shù)據(jù)的數(shù)據(jù)類型,由于該監(jiān)控項(xiàng)監(jiān)控的是 Jenkins node 節(jié)點(diǎn)的個(gè)數(shù),所以,使用數(shù)字整型。
  • 更新間隔:指 Zabbix server 多長(zhǎng)時(shí)間向 agent 獲取一次數(shù)據(jù)。

到此,Zabbix server 端已經(jīng)配置完成??梢栽诒O(jiān)測(cè)->最新數(shù)據(jù)中查看是否有最新的數(shù)據(jù),然后可以創(chuàng)建儀表盤將數(shù)據(jù)以圖形的方式呈現(xiàn)出來。其他監(jiān)控項(xiàng)也可以按此方法進(jìn)行配置。

監(jiān)控腳本代碼

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:湖北 湘潭 煙臺(tái) 賀州 山南 懷化 通遼 黃山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于zabbix實(shí)現(xiàn)監(jiān)控Jenkins過程詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266