如何通過Grafana大盤展示自訂指標並警示

更新時間:
Copy as MD

可觀測監控 Prometheus 版可以通過Grafana大盤來展示監控資料,並且支援自訂建立Grafana大盤和從Grafana官網匯入大盤兩種方式。本文以阿里雲Container ServiceK8s叢集和阿里雲Container Registry為例,介紹通過自訂Grafana大盤展示監控資料。

前提條件

操作流程

通過可觀測監控 Prometheus 版自訂Grafana大盤的操作流程如下圖所示。

自訂Grafana大盤

步驟一:上傳應用

將應用製作成鏡像並上傳至阿里雲Container Registry的鏡像倉庫的操作步驟如下:

  1. 執行以下命令重新編譯模組。
    mvn clean install -DskipTests
  2. 執行以下命令構建鏡像。
    docker build -t <本地臨時Docker鏡像名稱>:<本地臨時Docker鏡像版本號碼> . --no-cache
    樣本命令:
    docker build -t promethues-demo:v0 . --no-cache
  3. 執行以下命令為鏡像打標。
    sudo docker tag <本地臨時Docker鏡像名稱>:<本地臨時Docker鏡像版本號碼> <Registry網域名稱>/<命名空間>/<鏡像名稱>:<鏡像版本號碼>
    樣本命令:
    sudo docker tag promethues-demo:v0 registry.cn-hangzhou.aliyuncs.com/testnamespace/promethues-demo:v0
  4. 執行以下命令將鏡像推送至鏡像倉庫。
    sudo docker push <Registry網域名稱>/<命名空間>/<鏡像名稱>:<鏡像版本號碼>
    樣本命令:
    sudo docker push registry.cn-hangzhou.aliyuncs.com/testnamespace/promethues-demo:v0
    Container Registry控制台鏡像版本頁面顯示上傳的應用鏡像。鏡像

步驟二:部署應用

將應用部署至Container ServiceK8s叢集的操作步驟如下:

  1. 登入Container Service管理主控台

  2. 在左側導覽列,選擇叢集
  3. 叢集列表頁面,找到目的地組群,在其右側操作列單擊應用
  4. 建立容器組。
    1. 在左側導覽列,選擇工作負載 > 無狀態
    2. 無狀態頁面,單擊使用YAML建立資源
    3. 建立頁面的模板代碼框輸入以下內容,然後單擊建立
      apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
      kind: Deployment
      metadata:
        name: prometheus-demo
      spec:
        replicas: 2
        template:
          metadata:
            annotations:
              prometheus.io/scrape: 'true'
              prometheus.io/path: '/prometheus-metrics'
              prometheus.io/port: '8081'
            labels:
              app: tomcat
          spec:
            containers:
            - name: tomcat
              imagePullPolicy: Always
              image: <Registry網域名稱>/<命名空間>/<鏡像名稱>:<鏡像版本號碼>
              ports:
              - containerPort: 8080
                name: tomcat-normal
              - containerPort: 8081
                name: tomcat-monitor
      範例程式碼:
      apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
      kind: Deployment
      metadata:
        name: prometheus-demo
        labels:
          app: tomcat
      spec:
        replicas: 2
        selector:
          matchLabels:
            app: tomcat
        template:
          metadata:
            annotations:
              prometheus.io/scrape: 'true'
              prometheus.io/path: '/prometheus-metrics'
              prometheus.io/port: '8081'
            labels:
              app: tomcat
          spec:
            containers:
            - name: tomcat
              imagePullPolicy: Always
              image: registry.cn-hangzhou.aliyuncs.com/peiyu-test/prometheus-demo:v0
              ports:
              - containerPort: 8080
                name: tomcat-normal
              - containerPort: 8081
                name: tomcat-monitor
    無狀態頁面顯示建立的容器組。容器組
  5. 建立服務。
    1. 在左側導覽列,選擇網路 > 服務
    2. 服務頁面,單擊使用YAML建立資源
    3. 建立頁面的模板代碼框輸入以下內容,然後單擊建立
      apiVersion: v1
      kind: Service
      metadata:
        labels:
          app: tomcat
        name: tomcat
        namespace: default
      spec:
        ports:
        - name: tomcat-normal
          port: 8080
          protocol: TCP
          targetPort: 8080
        - name: tomcat-monitor
          port: 8081
          protocol: TCP
          targetPort: 8081
        type: NodePort
        selector:
          app: tomcat
    服務頁面顯示建立的服務。服務

