iT邦幫忙

2024 iThome 鐵人賽

DAY 6
1
DevOps

Grafana Zero to Hero系列 第 6

Grafana Zero to Hero - Visualization:數據多樣性

  • 分享至 

  • xImage
  •  

此小節的範例與練習於 Lab 的 05 - Table06 - Log, Node Graph, Traces, Flame Graph Dashboard 中,可參考最下方 Lab 章節說明啟動。

Table

Table 是大家最熟悉的資料呈現方式之一,能夠一次性呈現大量資料。配置篩選與排序功能後,使用者可以快速找到需要的資訊。

Table

Grafana 的 Table 具備 Data Set Selector 達到類似分頁的功能,能夠在不同資料組間切換。

Data Set Selector

由於 Table 可以顯示任何數據類型,在 Panel 編輯頁中有一個 Table view 的開關,方便以 Table 格式檢查資料。這對於排除 Visualization 呈現問題,例如資料格式不符或視覺化效果不如預期時,特別有用。

Table view

若表格內有大量文字,可搭配 Cell Value Inspect 功能。啟用後,Hover 欄位時右側會出現一個眼睛的按鈕,點擊即可展開一個 Modal 查看完整內容。

Cell Value Inspect

Modal

Cell Options 與 Overrides

Table 提供了多種 Cell Type,可讓欄位有不同的呈現方式,例如文字上色、背景上色等。

Cell Type
背景上色效果

Cell Type
背景上色整排套用設定

實務中,一個 Table 中通常會有多個欄位,每個欄位可能需要不同的呈現方式、Threshold 設定或單位設定,針對整體的圖表設定可能不夠用。這時就可以使用 Visualization 的 Overrides 功能,針對特定欄位值進行額外的設定,例如呈現方式、單位等。

Overrides 的邏輯是先選定要變動的數據或欄位,然後再增加 Override Property 覆蓋原本的設定。選定欄位的方式有以下幾種:

  1. Fields with name:根據欄位名稱選定一個欄位,最常用的篩選方式。
  2. Fields with name matching regex:使用正規表示式篩選欄位名稱,可能篩選出多個欄位。
  3. Fields with type:根據欄位類型選擇,如字串、數字、時間,可能篩選出多個欄位。
  4. Fields returned by query:選擇某一組 Query 結果的所有欄位。
  5. Fields with values:根據指定的計算方式篩選,例如最大值、最小值等。

Overrides

瞭解如何篩選欄位後,可以針對每個欄位套用不同的設定。以下是 Cell Type 的完整清單:

  1. Color text:根據 Threshold 顯示文字顏色,啟用 Apply to entire row 可讓整條 Row 套用。
  2. Color background:根據 Threshold 顯示背景顏色,啟用 Apply to entire row 可讓整條 Row 套用。
  3. Gauge:將數值以 Bar Gauge 方式呈現,Display mode 可以選擇 Basic 單色 Bar、Gradient 漸層 Bar 或 Retro LCD 復古液晶顯示效果。Bar 顏色可針對欄位覆寫一組 Threshold。
  4. JSON View:搭配 Cell value inspect,開啟後 JSON 字串會有縮排與 Highlight,方便閱讀。
  5. Image:顯示圖片,可使用 圖片的 Base64 String 或圖片 URL。
  6. Sparkline:在欄位中顯示小折線圖,需搭配 Transformation Time series to Table,將時間序列轉換為折線圖。

Cell Type

JSON View with Modal
JSON View 搭配 Modal 顯示

Lab 練習

了解 State Timeline 與 Status History 的常用設定後,現在可以嘗試將 05 - Table Dashboard 中的 Practice Row 調整成右邊的樣子。

Practice

Logs

Logs 可以用來檢視 Log,,但必須包含時間欄位才能顯示。預設的 Log 排序是由新到舊,如果習慣由舊到新,也可以調整顯示順序。

Logs

Node Graph

Node Graph 能夠呈現有向圖適合顯示相依關係或資料流向,例如服務間的呼叫關係。資料格式必須符合 Nodes data frameEdges data frame 的結構。

Simple Node
簡單的 Node Graph 範例,Node 的必填欄位包括 id(代表該 Node),Edge 的必填欄位包括 id(代表該線段)以及 source 和 target 的 Node id。

Node
複雜的 Node Graph 範例

Traces

Traces 用來檢視分散式追蹤資料,並能檢視追蹤的詳細資料。後續介紹 Traces Data Source 時,會進一步說明。

Traces

Flame Graph

Flame Graph 所使用的視覺化方法是由 The USE Method 提出者 Brendan Gregg發明,主要用於顯示具有階層關係的資料,常用於程式效能分析(Profiling),例如顯示 CPU 或記憶體使用最多的程式片段。

Flame Graph
Brendan 發明的 Flame Graph,圖片來源:Brendan's site - Flame Graphs

Grafana 的 Pyroscope 能夠透過 SDK 或 eBPF 收集 Profiling 資料,這些資料可透過 Flame Graph 進行可視化。後續介紹 Pyroscope Data Source 時,將進一步說明。

Grafana Flame Graph

Lab

範例程式碼:https://github.com/blueswen/grafana-zero-to-hero/tree/main/03-dashboard

此 Lab 會建立

  1. cAdvisor:收集 Container 資料
  2. Node Exporter:收集運行的機器(Node)的資料
  3. Prometheus:採集 Application、cAdvisor、Node Exporter 的 Metrics
  4. Grafana:
    1. 操作各種預先建立的 Visualization 示範與練習 Dashboard
    2. 查詢與顯示 Prometheus 採集到的 Metrics

Quick Start

  1. 啟動所有服務

    docker-compose up -d
    
  2. 檢視服務

    1. Grafana: http://localhost:3000,登入帳號密碼為 admin/admin
      1. 點擊左上 Menu > Dashboards > Provision Dashboards 即可選擇預先建立的 Dashboard
  3. 關閉所有服務

    docker-compose down
    

上一篇
Grafana Zero to Hero - Visualization:What’s the pattern?
下一篇
Grafana Zero to Hero - Visualization:不只是圖表?!
系列文
Grafana Zero to Hero30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言