Grafana以及Prometheus 除錯方式

前言

最近在查個問題,然後就碰到grafana的圖表產不出來,
要撈出每個pod目前的記憶體使用量百分比是多少。
每個pod的記憶體使用量是多個,但總記憶體只有一個,
就開始找問題了。

正文

這個圖來自 Prometheus & Grafana No Data 排查手冊

197-fig.1.jpeg

我目前的排查方式,
通常都是先開prometheus,看指令有沒有資料,沒資料就表示寫錯。
有資料,在grafana 無法顯示,那就是grafana的問題。

目前碰到的問題是單個query都有資料,但湊在一起就沒了。
後來有問了一下GPT,
發現相除的話,要符合一些條件。


在 Grafana 中進行查詢的相除,需要確保以下條件:

  1. 兩個查詢的時間戳匹配: 確保兩個查詢的時間戳是對應的。如果時間戳不匹配,則查詢結果無法正確進行相除。

  2. 標籤匹配: 確保兩個查詢的標籤匹配。這包括時間戳的標籤,以及在使用 by() 子句進行分組時的標籤。如果標籤不匹配,查詢結果可能無法正確合併。

  3. 使用 ignoring()on() 子句: 如果有一些標籤不需要匹配,可以使用 ignoring()on() 子句。例如:

    A / ignoring(label_name) B
    
  4. 使用 group_leftgroup_right 子句: 如果需要在查詢中保留某些標籤,可以使用 group_leftgroup_right 以確保這些標籤在合併時保持一致。例如:

    A / B on(label_name) group_left(label_name)
    
  5. 確保查詢結果是數值: 確保兩個查詢返回的結果是數值,並且支持相除操作。

以下是一個簡單的例子,假設你有兩個查詢 A 和 B,要計算 A 中每個時間戳的值除以 B 中對應時間戳的值:

A / B

根據你的數據源和具體的需求,可能需要根據上述條件進行調整。這些條件有助於確保查詢結果的正確性。