本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立您的第一個儀表板
建立儀表板
請依照下列步驟,在 Grafana 主控台中建立儀表板。
建立您的第一個儀表板
-
選擇左側面板上的 + 圖示,選擇建立儀表板,然後選擇新增面板。
-
在新儀表板/編輯面板檢視中,選擇查詢標籤。
-
選取您要查詢的資料來源,以設定您的查詢。例如,如果您已將 TestDB 新增為資料來源,則會產生名為 Random Walk 儀表板的範例儀表板。
時間序列簡介
假設您想知道外部溫度在一天當中的變化。每小時檢查一次溫度計,並記下時間與目前溫度。一段時間後,您會有類似下列的資料。
時間 | Value |
---|---|
09:00 | 24°C |
10:00 | 26°C |
11:00 | 27°C |
像這樣的溫度資料是時間序列的一個範例,即按時間排序的一系列測量。資料表中的每一列代表特定時間的一個個別測量。
當您想要識別個別的測量時,資料表非常有用,但它們可能會使得難以看到全局。時間序列的較常見視覺化效果是圖形,它會沿著時間軸放置每個測量。圖形等視覺化呈現方式可讓您更輕鬆地探索難以看到的資料模式和功能。
時間序列的其他範例包括:
-
CPU 和記憶體用量
-
感應器資料
-
股票市場索引
雖然每個範例都是依時間順序排序的一系列測量,但它們也會共用其他屬性:
-
新資料會在結束時以固定間隔附加,例如每小時 09:00、10:00、11:00 等。
-
很少會在新增後更新測量。例如,昨天的溫度不會變更。
時間序列功能強大。它們可讓您隨時分析系統的狀態,協助您了解過去。時間序列可以告訴您,在可用磁碟空間下降到零之後,伺服器損毀的時刻。
時間序列也可以透過探索資料中的趨勢來協助您預測未來。例如,如果註冊的使用者數量在過去幾個月內每月增加 4%,您可以預測您的使用者基礎在年底將有多少規模。
某些時間序列具有在已知期間重複自己的模式。例如,在晚上下降之前,溫度通常在一天中較高。透過識別這些定期或季節性的時間序列,您可以對下一個期間進行可信的預測。如果您知道系統每天大約 18:00 載入峰值,則可以在此之前新增更多機器。
彙總時間序列
視您測量的內容而定,資料可能會有很大的差異。如果您想要比較比測量之間的間隔更長的期間,該怎麼辦? 如果您每小時測量一次溫度,您最後會每天 24 個資料點。若要比較 8 月多年來的溫度,您必須將 31 倍 24 個資料點合併為一個。
結合測量的集合稱為彙總。有幾種方式可彙總時間序列資料。以下是一些常見的項目:
-
平均值會傳回所有值的總和除以值的總數。
-
最小值和最大值會傳回集合中最小和最大的值。
-
Sum 會傳回集合中所有值的總和。
-
Count 會傳回集合中的值數目。
例如,透過在一個月內彙總資料,您可以判斷 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。由於這類最佳化,TSDBs 使用的空間遠低於其他資料庫。
TSDB 的另一個功能是能夠使用標籤篩選測量結果。每個資料點都會標記一個標籤,以新增內容資訊,例如測量的位置。
Grafana 支援下列 TSDBs:
-
weather,location=us-midwest temperature=82 1465839830100400200 | -------------------- -------------- | | | | | | | | | +-----------+--------+-+---------+-+---------+ |measurement|,tag_set| |field_set| |timestamp| +-----------+--------+-+---------+-+---------+
收集時間序列資料
現在您已有存放時間序列的地方,如何實際收集測量結果? 若要收集時間序列資料,您通常會在要監控的裝置、機器或執行個體上安裝收集器。有些收集器是以特定資料庫為考量,有些則支援不同的輸出目的地。
以下是收集器的一些範例:
收集器會將資料推送至資料庫,或讓資料庫從收集器提取資料。每種方法都有自己的優缺點。
優點 | 缺點 | |
---|---|---|
推送 | 更輕鬆地將資料複寫到多個目的地。 | TSDB 無法控制傳送的資料量。 |
提取 | 進一步控制資料擷取量和資料真實性。 | 防火牆、VPNs或負載平衡器可能會使存取代理程式變得困難。 |
因為將每個測量寫入資料庫是很無效的,收集器會預先彙總資料,並定期寫入 TSDB。
時間序列維度
使用時間序列資料時,資料通常是一組多個時間序列。許多 Grafana 資料來源支援這種類型的資料。
常見案例是為具有一或多個其他屬性的測量發出單一查詢,做為維度。例如,您可以查詢溫度測量以及位置屬性。在這種情況下,會從該單一查詢傳回多個序列,每個序列都有唯一的位置做為維度。
若要識別一組時間序列內的唯一序列,Grafana 會將維度存放在標籤中。
標籤
Grafana 中的每個時間序列都有標籤。標籤是一組用於識別維度的鍵值對。範例標籤為 {location=us}
或 {country=us,state=ma,city=boston}
。在一組時間序列中,其名稱和標籤的組合會識別每個序列。例如:temperature {country=us,state=ma,city=boston}
。
不同的時間序列資料來源具有原生儲存的維度,或可讓資料擷取為維度的常見儲存模式。
通常,TSDBs 原生支援維度。Prometheus 將維度存放在標籤中。在 Graphite 或 OpenTSDB 等 TSDBs 中,會改為使用術語標籤。
在 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 | 拉瓜迪亞機場 |
09:00 | 20 | BOS |
10:00 | 26 | 拉瓜迪亞機場 |
10:00 | 22 | BOS |
資料表格式是長格式的時間序列,也稱為高。它具有重複的時間戳記,以及位置中的重複值。在這種情況下,集合中的兩個時間序列會識別為 Temp {Location=LGA}
和 Temp {Location=BOS}
。
使用下列維度擷取集合中的個別時間序列:
-
作為時間序列
StartTime
時間索引的時間類型資料欄 -
以數字輸入的欄
Temp
做為序列名稱 -
用來建置標籤的字串類型
Location
欄的名稱和值,例如 Location=LGA
多個維度
如果查詢已更新為選取並依多個字串欄分組 (例如 GROUP BY BUCKET(StartTime, 1h), Location, Sensor
),則會新增額外的維度。
StartTime | 暫存 | 位置 | 感測器 |
---|---|---|---|
09:00 | 24 | 拉瓜迪亞機場 | A |
09:00 | 24.1 | 拉瓜迪亞機場 | B |
09:00 | 20 | BOS | A |
09:00 | 20.2 | BOS | B |
10:00 | 26 | 拉瓜迪亞機場 | A |
10:00 | 26.1 | 拉瓜迪亞機場 | B |
10:00 | 22 | BOS | A |
10:00 | 22.2 | BOS | 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
。如果結合多個維度,這可能會導致許多序列。選取多個值目前僅設計為搭配視覺化使用。
直方圖和熱圖簡介
直方圖是數值資料分佈的圖形表示法。它會將值分組到儲存貯體 (有時也稱為儲存貯體)。然後,它會計算有多少值落在每個儲存貯體中。
長條圖不是繪製實際值的圖形,而是繪製儲存貯體的圖形。每個長條代表一個儲存貯體,長條高度代表落在該儲存貯體間隔內的值頻率 (例如計數)。
直方圖只會查看特定時間範圍內的值分佈。長條圖的問題是您無法在分佈中看到隨時間變化的任何趨勢或變化。這是熱圖變得有用的位置。
熱度圖
熱度圖就像長條圖,其中每次配量都代表自己的長條圖。其使用儲存格,將儲存格與儲存貯體中的值數量成比例,而不是使用長條高度來表示頻率。
預先儲存貯體資料
許多資料來源隨著時間支援長條圖,包括下列項目:
-
Amazon OpenSearch Service (使用長條圖儲存貯體彙總)
-
Prometheus (將長條圖
指標類型和 格式設定為熱圖)
一般而言,您可以使用傳回序列的任何資料來源,其名稱代表儲存貯體繫結,或傳回以遞增順序排序的序列。
原始資料與彙總資料
如果您使用熱度圖搭配一般時間序列資料 (非預先儲存貯體),請務必記住,您的資料通常已由時間序列後端彙總。大多數時間序列查詢不會傳回原始範例資料。反之,它們會包含依時間間隔或 maxDataPoints 限制加上彙總函數的群組 (通常是平均值)。
這取決於查詢的時間範圍。重點是了解 Grafana 執行的長條圖儲存貯體可能針對已彙總和平均的資料完成。如需更準確的熱圖,最好在指標收集期間執行儲存貯體,或將資料存放在 OpenSearch 中,或支援對原始資料執行長條圖儲存貯體的其他資料來源中。
如果您在查詢中依時間移除或降低群組 (或提高 maxDataPoints) 以傳回更多資料點,您的熱度圖會更準確。但這也可能會對 CPU 和記憶體造成繁重負載。如果資料點的數量變得不合理,可能會導致停滯和當機。