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