現象描述
在可觀測監控 Prometheus 版中添加了ServiceMonitor或PodMonitor之後,並未採集到期望的指標資料。
排查步驟
確認Target是否已經被發現。
在左側導覽列單擊執行個體列表,進入可觀測監控 Prometheus 版的執行個體列表頁面。
單擊目標Prometheus執行個體名稱,然後在左側導覽列單擊服務發現,然後單擊Targets頁簽,檢查相應的Target是否已經被發現。
若Target未被發現:
檢查ServiceMonitor或者PodMonitor是否已經啟用。
您可以在服務發現的配置頁簽單擊ServiceMonitor或者PodMonitor頁簽,若狀態如下圖(表徵圖①)所示,表示已啟用,則繼續執行下一步。
檢查定義的ServiceMonitor或者PodMonitor資源是否下發到ACK叢集。
在左側導覽列單擊叢集,然後在叢集列表頁面單擊目的地組群名稱。
在左側導覽列,選擇
。在資源定義頁簽單擊名稱列的ServiceMonitor或者PodMonitor超連結(表徵圖①),系統會跳轉至資來源物件瀏覽器頁簽,然後您需要選擇對應的命名空間,查看上一步驟中啟用的ServiceMonitor或者PodMonitor是否在列表中。
若不在列表中:您可以嘗試在可觀測監控 Prometheus 版控制台服務發現頁面配置頁簽的操作列重新開啟ServiceMonitor或者PodMonitor。
若在列表中,則執行下一步。
確認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
檢查連接埠設定。
若配置的連接埠參數為
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
欄位的值。
如圖所示:
若Target已經被發現,但顯示為紅色:
表示Prometheus抓取失敗,這種情況通常是由於Target自身問題導致,此時您需要根據Error列提示的異常原因進行排查。
若Target已經被發現,且State列顯示為UP(表徵圖①),但期望的指標依然未被採集到:
此時您可以單擊對應Target的Endpoint超連結(表徵圖②),系統會直接從Target拉取未經處理資料,然後您需要確認未經處理資料中是否存在期望的指標。若存在期望的指標,您可以在服務發現的指標頁簽中單擊右上方的配置廢棄指標,然後在彈出的對話方塊中檢查該指標是否在廢棄列表中,若在廢棄列表中,表示該指標已被人為廢棄,您可以刪除該指標重新啟用即可。具體操作,請參見啟用廢棄指標。
相關文檔
手動設定ServiceMonitor或PodMonitor服務發現,可參考管理Kubernetes叢集服務發現。
配置ServiceMonitor或PodMonitor服務發現後,您可能需要查看通過服務發現採集到的指標資訊,具體操作,請參見配置廢棄指標。
配置ServiceMonitor或PodMonitor服務發現後,可能會採集到您相應的指標,進而產生相關費用,更多計費詳情,請參見產品計費(新版)和產品計費(舊版)。