Grafana以及Prometheus 除錯方式
前言
最近在查個問題,然後就碰到grafana的圖表產不出來,
要撈出每個pod目前的記憶體使用量百分比是多少。
每個pod的記憶體使用量是多個,但總記憶體只有一個,
就開始找問題了。
正文
這個圖來自 Prometheus & Grafana No Data 排查手冊
我目前的排查方式,
通常都是先開prometheus,看指令有沒有資料,沒資料就表示寫錯。
有資料,在grafana 無法顯示,那就是grafana的問題。
目前碰到的問題是單個query都有資料,但湊在一起就沒了。
後來有問了一下GPT,
發現相除的話,要符合一些條件。
在 Grafana 中進行查詢的相除,需要確保以下條件:
-
兩個查詢的時間戳匹配: 確保兩個查詢的時間戳是對應的。如果時間戳不匹配,則查詢結果無法正確進行相除。
-
標籤匹配: 確保兩個查詢的標籤匹配。這包括時間戳的標籤,以及在使用
by()
子句進行分組時的標籤。如果標籤不匹配,查詢結果可能無法正確合併。 -
使用
ignoring()
或on()
子句: 如果有一些標籤不需要匹配,可以使用ignoring()
或on()
子句。例如:A / ignoring(label_name) B
-
使用
group_left
或group_right
子句: 如果需要在查詢中保留某些標籤,可以使用group_left
或group_right
以確保這些標籤在合併時保持一致。例如:A / B on(label_name) group_left(label_name)
-
確保查詢結果是數值: 確保兩個查詢返回的結果是數值,並且支持相除操作。
以下是一個簡單的例子,假設你有兩個查詢 A 和 B,要計算 A 中每個時間戳的值除以 B 中對應時間戳的值:
A / B
根據你的數據源和具體的需求,可能需要根據上述條件進行調整。這些條件有助於確保查詢結果的正確性。