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地址。
(可選)如果您需要提高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頁簽單擊大盤名稱可以查看應用監控預置的默認大盤。
單擊頁面左上角的圖標,然后選擇
,可以查看已添加的應用監控數據源。
步驟二:配置自定義大盤
在Grafana中單擊頁面左上角的圖標,然后單擊儀表板。
在儀表板頁面選擇
,在New dashboard頁面單擊添加可視化創建面板。在彈出的Select data source對話框中選擇應用監控數據源,數據源名稱默認為arms_metrics_{regionid}_cloud。
重要請確認當前數據源中已有數據。
在折疊面板A下設置查詢指標。
通過PromQL查詢語句設置
Code模式下在Metrics browser右側直接輸入PromQL查詢語句。
在ARMS控制臺應用監控的監控詳情頁面單擊圖標可以查看指標對應的PromQL語句。更多信息,請參見查詢語句。
更多PromQL查詢語句的使用方法,請參見Prometheus官方文檔。
通過應用監控指標設置
Builder模式下在Metric下拉框中選擇具體的指標,例如
arms_jvm_threads_count
,查詢JVM線程數。應用監控支持的指標詳情,請參見應用監控指標說明。在Label filters區域選擇具體維度的標簽和標簽值。
在右側區域設置面板Title,并選擇展示的圖表類型。
說明同一數據指標,選擇不同的圖表類型,可以獲得不同顆粒度的數據圖表。
設置完成后,單擊右上角的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
查詢到的數據示例:
常見問題
查詢是否免費?
免費
PromQL查詢是否有限流
有限流防護,但不是根據入口的QPS做的限制,不同的查詢消耗不一樣。建議盡量避免耗時高的查詢(例如查詢全部接口或者查詢30天以上范圍時間數據),入口查詢控制在50 QPS以內。如果有不可避免的持續高消耗的查詢,可以提前提交工單申請擴容。