本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立第一個儀表板
建立儀表板
請依照下列步驟在 Grafana 主控台中建立儀表板。
建立您的第一個儀表板
-
選擇左側面板上的 + 圖標,選擇「創建儀表板」,然後選擇「添加新面板」。
-
在「新儀表板/編輯面板」檢視中,選擇「查詢」頁籤。
-
透過選取您要查詢的資料來源來設定您的查詢。例如,如果您已將 TestDB 新增為資料來源,則會產生一個稱為「隨機漫遊」儀表板的範例儀表板窗格。
時間序列簡介
想像一下,您想知道外部溫度在一天中如何變化。每小時一次,您將檢查溫度計並記下時間以及當前溫度。一段時間後,你會有類似下面的數據。
時間 | Value |
---|---|
09:00 | 24℃ |
10:00 | 攝氏 26 度 |
11:00 | 攝氏 27 度 |
像這樣的溫度資料是時間序列的其中一個範例 — 測量順序,按時間排序。表格中的每一列都代表特定時間的一個個別測量。
當您想要識別個別量測時,表格非常有用,但它們可能會使您難以查看大圖。較常見的時間序列視覺效果是圖形,而是沿著時間軸放置每個量測。視覺表現法 (例如圖表) 可讓您更輕鬆地探索資料的陣列和特徵,否則將難以查看。
時間序列的其他範例包括:
-
CPU 和記憶體使用量
-
感應器資料
-
股市指數
雖然這些範例中的每一個都是按時間順序排列的量測序列,但它們也共用其他屬性:
-
新資料會以常規間隔附加到最後,例如,每小時 09:00、10:00、11:00 等等。
-
測量值在新增之後很少更新。例如,昨天的溫度不會改變。
時間序列很強大。它們可以讓您隨時分析系統的狀態,幫助您了解過去。時間序列可能會告訴您,伺服器在可用磁碟空間降至零之後當機的片刻。
時間序列還可以通過發現數據中的趨勢來幫助您預測 future。例如,如果在過去幾個月中,註冊使用者數量每月增加了 4%,您可以預測在今年年底您的使用者群數量有多大。
某些時間序列具有在已知時期內重複自己的模式。例如,白天的溫度通常較高,在夜間下降之前。透過識別這些週期性或季節性的時間序列,您可以對下一個週期做出有信心的預測。如果您知道系統負載每天在 18:00 左右達到峰值,則可以在之前添加更多機器。
聚合時間序列
根據您要測量的內容,資料可能會有很大的不同。如果您想要比較長於測量之間間隔的期間,該怎麼辦? 如果您每小時測量一次溫度,則每天將獲得 24 個數據點。要比較這些年來 8 月份的溫度,您必須將 31 次 24 個數據點合併為一個。
結合測量的集合稱為聚合。彙總時間序列資料的方法有數種。以下是一些常見的:
-
平均值會傳回所有值除以值總數的總和。
-
最小值和最大返回集合中的最小值和最大值。
-
Sum 返回集合中所有值的總和。
-
計數返回集合中的值的數量。
例如,透過彙總一個月的資料,您可以判斷 2017 年 8 月的平均溫度比前一年高。如果您想查看哪個月的最高溫度,則可以比較每個月的最高溫度。
如何彙總時間序列資料是一項重要的決定,這取決於您要用資料說明的故事。通常使用不同的彙總,以不同的方式視覺化相同的時間序列資料。
時間序列和監控
在 IT 產業中,通常會收集時間序列資料以監控基礎架構、硬體或應用程式事件等事件。機器產生的時間序列資料通常會以較短的間隔收集,因此您可以對任何未預期的變更 (即發生後的瞬間) 做出反應。資料會以快速的速度累積,因此有一種方法能夠有效地儲存和查詢資料至關重要。因此,針對時間序列資料最佳化的資料庫近年來受歡迎程度有所提升。
時間序列資料庫
時間序列資料庫 (TSDB) 是專為時間序列資料而明確設計的資料庫。雖然可以使用任何常規數據庫來存儲測量值,但 TSDB 帶有一些有用的優化。
現代 TSDBS 利用這樣一個事實,即測量只會附加,並且很少更新或刪除。例如,每個測量的時間戳記會隨著時間的推移而變化很少,因此會儲存多餘的資料。
下面的例子顯示了 Unix 時間戳的序列。
1572524345, 1572524375, 1572524404, 1572524434, 1572524464
看看這些時間戳記,它們都從開始1572524
,導致磁盤空間使用不良。相反地,您可以將每個後續時間戳記儲存為第一個時間戳記的差異或增量,如下列範例所示。
1572524345, +30, +29, +30, +30
您甚至可以通過計算這些增量的增量來進一步採取一步,如以下示例所示。
1572524345, +30, -1, +1, +0
如果以定期間隔進行測量,則其中大多數 delta-of-deltas 將為 0。由於像這樣的優化,TSDB 使用的空間大大少於其他數據庫。
TSDB 的另一個功能是能夠使用標籤篩選測量結果。每個資料點都會標示一個標籤,該標籤會新增上下文資訊,例如測量的位置。
以下是由 Grafana 支援的 TSDB:
-
weather,location=us-midwest temperature=82 1465839830100400200 | -------------------- -------------- | | | | | | | | | +-----------+--------+-+---------+-+---------+ |measurement|,tag_set| |field_set| |timestamp| +-----------+--------+-+---------+-+---------+
收集時間序列資料
現在您有一個存儲時間序列的地方,您實際上如何收集測量結果? 若要收集時間序列資料,您通常會在要監視的裝置、機器或執行個體上安裝收集器。某些收集器是在考慮到特定數據庫的情況下創建的,有些收集器支持不同的輸出目的
以下是收藏家的一些例子:
收集器可以將資料推送至資料庫,或是讓資料庫從收集器中提取資料。每種方法都有自己的一套優點和缺點。
優點 | 缺點 | |
---|---|---|
推送 | 更容易將數據複製到多個目的地。 | TSDB 無法控制傳送多少資料。 |
提取 | 更好地控制擷取資料量和資料真實性的方式。 | 防火牆、VPN 或負載平衡器可能會使其難以存取代理程式。 |
由於將每個度量寫入資料庫的效率低下,因此收集器會預先彙總資料並定期寫入 TSDB。
時間序列維度
對於時間序列資料,資料通常是一組多個時間序列。許多 Grafana 資料來源都支援此類型的資料。
常見的情況是針對具有一個或多個其他屬性作為尺寸的測量發出單一查詢。例如,您可以查詢溫度測量值以及位置性質。在此情況下,會從該單一查詢傳回多個序列,而且每個序列都有唯一的位置作為維度。
為了識別一組時間序列中的唯一序列,Grafana 會將尺寸儲存在標籤中。
標籤
在 Grafana 每個時間序列任選地都有標籤。標示是用於識別尺寸的一組鍵值對。範例標示為{location=us}
或{country=us,state=ma,city=boston}
。在一組時間序列中,其名稱和標籤的組合可識別每個序列。例如 temperature {country=us,state=ma,city=boston}
。
不同的時間序列資料來源具有以原生方式儲存的維度,或可將資料擷取至維度的常見儲存模式。
通常,TSDBS 本身支持維度。Prometheus 將尺寸儲存在標籤中。在諸如石墨或 OpenTSDB 之類的 TSDB 中,代替使用術語標籤。
在表數據庫這樣的 SQL,這些維度通常是查詢的GROUP
BY
參數。
表格格式的多個維度
在傳回資料表回應的 SQL 或類似 SQL 的資料庫中,其他維度通常是查詢回應資料表中的資料行。
單一維度
例如,請考慮如下列範例所示的查詢。
SELECT BUCKET(StartTime, 1h), AVG(Temperature) AS Temp, Location FROM T GROUP BY BUCKET(StartTime, 1h), Location ORDER BY time asc
查詢可能會傳回含有三個資料行的資料表。
StartTime | 暫存 | 位置 |
---|---|---|
09:00 | 24 | LGA |
09:00 | 20 | 博士 |
10:00 | 26 | LGA |
10:00 | 22 | 博士 |
表格格式是長格式化的時間序列,也稱為 tall。它具有重複的時間戳,並在位置重複值。在這種情況下,集合中的兩個時間序列將被識別為Temp {Location=LGA}
和Temp
{Location=BOS}
。
可使用下列維度萃取集中的個別時間序列:
-
時間類型資料欄
StartTime
作為時間序列的時間索引 -
數字鍵入列
Temp
作為系列名稱 -
用於構建標籤的字符串類型
Location
列的名稱和值,例如位置 = LGA
多重維度
如果查詢已更新為依據一個以上的字串欄 (例如,GROUP BY BUCKET(StartTime, 1h), Location,
Sensor
) 來選取和分組,則會新增其他維度。
StartTime | 暫存 | 位置 | 感測器 |
---|---|---|---|
09:00 | 24 | LGA | A |
09:00 | 24.1 | LGA | B |
09:00 | 20 | 博士 | A |
09:00 | 20.2 | 博士 | B |
10:00 | 26 | LGA | A |
10:00 | 26.1 | LGA | B |
10:00 | 22 | 博士 | A |
10:00 | 22.2 | 博士 | B |
在這種情況下,代表維度的標籤根據兩個字符串類型的列具有兩個鍵,以Location
及Sensor
。數據結果在四個系列:
-
Temp {Location=LGA,Sensor=A}
-
Temp {Location=LGA,Sensor=B}
-
Temp {Location=BOS,Sensor=A}
-
Temp {Location=BOS,Sensor=B}
注意
注意:在 Grafana 中映射到多個警報的方式不支持多個維度。而是將它們視為單一警示的多個條件。
多個值
對於類似 SQL 的資料來源,可以選取多個數值資料行,包含或不包含要用作維度的其他字串欄;例如,。AVG(Temperature) AS AvgTemp, MAX(Temperature)
AS MaxTemp
如果與多個尺寸結合使用,可能會產生多個序列。目前,選取多個值的設計僅用於視覺效果。
直方圖和熱圖簡介
直方圖是數值資料分佈的圖形表示。它將值分組到存儲桶中(有時也稱為 bin)。然後它計算每個桶中落入多少個值。
色階分佈圖不會繪製實際值的圖形,而是以圖表形式繪製值區。每個長條代表一個值區,而長條高度則代表落入該值區間間隔的值頻率 (例如 count)。
直方圖只會查看特定時間範圍內的值分佈。直方圖的問題在於您看不到任何趨勢或隨著時間的推移分佈的變化。這是熱圖變得有用的地方。
熱度圖
熱圖就像隨著時間的推移的直方圖,其中每個時間片代表自己的直方圖。它不是使用條形高度作為頻率的表示,而是使用單元格,將與存儲桶中的值數成比例的單元格著色。
預先分段數據
許多資料來源隨著時間的推移支援長條圖,包括下列各項:
-
Amazon OpenSearch 服務(通過使用直方圖桶聚合)
-
Prometheus(將色階分佈圖
度量類型和「格式化」選項設定為「熱圖」)
通常,您可以使用任何數據源,該數據源返回名稱代表存儲桶綁定的系列,或者返回按升序排序的綁定序列。
原始資料與彙總資料
如果您將熱區圖與一般時間序列資料搭配使用 (非預先分組),請務必記住,您的資料通常已經由時間序列後端彙總。大多數時間序列查詢不會傳回原始範例資料。相反,它們包括按時間間隔或 maxDataPoints 限制加上聚合函數(通常是平均值)的組。
這取決於查詢的時間範圍。重要的一點是要知道 Grafana 執行的長條圖分段可能會在已經彙總和平均的資料上完成。如需更精確的熱圖,最好在量度收集期間執行分段,或將資料儲存在支援對原始資料進行色階分佈圖時段設定的其他資料來源中 OpenSearch,或儲存在其他資料來源中。
如果您在查詢中依時間 (或提高 maxDataPoints) 移除或降低群組以傳回更多資料點,則熱圖會更準確。但是這也可能會給 CPU 和內存帶來沉重的負載。如果數據點的數量變得不合理,則可能會導致停止和崩潰。