ARMS控制台全面擁抱開源,針對高定製需求情境(例如自訂可觀測大盤),本文提供了一份基於Grafana + Prometheus的解決方案案例,以及如何自訂查詢語句用於擷取資料的樣本。
背景資訊
阿里雲可觀測監控 Prometheus 版預設整合了ARMS應用監控資料來源,您可以直接在可觀測監控 Prometheus 版下擷取應用監控相關資料、查看應用監控預置大盤,並根據需求進行二次開發。
前提條件
ARMS應用監控服務會根據地區自動建立免費的阿里雲Prometheus執行個體,如下圖所示應用監控杭州對應的所有資料指標都會存入Prometheus監控杭州地區下的arms_metrics_cn-hangzhou_cloud_hangzhou執行個體中。
使用情境
-
需要基於ARMS應用監控的資料指標重新繪製資料大盤。
-
在日常營運工作中,通過將ARMS應用監控的資料指標與其他資料來源特定組件的資料指標相結合,繪製專屬資料大盤。
-
在網站流量峰值來臨前期,通過將ARMS應用監控的資料指標與其他資料來源的上下遊組件的指標相結合,繪製特定情境下資料大盤。
-
在自建Grafana上展示通過Prometheus監控擷取的ARMS應用監控資料。
-
對Prometheus監控中擷取的ARMS應用監控資料進行二次開發。
前提條件
自訂可視化大盤
步驟一:在Grafana中添加應用監控資料來源
由於阿里雲可觀測監控 Prometheus 版預設整合了應用監控資料來源,此處只需在Grafana中添加可觀測監控 Prometheus 版下應用監控對應執行個體的資料來源。
在自建Grafana中添加資料來源
-
擷取Prometheus HTTP API。
-
在ARMS控制台的頁面頂部功能表列選擇應用接入的地區。
執行個體類型為Prometheus for 應用監控的執行個體即為預設整合的應用監控執行個體。
-
單擊應用監控執行個體名稱,然後單擊左側導覽列的設定,查看HTTP API地址。
在 設定 頁面底部的 HTTP API地址(Grafana 讀取地址) 地區,可擷取公網和內網兩種URL地址。
-
(可選)如果您需要提高Grafana資料讀取的安全性,可以單擊生成token,擷取Prometheus執行個體的鑒權Token。
重要產生Token後,在Grafana中添加資料來源時必須配置Token,否則無法讀取Prometheus的監控資料。
-
-
在Grafana中添加Prometheus資料來源。
此處以10.x版本Grafana為例,其他版本Grafana添加資料來源的操作請參見Grafana官方文檔。
-
以管理員帳號登入自建Grafana。
-
單擊頁面左上方的
表徵圖,然後選擇。 -
單擊+ Add new data source,然後選擇資料來源類型為Prometheus。
-
在Settings頁簽的Name欄位中輸入自訂的名稱,在Prometheus server URL欄位中粘貼上一步擷取的HTTP API地址。
-
(可選)在Custom HTTP Headers地區單擊+Add header,設定Header為Authorization,設定Value為上一步擷取的鑒權Token。
-
單擊頁簽底部的Save & Test。
-
在可觀測可視化 Grafana 版中整合資料來源
阿里雲可觀測可視化 Grafana 版支援一鍵整合ARMS應用監控資料來源和大盤。
-
在ARMS控制台的頁面單擊工作區ID。
-
在工作区信息頁面的云服务集成地區單擊ARMS應用監控服務,然後在對應地區的執行個體右側單擊集成。
-
在彈出的對話方塊中單擊确认。
-
同步完成後,單擊右側的文件夹。
-
在Grafana的Dashboards頁簽單擊大盤名稱可以查看應用監控預置的預設大盤。
應用監控預置的預設大盤包括 DB、應用、介面、機器 四個儀錶盤。
-
單擊頁面左上方的
表徵圖,然後選擇,可以查看已添加的應用監控資料來源。添加成功後,資料來源列表中將顯示類型為 Prometheus 的資料來源,名稱格式類似
arms_metrics_cn-hangzhou_cloud_hangzhou_xxx,對應 URL 為http://cn-hangzhou.arms.aliyuncs.com:9090/api/v1/prometheus/<執行個體ID>。
步驟二:配置自訂大盤
-
在Grafana中單擊頁面左上方的
表徵圖,然後單擊儀表板。 -
在儀表板頁面選擇,在New dashboard頁面單擊添加可視化建立面板。
-
在彈出的Select data source對話方塊中選擇應用監控資料來源,資料來源名稱預設為arms_metrics_{regionid}_cloud。
重要請確認當前資料來源中已有資料。
-
在摺疊面板A下設定查詢指標。
通過PromQL查詢語句設定
Code模式下在Metrics browser右側直接輸入PromQL查詢語句。
在ARMS控制台應用監控的監控詳情頁面單擊
表徵圖可以查看指標對應的PromQL語句。更多資訊,請參見查詢語句。例如,展開請求數指標面板後,可在 PromQL 查詢編輯地區看到對應的查詢語句,如
sum by (callType,)(sum_over_time_lorc(arms_app_requests_count_ign_destid_endpoint_ppid_prpc{pid="...",callKind=~"http|rpc|custom_entry|server|consumer|schedule",source="apm"}[1m]))。更多PromQL查詢語句的使用方法,請參見Prometheus官方文檔。
通過應用監控指標設定
Builder模式下在Metric下拉框中選擇具體的指標,例如
arms_jvm_threads_count,查詢JVM線程數。應用監控支援的指標詳情,請參見應用監控指標說明。在 Label filters 地區設定標籤過濾條件(例如
host= 目標 IP),下方自動產生對應的 PromQL 查詢語句,如arms_jvm_threads_count{host="xxx.xxx.xx.67"}。 -
在右側地區設定面板Title,並選擇展示的圖表類型。
說明同一資料指標,選擇不同的圖表類型,可以獲得不同顆粒度的資料圖表。
在面板編輯器右側配置地區,將可視化類型選擇為 Time series,並在 Panel options 地區的 Title 輸入框中填寫 JVM Threads Count。
-
設定完成後,單擊右上方的Apply。
自訂查詢語句
根據ARMS控制台擷取到的Prometheus HTTP API和PromQL語句,您可以通過Shell指令碼或Java編碼進行HTTP請求,對擷取到結果資料做進一步定製處理。
例如,Prometheus HTTP API地址為https://cn-hangzhou.arms.aliyuncs.com:9443/api/v1/prometheus/7a8f8e783c66a44a0f6a1dc9a0b8f1/1277589232893727/arms-metrics-99214ff7de7d0b2d/cn-hangzhou,與PromQL按以下格式進行組合:
{{Prometheus HTTP API}}/api/v1/query_range?query={{PromQL}}&start={{startTime}}&end={{endTime}}&step={{step}}。
得到如下查詢語句:
https://cn-hangzhou.arms.aliyuncs.com:9443/api/v1/prometheus/7a8f8e783c66a44a0f6a1dc9a0b8f1/1277589232893727/arms-metrics-99214ff7de7d0b2d/cn-hangzhou/api/v1/query_range?query=sum by (callType,)(sum_over_time_lorc(arms_app_requests_count_ign_destid_endpoint_ppid_prpc{pid="ckv8e2vzfj@7e393063f3fd6ad",serverIp=~".*",callKind=~"http|rpc|custom_entry|server|consumer|schedule",source="apm", }[1m]))&start=1728719399&end=1728722999&step=60s
查詢到的資料樣本:
{"status":"success","data":{"resultType":"matrix","result":[{"metric":{"callType":"http"},"values":[[1728719399,"1575"],[1728719459,"1599"],[1728719519,"1593"],[1728719579,"1584"],[1728719639,"1578"],[1728719699,"1568"],[1728719759,"1561"],[1728719819,"1555"],[1728719879,"1547"],[1728719939,"1540"],[1728719999,"1533"],[1728720059,"1524"],[1728720119,"1518"],[1728720179,"1512"],[1728720239,"1503"],[1728720299,"1497"],[1728720359,"1491"],[1728720419,"1482"],[1728720479,"1476"],[1728720539,"1467"],[1728720599,"1464"],[1728720659,"1453"],[1728720719,"1448"],[1728720779,"1443"],[1728720839,"1434"],[1728720899,"1428"],[1728720959,"1419"],[1728721019,"1416"],[1728721079,"1407"],[1728721139,"1401"],[1728721199,"1395"],[1728721259,"1389"],[1728721319,"1381"],[1728721379,"1374"],[1728721439,"1366"],[1728721499,"1367"],[1728721559,"1350"],[1728721619,"1350"],[1728721679,"1344"],[1728721739,"1335"],[1728721799,"1331"],[1728721859,"1324"],[1728721919,"1320"],[1728721979,"1314"],[1728722039,"1305"],[1728722099,"1302"],[1728722159,"1296"],[1728722219,"1287"],[1728722279,"1284"],[1728722339,"1233"],[1728722399,"1272"],[1728722459,"1155"],[1728722519,"1116"],[1728722579,"1110"],[1728722639,"1107"],[1728722699,"1098"],[1728722759,"1095"],[1728722819,"1086"],[1728722879,"1083"],[1728722939,"1077"],[1728722999,"1184"]]}]}}
常見問題
查詢是否免費?
免費
PromQL查詢是否有限流
有限流防護,但不是根據入口的QPS做的限制,不同的查詢消耗不一樣。建議盡量避免耗時高的查詢(例如查詢全部介面或者查詢30天以上範圍時間資料),入口查詢控制在50 QPS以內。如果有不可避免的持續高消耗的查詢,可以提前提交工單申請擴容。