步驟三:配置採集規則

可觀測監控 Prometheus 版會預設監控CPU資訊、記憶體資訊、網路資訊等。如果您需要監控預設資料外的其他資料,例如訂單資訊,那麼需要為應用自訂可觀測監控 Prometheus 版採集規則。

  1. 登入CloudMonitor控制台

  2. 在左側導覽列選擇Prometheus监控 > 实例列表,進入可觀測監控 Prometheus 版的執行個體列表頁面。

  3. 單擊目標Prometheus執行個體名稱。
  4. 為應用配置可觀測監控 Prometheus 版採集規則分為以下兩種情況。
    • 需要監控部署在K8s叢集內的應用的業務資料,例如訂單資訊。操作步驟如下:
      1. 在左側導航樹單擊服务发现,然後單擊配置頁簽。
      2. 配置頁面單擊ServiceMonitor頁簽,然後單擊添加ServiceMonitor
      3. 在彈出的對話方塊中輸入以下內容,然後單擊确定
        apiVersion: monitoring.coreos.com/v1
        kind: ServiceMonitor
        metadata:
          #  填寫一個唯一名稱
          name: tomcat-demo
          #  填寫目標命名空間
          namespace: default
        spec:
          endpoints:
          - interval: 30s
            #  填寫service.yamlPrometheus Exporter對應的PortName欄位的值
            port: tomcat-monitor
            #  填寫Prometheus Exporter對應的Path的值
            path: /metrics
          namespaceSelector:
            any: true
            #  Demo的命名空間
          selector:
            matchLabels:
              #  填寫service.yamlLabel欄位的值以定位目標service.yaml
              app: tomcat

        ServiceMonitor頁簽下顯示配置的服務發現。

        服務發現
    • 需要監控部署在K8s叢集之外的業務資料,如Redis串連數。操作步驟如下:
      1. 在左側導航樹單擊设置,然後在设置頁簽單擊编辑Prometheus.yaml
      2. 在彈出的對話方塊中輸入以下內容,然後單擊保存
        global:
          scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
          evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
        scrape_configs:
          - job_name: 'prometheus'
            static_configs:
            - targets: ['localhost:9090']

步驟四:配置大盤

配置Grafana大盤以展示資料的操作步驟如下:

  1. 開啟Grafana大盤概覽頁
    說明 您需要開通Grafana專家版大盤。
  2. 在左側導覽列選擇er > + New dashboard
  3. New dashboard頁面中單擊Add a new panel
  4. Edit Panel頁面的Query地區的下拉式清單中選擇叢集。在A摺疊面板的Metrics下拉式清單中選擇監控指標,例如:go_gc_duration_seconds
    Grafana Add Query
  5. 在頁面右側的地區,填寫圖表名稱,選擇大盤的可視化類型,如圖形、表格、熱點圖等,並根據您的需求配置其他參數。
    Create Dashboard Visualization
  6. 單擊右上方Save,在彈出的對話方塊中輸入大盤名稱,並選擇叢集,然後單擊Save

    您可根據需要自行建立多個大盤和圖表。

    Save Grafana Dashboard
    配置完畢後的Grafana大盤如圖所示。ARMS Prometheus Grafana Dashboard to Customize

步驟五:監控複雜指標

如果需要監控涉及複雜運算的指標,您需要在可觀測監控 Prometheus 版中進行資料調試,從而得到相應的PromQL語句。

  1. 開啟Grafana大盤概覽頁
  2. 在左側導覽列單擊Explore表徵圖。
  3. Explore頁面頂部下拉框中選擇叢集,然後在Metrics輸入框中輸入PromQL語句,單擊右上方的Run Query進行調試。
    Prometheus Data Debug
  4. 調試成功後,您可以參考上述步驟繼續添加大盤或圖表,具體操作,請參見步驟四:配置大盤

步驟六:建立警示

為監控指標建立警示規則,具體操作,請參見建立Prometheus警示規則