可觀測監控 Prometheus 版提供了HTTP API地址,以便您在Grafana中接入Prometheus監控資料,或在二次開發過程中通過Prometheus API擷取監控資料。
前提條件
已接入Prometheus,具體操作,請參見:
步驟一:擷取HTTP API地址
-
登入CloudMonitor控制台,在左側導覽列選擇Prometheus 監控 - 執行個體列表,進入執行個體列表頁面。
-
在頁面頂部功能表列選擇Prometheus執行個體所在的地區,並在目的地組群右側的操作列單擊設定。
-
在設定頁簽上,根據需求複製公網或內網的HTTP API地址。
設定頁簽展示公網和內網兩類HTTP API地址,可按需複製。頁面同時提供產生token入口,使用Token可提升資料讀取安全性。
-
對於V1版本的Prometheus執行個體,如果您需要提高Grafana資料讀取的安全性,可以單擊產生token,擷取Prometheus執行個體的鑒權Token。
重要-
V1版本:產生Token後,在Grafana中添加資料來源時必須配置Token,否則無法讀取Prometheus的監控資料。
-
V2版本:預設必須使用帳號的AcessKey和SecretKey才能訪問資料,且AcessKey 所屬的RAM 使用者需擁有AliyunPrometheusMetricReadAccess 或 AliyunCloudMonitorFullAccess 系統角色許可權。
-
步驟二:在Grafana中添加資料來源
在自建Grafana中添加資料來源
此處以10.x版本Grafana為例,其他版本Grafana添加資料來源的操作請參見Grafana官方文檔。
-
配置Grafana資料來源。
-
以管理員帳號登入自建Grafana。
-
單擊頁面左上方的
表徵圖,然後選擇管理 - 資料來源。 -
單擊+ Add new data source,然後選擇資料來源類型為Prometheus。
-
在Settings頁簽的Name欄位中輸入自訂的名稱,在Prometheus server URL欄位中粘貼上文步驟一擷取的HTTP API地址。
-
設定安全增強。
V1版本(可選)
單擊+ Add header,在Custom HTTP Headers地區單擊+Add header,設定Header為Authorization,設定Value為步驟一擷取的鑒權Token。
V2版本
開啟Basic auth,並設定User為使用者的AccessKey,設定Password為使用者的SecretKey。
-
-
單擊頁簽底部的Save & Test。
-
查詢Prometheus指標。
-
登入本地Grafana系統。
-
單擊頁面左上方的
表徵圖,然後在左側導覽列中單擊Dashboards, -
單擊Dashboards頁面右側的New,然後在下拉式功能表中單擊New dashboard。
-
單擊+ Add visualization,在Select data source頁面選擇您建立的資料來源。
-
在Edit Panel頁面的Query頁簽下的A地區的Metrics欄位和Label filters欄位中輸入指標名稱和值,單擊Run queries進行查詢。
如果能顯示出相應指標的圖表,則說明操作成功。否則請檢查填寫的介面地址或Token是否正確,以及資料來源是否有Prometheus的監控資料。

-
在可觀測可視化 Grafana 版中整合資料來源
阿里雲可觀測可視化 Grafana 版支援一鍵整合Prometheus資料來源和大盤。
-
在ARMS控制台的Grafana服務 - 工作區管理頁面單擊工作區ID。
-
在工作區資訊頁面的雲端服務整合地區單擊Prometheus監控服務,然後在對應執行個體右側單擊整合。
-
在彈出的對話方塊中單擊確認。
如果本次操作涉及的Prometheus執行個體為V2版本,請填寫資料來源訪問AccessKey。
-
同步完成後,單擊右側的檔案夾。
-
在Grafana的Dashboards頁簽單擊大盤名稱可以查看應用監控預置的預設大盤。
-
單擊頁面左上方的
表徵圖,然後選擇管理 - 資料來源,可以查看已添加的應用監控資料來源。 -
查詢Prometheus指標。
-
登入本地Grafana系統。
-
單擊頁面左上方的
表徵圖,然後在左側導覽列中單擊Dashboards, -
單擊Dashboards頁面右側的New,然後在下拉式功能表中單擊New dashboard。
-
單擊+ Add visualization,在Select data source頁面選擇您建立的資料來源。
-
在Edit Panel頁面的Query頁簽下的A地區的Metrics欄位和Label filters欄位中輸入指標名稱和值,單擊Run queries進行查詢。
如果能顯示出相應指標的圖表,則說明操作成功。否則請檢查填寫的介面地址或Token是否正確,以及資料來源是否有Prometheus的監控資料。

-
步驟三:擷取Prometheus監控資料
調用Prometheus監控資料的請求樣本如下。更多使用HTTP API擷取Prometheus監控資料的操作,請參見開源版Prometheus HTTP API。
V1版本
GET {HTTP API}/api/v1/query
Accept: application/json
Content-Type: application/json
Authorization: {Token}
{
"query":"arms_prometheus_target_interval_length_seconds_sum",
"time":"1635302655",
"timeout":"1000"
}
{HTTP API}和{Token}請替換為上文步驟一擷取的HTTP API和鑒權Token。
V2版本
GET {HTTP API}/api/v1/query
Accept: application/json
Content-Type: application/json
Authorization: Basic <base64Encode(<accessKey:secretKey>)>
{
"query":"arms_prometheus_target_interval_length_seconds_sum",
"time":"1635302655",
"timeout":"1000"
}
除了上述 HTTP 要求樣本,也可以使用 Python 的 requests 庫調用 Prometheus HTTP API 擷取監控資料。
V2 版本(Basic Auth 鑒權)
import base64
import requests
http_api_url = "{http_api_url}" # 替換為步驟一擷取的HTTP API地址
access_key = "{AccessKey}"
secret_key = "{SecretKey}"
auth_str = f"{access_key}:{secret_key}"
auth_header = base64.b64encode(auth_str.encode("utf-8")).decode("utf-8")
headers = {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": f"Basic {auth_header}"
}
params = {
"query": "up"
}
response = requests.get(f"{http_api_url}/api/v1/query", headers=headers, params=params)
result = response.json()
print(result["status"])
print(result["data"]["result"])
{http_api_url} 請替換為上文步驟一擷取的 HTTP API 地址,{AccessKey} 和 {SecretKey} 請替換為 AccessKey 和 SecretKey。API 介面支援 STS 鑒權,此時 Basic Auth 中的 secretKey 格式為 {AccessKey Secret}:{SecretKey}:{STS Token}。
V1 版本(Token 鑒權)
import requests
http_api_url = "{http_api_url}" # 替換為步驟一擷取的HTTP API地址
token = "{token}" # 替換為步驟一擷取的鑒權Token
headers = {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": token
}
params = {
"query": "up"
}
response = requests.get(f"{http_api_url}/api/v1/query", headers=headers, params=params)
result = response.json()
print(result["status"])
print(result["data"]["result"])
{http_api_url} 和 {token} 請替換為上文步驟一擷取的 HTTP API 地址和鑒權 Token。
返回樣本: