此儲存庫已存檔,以支援 Grafana 9+ 版本中提供的內建外掛程式:狀態歷史記錄和狀態時間軸。這些外掛程式被社群用作 flant-statusmap 的替代品,請參閱問題 #302 以了解更多資訊。如果您認為這個外掛程式適合您的需求並想繼續開發它,請隨意建立一個分支。我們很高興看到您更進一步!
顯示多個目標隨時間變化的離散狀態的面板。
執行
docker compose up
並在瀏覽器中開啟 http://localhost:3000 以查看簡單的示範。
我們迫切需要視覺化一段時間內的一組時間序列狀態,以便我們可以看到物件狀態變化的歷史記錄。由於我們維護大量 Kubernetes 叢集(以及相關基礎架構),因此我們的主要案例是伺服器和 Kubernetes Pod 健康狀態的視覺化以及 HTTP 服務健康檢查。我們嘗試了各種可用的 Grafana 插件(它們在下面的致謝中列出),但它們都無法提供真正接近我們一直在尋找的功能和視覺化功能。
注意:您可以在這篇文章中找到有關我們創建插件的過程的更多詳細資訊。
使用此外掛程式視覺化的物件可能會有所不同:不僅是 IT 元件(例如伺服器主機和 Kubernetes Pod),還包括您可以想像到的任何東西,例如上圖中的咖啡機。這些物件應該具有離散狀態,即預先定義值的集合,例如ok
= 0、 off
= 1、 fail
= 2 等。
要建立整潔的圖表,您的資料來源應該會返回良好的資料。插件根據面板選項中的儲存桶寬度調整$__interval
變數。您的查詢應該在$__interval
上聚合狀態。
為了讓多值模式能如預期運作,您應該定義多個查詢:每個可能的狀態都有一個查詢。
插件目前不會及時聚合數據,它僅將輸入資料呈現為儲存桶。因此,資料應包含時間範圍內每個時間戳的點以及每個可能目標(y 軸標籤)的相等時間戳。此限制已由問題 #53 解決。
要使用來自 Prometheus 的數據,您需要為物件設定離散狀態。將這些狀態儲存在指標中的要求如下:
0
和1
;完成後,您可以透過查詢收集所有數據,例如:
(max_over_time(coffee_maker_status{status=""}[$__interval]) == 1) *
如果在查詢間隔期間沒有這樣的狀態(
),Prometheus 將不會傳回任何內容。否則,將傳回狀態值。
例如,如果2
3
4
0
1
coffee_maker_status
),則應使用下列規則轉換此指標:
- record: coffee_maker_status:discrete
expr: |
count_values("status", coffee_maker_status)
這就是值為3
coffee_maker_status
指標將如何轉換為新指標:
coffee_maker_status:discrete{status="3"} 1
現在,當 Prometheus 的每個狀態都有0
和1
值時,所有這些指標都可以聚合,因此您將隨著時間的推移獲得物件的所有可用狀態。
在“格式為”中選擇“時間序列”,並在查詢中使用GROUP BY ($__interval)
。 $tag_
可在「別名」中使用來定義 y 軸標籤。
透過$__interval
進行聚合的範例查詢如下(您需要對每個可能的狀態值進行一個查詢):
SELECT
$__timeGroupAlias(date_insert,$__interval),
name AS metric,
min(statusi) AS "statusi"
FROM coffee_makers
WHERE
$__timeFilter(date_insert) AND statusi=1
GROUP BY 1,2
ORDER BY $__timeGroup(date_insert,$__interval)
metric
列用作 y 軸標籤。
首先,應該為每個可能的狀態值建立單獨的查詢。每個查詢也應該有類似的分組圖例:
然後,應在離散顏色模式下定義狀態值的顏色映射:
使用者可以使用預設來定義交通燈顏色或日光調色板中的 8 種顏色:
注意:光譜和不透明度顏色模式的功能與熱圖插件中的功能相同。
多個值複選框指定它們的顯示方式:
顯示空值可以視為空桶或以0
值的顏色顯示。
最小寬度和間距用於指定最小桶寬度和桶之間的間距。倒圓角可用於使邊緣變圓。
值索引設定為正數以僅顯示指定時間序列中的值。
顯示圖例複選框可切換面板底部的圖例。
行排序可用於對 Y 軸上的標籤進行排序。指標 — 依照「指標」標籤上定義的方式對 y 標籤進行排序。 a→z 和 z→a 依自然順序降序或升序對標籤進行排序。
啟用分頁可切換圖表上的分頁控制項。
每頁行數在圖表上顯示的行數。
顯示工具提示可切換滑鼠懸停在儲存桶上時工具提示的顯示。
點擊時凍結可在點擊時切換工具提示「凍結」。凍結工具提示可用於將資料與浮動工具提示進行比較或追蹤 URL。
顯示項目切換工具提示中其他項目的顯示。
Items是在工具提示中顯示 URL 的定義清單。
每個 URL 都有一個範本、圖示、標籤和格式選項:變數的小寫和日期格式。
在某些情況下,狀態面板用於從一個儀表板轉到更具體的儀表板,例如在執行根本/原因分析時。在這種情況下,使用者可能希望縮小時間跨度的範圍,同時保持所需事件的中心(以便能夠分析之前/之後的時間段)。這些值是透過__bucket_from
和__bucket_to
引入的。
__bucket_from
:它是bucket.from
的值減去百分比bucket。 __bucket_to
:它是bucket.to
的值加上百分比bucket。
該插件的首次公開發布完全由 Flant 工程師製作。整個想法來自 Dmitry Stolyarov (@distol),初始版本由 Sergey Gnuskov (@gsmetal) 編寫,最終更改由 Ivan Mikheykin (@diafour) 進行。
該插件基於 Grafana 的「熱圖」面板,部分靈感來自地毯圖、離散面板、狀態面板、狀態點、狀態按組的想法。