背 景
Prometheus是一個(gè)開源的系統(tǒng)監(jiān)控和報(bào)警系統(tǒng),現(xiàn)在已經(jīng)加入到CNCF基金會(huì),成為繼k8s之后第二個(gè)在CNCF托管的項(xiàng)目,在kubernetes容器管理系統(tǒng)中,通常會(huì)搭配Prometheus進(jìn)行監(jiān)控,同時(shí)也支持多種exporter采集數(shù)據(jù),還支持pushgateway進(jìn)行數(shù)據(jù)上報(bào),Prometheus性能足夠支撐上萬(wàn)臺(tái)規(guī)模的集群。
我們知道 zabbix 在監(jiān)控界占有不可撼動(dòng)的地位,功能強(qiáng)大。但是對(duì)容器監(jiān)控顯得力不從心。為解決監(jiān)控容器的問(wèn)題,對(duì)APM進(jìn)行擴(kuò)展,支持采集Prometheus exporter數(shù)據(jù),實(shí)現(xiàn)APM容器化監(jiān)控。
使用說(shuō)明
1. 功能說(shuō)明
對(duì)接prometheus性能數(shù)據(jù),實(shí)現(xiàn)snc-proxy/snc-agent采集prometheus【exporter】數(shù)據(jù)。
2. 使用范圍
采集prometheus性能數(shù)據(jù)。
3. 功能邏輯
3.1 snc-proxy/snc-agen添加支持prometheus采集協(xié)議。
主要實(shí)現(xiàn)邏輯:
1)定義監(jiān)控格式為prometheus.xx.xx[{$PURL},key,label1="xx",label2="xx",...],label為可變參數(shù);
2)添加PrometheusMetricProvider指標(biāo)消費(fèi)類,繼承AbstractMetricsConsumer,類型為prometheus;
3)根據(jù)監(jiān)控項(xiàng)參數(shù)key值,對(duì)prometheus metric數(shù)據(jù)進(jìn)行篩選;
4)根據(jù)監(jiān)控項(xiàng)參數(shù)label值,對(duì)完成步驟2的數(shù)據(jù)進(jìn)行進(jìn)一步篩選,label值支持正則表達(dá)式和通配符;
5)處理篩選結(jié)果。普通監(jiān)控項(xiàng)賽選結(jié)果為1條,返回對(duì)象格式j(luò)son文本,賽選結(jié)果為多條,返回結(jié)果數(shù)組格式j(luò)son文本;自發(fā)現(xiàn)監(jiān)控項(xiàng)返回自發(fā)現(xiàn)監(jiān)控項(xiàng)結(jié)果。
3.2 AMP自定義prometheus node_exporter監(jiān)控模板。
3.3 通過(guò)snc-agen監(jiān)控工作原理,實(shí)現(xiàn)數(shù)據(jù)采集。
4. 格式規(guī)范/使??式
以prometheus.開頭。
prometheus metric數(shù)據(jù)格式:
4.1 普通監(jiān)控項(xiàng)
prometheus.xx.xx[{$PURL},key,label1="xx",label2="xx",...]
第?個(gè)參數(shù):prometheus metric數(shù)據(jù)url訪問(wèn)連接;
第二個(gè)參數(shù):prometheus metric返回?cái)?shù)據(jù)格式中的"{xxx}"前的key值信息;
后續(xù)參數(shù):數(shù)量不固定,為Prometheus metric返回?cái)?shù)據(jù)格式中的"{xxx}"中的信息。
樣例:
prometheus.system.cup.count[http://XXX.XXX.XX.7:8000/actuator/prometheus,system_cpu_count]
#獲取系統(tǒng)CPU數(shù)量信息
prometheus.jvm.memory.used.heap[http://XXX.XXX.XX.7:8000/actuator/prometheus,jvm_memory_used_bytes,area="heap"]
#獲取jvm heap區(qū)內(nèi)存使用情況
prometheus.logback.events.total[http://XXX.XXX.XX.7:8000/actuator/prometheus,logback_events_total,level="*"]
#獲取日志事件數(shù)信息
4.2 特殊監(jiān)控項(xiàng)
prometheus.cache.metric[{$PURL},300]
prometheus.cache.metric為固定值;
第一個(gè)參數(shù):prometheus metric數(shù)據(jù)url訪問(wèn)連接;
第二個(gè)參數(shù):緩存時(shí)間,單位秒。
普通監(jiān)控項(xiàng)每次采集都要通過(guò)http請(qǐng)求訪問(wèn)Prometheus exporter獲取數(shù)據(jù),配置這個(gè)鍵值后會(huì)把Prometheus metric的返回信息緩存至snc-agent或者snc-proxy,有效期內(nèi)其他鍵值采集數(shù)據(jù)直接從緩存中獲取,否則每次都要http訪問(wèn)獲取。
4.3 自發(fā)現(xiàn)配置
prometheus.discovery.metric[{$PURL},key,label1="xx",label2="xx",...]
prometheus.discovery.metric為固定鍵值;
第?個(gè)參數(shù):prometheus metric數(shù)據(jù)url訪問(wèn)連接;
第二個(gè)參數(shù):prometheus metric返回?cái)?shù)據(jù)格式中的"{xxx}"前的key值信息;
后續(xù)參數(shù):數(shù)量不固定,為Prometheus metric返回?cái)?shù)據(jù)格式中的"{xxx}"中的信息。
自發(fā)現(xiàn)只適用于發(fā)現(xiàn)為Prometheus metric結(jié)果信息中格式為 xxx{label1="xx",label2="xx",...}的信息。
配置詳情
1. 設(shè)備名 agent
采集方式:Zabbix agent
鍵值:agent.activehost[{HOST.HOST}]
數(shù)據(jù)類型:字符
2. 緩存 Prometheus metric 信息
采集方式:Zabbix agent(active)
鍵值:prometheus.cache.metric[{$PURL},300]
數(shù)據(jù)類型:字符
prometheus.cache.metric為固定值;
{$PURL}為Prometheus metric的http請(qǐng)求地址;
300為緩存有效時(shí)間。
配置這個(gè)鍵值后會(huì)把Prometheus metric的返回信息緩存至snc-agent或者snc-proxy,有效期內(nèi)其他鍵值采集數(shù)據(jù)直接從緩存中獲取,否則每次都要http訪問(wèn)獲取。
3. 普通監(jiān)控項(xiàng)配置
采集方式:Zabbix agent(active)
鍵值:prometheus.xx.xx[{$PURL},key,label1="xx",label2="xx",...]
{$PURL}為Prometheus metric的http請(qǐng)求地址;
key為Prometheus metric返回?cái)?shù)據(jù)格式中的"{xxx}"前的信息;
label為Prometheus metric返回?cái)?shù)據(jù)格式中的"{xxx}"中的信息,label不是必須輸入,長(zhǎng)度可變。
首先會(huì)根據(jù)key對(duì)Prometheus metric信息進(jìn)行篩選,如果鍵值包含label,再根據(jù)label進(jìn)行進(jìn)一步篩選,label的值支持通配符和正則表達(dá)式。
篩選結(jié)果為單條數(shù)據(jù),返回對(duì)象格式j(luò)son文本。
例:
{
"metric": {
"exception": "None",
"method": "GET",
"uri": "/**",
"outcome": "REDIRECTION",
"status": "304"
},
"value": "0.0"
}
篩選結(jié)果為多條數(shù)據(jù),返回?cái)?shù)組格式的json文本。
例:
[
{
"metric": {
"exception": "None",
"method": "GET",
"uri": "/**",
"outcome": "REDIRECTION",
"status": "304"
},
"value": "0.0"
},
{
"metric": {
"exception": "None",
"method": "OPTIONS",
"uri": "root",
"outcome": "SUCCESS",
"status": "200"
},
"value": "0.0"
}
]
配置監(jiān)控項(xiàng),如果想要獲取返回結(jié)果中的某個(gè)信息,可以使用預(yù)處理JSON路徑獲取結(jié)果中的某個(gè)信息。
4. 依賴監(jiān)控項(xiàng)配置
普通監(jiān)控項(xiàng)返回結(jié)果為對(duì)象格式JSON文本或者數(shù)組格式JSON文本,如果想要基于普通監(jiān)控項(xiàng)的監(jiān)控信息進(jìn)行解析,可以添加依賴監(jiān)控項(xiàng),主要項(xiàng)為想要解析的普通監(jiān)控項(xiàng)。
5. 自發(fā)現(xiàn)配置
5.1 自發(fā)現(xiàn)規(guī)則配置
采集方式:Zabbix agent(active)
鍵值:prometheus.discovery.metric[{$PURL},key,label1="xx",label2="xx",...],label為可選參數(shù)。
自發(fā)現(xiàn)只適用于發(fā)現(xiàn)為Prometheus metric結(jié)果信息中格式為 xxx{label1="xx",label2="xx",...}的信息。
5.2 監(jiān)控項(xiàng)原型配置
采集方式:Zabbix agent(active)
鍵值:prometheus.xx.xx[{$PURL},key,label="{#LABEL}"]
其中{#xxx}為自發(fā)現(xiàn)規(guī)則鍵值中的label轉(zhuǎn)換為大寫的信息。如果自發(fā)先規(guī)則鍵值中沒(méi)有傳label,則{#xxx}變量為所有篩選結(jié)果 xxx{label1="xx",label2="xx",...}中的label的大寫信息。
自發(fā)現(xiàn)監(jiān)控項(xiàng):
版 本
基于GA03版本實(shí)現(xiàn)snc-proxy-agent的擴(kuò)展。
展 望
實(shí)現(xiàn)支持prometheus exporter數(shù)據(jù)HTTP訪問(wèn)授權(quán)驗(yàn)證。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/129557.html
摘要:本文已經(jīng)收錄在合集都可以采集那些指標(biāo)常用合集中。允許通過(guò)和對(duì)接口進(jìn)行黑盒探測(cè)監(jiān)控。我們來(lái)看這個(gè)示例文件,其他是經(jīng)常搭配服務(wù)發(fā)現(xiàn)來(lái)進(jìn)行工作的,比如搭配基于的服務(wù)發(fā)現(xiàn)來(lái)進(jìn)行。小結(jié)其實(shí)在監(jiān)控系統(tǒng)中非常實(shí)用,尤其是監(jiān)控和監(jiān)控。 本文已經(jīng)收錄在 Prometheus 合集 Prometheus 都可以采集那些指標(biāo)?-- ...
摘要:根據(jù)配置文件,對(duì)接收到的警報(bào)進(jìn)行處理,發(fā)出告警。在默認(rèn)情況下,用戶只需要部署多套,采集相同的即可實(shí)現(xiàn)基本的。通過(guò)將監(jiān)控與數(shù)據(jù)分離,能夠更好地進(jìn)行彈性擴(kuò)展。參考文檔本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見 系統(tǒng)架構(gòu)圖 1.x版本的Prometheus的架構(gòu)圖為:showImg(https://segmentfault.com/img/remote/1460000018372350?w=14...
摘要:根據(jù)配置文件,對(duì)接收到的警報(bào)進(jìn)行處理,發(fā)出告警。在默認(rèn)情況下,用戶只需要部署多套,采集相同的即可實(shí)現(xiàn)基本的。通過(guò)將監(jiān)控與數(shù)據(jù)分離,能夠更好地進(jìn)行彈性擴(kuò)展。參考文檔本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見 系統(tǒng)架構(gòu)圖 1.x版本的Prometheus的架構(gòu)圖為:showImg(https://segmentfault.com/img/remote/1460000018372350?w=14...
摘要:比如定義了基礎(chǔ)的數(shù)據(jù)類型以及對(duì)應(yīng)的方法收集事件次數(shù)等單調(diào)遞增的數(shù)據(jù)收集當(dāng)前的狀態(tài),比如數(shù)據(jù)庫(kù)連接數(shù)收集隨機(jī)正態(tài)分布數(shù)據(jù),比如響應(yīng)延遲收集隨機(jī)正態(tài)分布數(shù)據(jù),和是類似的庫(kù)的詳細(xì)解析可以參考本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見 概述 Prometheus從2016年加入CNCF,到2018年8月畢業(yè),現(xiàn)在已經(jīng)成為Kubernetes的官方監(jiān)控方案,接下來(lái)的幾篇文章將詳細(xì)解讀Promethu...
摘要:比如定義了基礎(chǔ)的數(shù)據(jù)類型以及對(duì)應(yīng)的方法收集事件次數(shù)等單調(diào)遞增的數(shù)據(jù)收集當(dāng)前的狀態(tài),比如數(shù)據(jù)庫(kù)連接數(shù)收集隨機(jī)正態(tài)分布數(shù)據(jù),比如響應(yīng)延遲收集隨機(jī)正態(tài)分布數(shù)據(jù),和是類似的庫(kù)的詳細(xì)解析可以參考本文為容器監(jiān)控實(shí)踐系列文章,完整內(nèi)容見 概述 Prometheus從2016年加入CNCF,到2018年8月畢業(yè),現(xiàn)在已經(jīng)成為Kubernetes的官方監(jiān)控方案,接下來(lái)的幾篇文章將詳細(xì)解讀Promethu...
閱讀 1465·2023-01-11 13:20
閱讀 1816·2023-01-11 13:20
閱讀 1269·2023-01-11 13:20
閱讀 2009·2023-01-11 13:20
閱讀 4228·2023-01-11 13:20
閱讀 2889·2023-01-11 13:20
閱讀 1489·2023-01-11 13:20
閱讀 3814·2023-01-11 13:20