全部產品
Search
文件中心

Managed Service for Prometheus:為什麼配置的ServiceMonitor或PodMonitor未生效?

更新時間:Nov 20, 2024

現象描述

可觀測監控 Prometheus 版中添加了ServiceMonitor或PodMonitor之後,並未採集到期望的指標資料。

排查步驟

確認Target是否已經被發現。

  1. 登入Prometheus控制台

  2. 在左側導覽列單擊執行個體列表,進入可觀測監控 Prometheus 版的執行個體列表頁面。

  3. 單擊目標Prometheus執行個體名稱,然後在左側導覽列單擊服務發現,然後單擊Targets頁簽,檢查相應的Target是否已經被發現。

    • 若Target未被發現

      1. 檢查ServiceMonitor或者PodMonitor是否已經啟用。

        您可以在服務發現配置頁簽單擊ServiceMonitor或者PodMonitor頁簽,若狀態如下圖(表徵圖①)所示,表示已啟用,則繼續執行下一步。vr

      2. 檢查定義的ServiceMonitor或者PodMonitor資源是否下發到ACK叢集。

        1. 登入Container Service管理主控台

        2. 在左側導覽列單擊叢集,然後在叢集列表頁面單擊目的地組群名稱。

        3. 在左側導覽列,選擇工作負載 > 自訂資源

        4. 資源定義頁簽單擊名稱列的ServiceMonitor或者PodMonitor超連結(表徵圖①),系統會跳轉至資來源物件瀏覽器頁簽,然後您需要選擇對應的命名空間,查看上一步驟中啟用的ServiceMonitor或者PodMonitor是否在列表中。de

          • 若不在列表中:您可以嘗試在可觀測監控 Prometheus 版控制台服務發現頁面配置頁簽的操作列重新開啟ServiceMonitor或者PodMonitor。

          • 若在列表中,則執行下一步。

      3. 確認Label Selector是否能選擇到期望的Pod或者Service。

        執行以下命令,觀察返回結果,若無返回結果,則需要調整Label Selector或Namespace Selector,即可篩選出期望的Pod或者Service。

        # 如果namespace selector中any設定為true。
        kubectl get pod/service -l label_key=label_value -A
        # 如果指定了namespace, 則使用指定的namespace。
        kubectl get pod/service -l label_key=label_value -n xx_namespace_xx
      4. 檢查連接埠設定。

        • 若配置的連接埠參數為port欄位,需要指定為pod定義中spec.containers[i].ports[i].name欄位的值,或services定義中spec.ports[i].name欄位的值。

        • 若配置的連接埠參數為targetPort欄位,需要指定為pod定義中spec.containers[i].ports[i].containerPort的值,或services定義中 spec.ports[i].targetPort欄位的值。

        如圖所示:

        image.png

    • 若Target已經被發現,但顯示為紅色vrh

      表示Prometheus抓取失敗,這種情況通常是由於Target自身問題導致,此時您需要根據Error列提示的異常原因進行排查。

    • 若Target已經被發現,且State列顯示為UP(表徵圖①),但期望的指標依然未被採集到vl

      此時您可以單擊對應Target的Endpoint超連結(表徵圖②),系統會直接從Target拉取未經處理資料,然後您需要確認未經處理資料中是否存在期望的指標。若存在期望的指標,您可以在服務發現指標頁簽中單擊右上方的配置廢棄指標,然後在彈出的對話方塊中檢查該指標是否在廢棄列表中,若在廢棄列表中,表示該指標已被人為廢棄,您可以刪除該指標重新啟用即可。具體操作,請參見啟用廢棄指標

相關文檔