全部產品
Search
文件中心

Managed Service for Prometheus:使用HTTP API地址對接Grafana或自建應用中接入Prometheus資料

更新時間:Aug 18, 2026

可觀測監控 Prometheus 版提供了HTTP API地址,以便您在自建的Grafana中接入Prometheus監控資料,或在二次開發過程中通過Prometheus API擷取監控資料。

前提條件

已接入Prometheus,具體操作,請參見:

步驟一:擷取HTTP API地址

  1. 登入CloudMonitor控制台,在左側導覽列選擇Prometheus 監控 - 執行個體列表,進入執行個體列表頁面。

  2. 在頁面頂部功能表列選擇Prometheus執行個體所在的地區,並在目的地組群右側的操作列單擊設定

  3. 設定頁簽上,根據需求複製公網或內網的HTTP API地址。

    設定頁簽展示公網和內網兩類HTTP API地址,可按需複製。頁面同時提供產生token入口,使用Token可提升資料讀取安全性。

  4. 對於V1版本的Prometheus執行個體,如果您需要提高Grafana資料讀取的安全性,可以單擊產生token,擷取Prometheus執行個體的鑒權Token。

    重要

步驟二:接入自建Grafana

  1. 配置Grafana資料來源。

    1. 以管理員帳號登入本地Grafana系統。

    2. 單擊頁面左上方的image表徵圖。

    3. 在左側導覽列中選擇Configuration > Data Sources

      說明

      僅管理員可以看到此菜單。

    4. Data Sources頁簽上單擊+ Add new data source

    5. Add data source頁面上單擊Prometheus

    6. Settings頁簽的Name欄位中輸入自訂的名稱,在Prometheus server URL欄位中粘貼上文步驟一:擷取HTTP API地址中獲得的HTTP API地址。

    7. 設定安全增強。

      V1版本(可選)

      單擊+ Add header,在Custom HTTP Headers地區單擊+Add header,設定HeaderAuthorization,設定Value為步驟一:擷取HTTP API地址中擷取的鑒權Token。

      image

      V2版本

      開啟Basic auth,並設定User為使用者的AccessKey,設定Password為使用者的SecretKey。

      image

  2. 單擊頁簽底部的Save & Test

  3. 驗證結果。

    1. 登入本地Grafana系統。

    2. 單擊頁面左上方的image表徵圖,然後在左側導覽列中單擊Dashboards

    3. 單擊Dashboards頁面右側的New,然後在下拉式功能表中單擊New dashboard

    4. 單擊+ Add visualization,在Select data source頁面選擇您建立的資料來源。

    5. Edit Panel頁面的Query頁簽下的A地區的Metrics欄位和Label filters欄位中輸入指標名稱和值,單擊Run queries進行查詢。

      如果能顯示出相應指標的圖表,則說明操作成功。否則請檢查填寫的介面地址或Token是否正確,以及資料來源是否有Prometheus的監控資料。

      image

步驟三:擷取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 API}替換為上文步驟一擷取的HTTP API。

  • API介面支援STS鑒權。此時BasicAuth中的密鑰格式為{存取金鑰Secret}${STS Token}。更多資訊,請參見什麼是STS?

除通過HTTP請求直接調用外,也可以使用Python的requests庫,通過Basic Auth調用Prometheus HTTP API,樣本如下:

import requests
import time

# 從控制台擷取HTTP API地址
api_url = 'http://cn-hangzhou.arms.aliyuncs.com:9090/api/v1/prometheus/{token}/{user_id}/{cluster_id}/{region}'

# AccessKey ID作為使用者名稱,AccessKey Secret作為密碼
ak_id = 'your_access_key_id'
ak_secret = 'your_access_key_secret'

# 查詢指標
resp = requests.get(f'{api_url}/api/v1/query', params={'query': 'up'}, auth=(ak_id, ak_secret))
print(resp.json())

# 範圍查詢(最近1小時)
end = int(time.time())
start = end - 3600
resp = requests.get(f'{api_url}/api/v1/query_range', params={'query': 'up', 'start': start, 'end': end, 'step': '60s'}, auth=(ak_id, ak_secret))
print(resp.json())

返回樣本:

展開查看返回樣本

{
    "status": "success",
    "data": {
        "resultType": "vector",
        "result": [
            {
                "metric": {
                    "__name__": "arms_prometheus_target_interval_length_seconds_sum",
                    "instance": "localhost:9335",
                    "interval": "15s",
                    "job": "_arms-prom/kubelet/1"
                },
                "value": [
                    1635302655,
                    "146655.24420603***"
                ]
            },
            {
                "metric": {
                    "__name__": "arms_prometheus_target_interval_length_seconds_sum",
                    "instance": "localhost:9335",
                    "interval": "30s",
                    "job": "_arms-prom/kubelet/1"
                },
                "value": [
                    1635302655,
                    "879810.747346***"
                ]
            },
            {
                "metric": {
                    "__name__": "arms_prometheus_target_interval_length_seconds_sum",
                    "instance": "localhost:9335",
                    "interval": "20s",
                    "job": "_arms-prom/kubelet/1"
                },
                "value": [
                    1635302655,
                    "73320.13578499***"
                ]
            }
        ]
    }
}