在Grafana中添加Prometheus資料

更新時間:
Copy as MD

可觀測監控 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中添加資料來源

在自建Grafana中添加資料來源

此處以10.x版本Grafana為例,其他版本Grafana添加資料來源的操作請參見Grafana官方文檔

  1. 配置Grafana資料來源。

    1. 以管理員帳號登入自建Grafana。

    2. 單擊頁面左上方的image表徵圖,然後選擇管理 - 資料來源

    3. 單擊+ Add new data source,然後選擇資料來源類型為Prometheus

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

    5. 設定安全增強。

      V1版本(可選)

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

      V2版本

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

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

  3. 查詢Prometheus指標。

    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

在可觀測可視化 Grafana 版中整合資料來源

阿里雲可觀測可視化 Grafana 版支援一鍵整合Prometheus資料來源和大盤。

  1. ARMS控制台Grafana服務 - 工作區管理頁面單擊工作區ID。

  2. 工作區資訊頁面的雲端服務整合地區單擊Prometheus監控服務,然後在對應執行個體右側單擊整合

  3. 在彈出的對話方塊中單擊確認

    如果本次操作涉及的Prometheus執行個體為V2版本,請填寫資料來源訪問AccessKey。

  4. 同步完成後,單擊右側的檔案夾

  5. GrafanaDashboards頁簽單擊大盤名稱可以查看應用監控預置的預設大盤。

  6. 單擊頁面左上方的image表徵圖,然後選擇管理 - 資料來源,可以查看已添加的應用監控資料來源。

  7. 查詢Prometheus指標。

    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中的secretKey格式為{AccessKey Secret}${STS Token}。更多資訊,請參見什麼是STS

返回樣本:

展開查看返回樣本

{
    "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***"
                ]
            }
        ]
    }