本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
統計資料
使用 stats
建立日誌資料的視覺化效果,例如長條圖、折線圖和堆疊區域圖。這可協助您更有效率地識別日誌資料中的模式。 CloudWatch Logs Insights 會針對使用 stats
函數和一或多個彙總函數的查詢產生視覺化效果。
例如,Route 53 日誌群組中的下列查詢會傳回視覺化效果,依查詢類型顯示每小時 Route 53 記錄的分佈情況。
stats count(*) by queryType, bin(1h)
所有這些查詢都可以產生長條圖。如果您的查詢使用 bin()
函式將資料以一個欄位與一段時間進行群組,那麼您也可以看到折線圖和堆疊區域圖。
bin
函數支援以下時間單位和縮寫。對於包含多個字元的所有單位和縮寫,支援加上 s 來表示複數。所以 hr
和 hrs
皆可用來指定時數。
millisecond
ms
msec
second
s
sec
minute
m
min
hour
h
hr
day
d
week
w
month
mo
mon
quarter
q
qtr
year
y
yr
視覺化呈現時間序列資料
時間序列視覺化適用於具有下列特性的查詢:
-
查詢包含一或多個彙總函數。如需詳細資訊,請參閱Aggregation Functions in the Stats Command。
-
查詢使用
bin()
函數依一個欄位來分組資料。
這些查詢可以產生折線圖、堆疊區域圖、長條圖和圓餅圖。
範例
如需完整的教學,請參閱教學課程:執行查詢來產生時間序列視覺化。
以下是更多適用於時間序列視覺化的查詢範例。
以下查詢為 myfield1
欄位的平均值產生視覺效果,其中每 5 分鐘建立一個資料點。每個資料點是日誌中前五分鐘的 myfield1
值的平均值彙總。
stats avg(myfield1) by bin(5m)
以下查詢根據不同欄位建立三個值的視覺效果,其中每 5 分鐘建立一個資料點。產生此覺化是因為查詢包含彙總函數,且使用 bin()
做為分組欄位。
stats avg(myfield1), min(myfield2), max(myfield3) by bin(5m)
折線圖和堆疊區域圖限制
彙總記錄項目資訊但不使用 bin()
函數的查詢可產生長條圖。不過,該查詢無法產生折線圖或堆疊區域圖。如需這些查詢類型的詳細資訊,請參閱 視覺化呈現依欄位分組的日誌資料。
視覺化呈現依欄位分組的日誌資料
您可以為使用 stats
函數和一或多個彙總函數的查詢產生長條圖。如需詳細資訊,請參閱Aggregation Functions in the Stats Command。
若要查看視覺化,請執行查詢。查詢 Visualization (視覺化) 標籤,選取 Line (線條) 旁邊的箭頭,然後選擇 Bar (長條)。長條圖中的視覺化限制為最多 100 個長條。
範例
如需完整的教學,請參閱教學課程:執行查詢以產生依日誌欄位分組的視覺效果。以下段落包含更多可依據欄位進行視覺化的查詢範例。
下列VPC流程日誌查詢會尋找每個目的地地址每個工作階段傳輸的平均位元組數。
stats avg(bytes) by dstAddr
您也可以產生一個圖表,其中包含每個結果值的多個長條。例如,下列VPC流程日誌查詢會尋找每個目的地地址每個工作階段傳輸的平均位元組數和最大位元組數。
stats avg(bytes), max(bytes) by dstAddr
下列查詢會尋找每個查詢類型的 Amazon Route 53 查詢日誌數量。
stats count(*) by queryType
在單一查詢中使用多個統計資訊命令
您可以在單一查詢中使用多達兩個 stats
命令。這讓能您在第一個彙總的輸出上執行額外的彙總。
範例:使用兩個 stats
命令進行查詢
例如,以下查詢會先找出 5 分鐘區間的總流量,然後計算這些 5 分鐘區間的最高、最低和平均流量。
FIELDS strlen(@message) AS message_length | STATS sum(message_length)/1024/1024 as logs_mb BY bin(5m) | STATS max(logs_mb) AS peak_ingest_mb, min(logs_mb) AS min_ingest_mb, avg(logs_mb) AS avg_ingest_mb
範例:將多個統計資料命令與其他函數 (例如 filter
、fields
、bin
) 相結合
您可以在單一命令中,將兩個 stats
命令與其他命令(例如 filter
和 fields
) 相結合。例如,以下查詢會尋找工作階段中不同 IP 地址的數目,並依用戶端平台尋找工作階段數目,篩選這些 IP 地址,最後再找出每個用戶端平台的工作階段請求的平均數。
STATS count_distinct(client_ip) AS session_ips, count(*) AS requests BY session_id, client_platform | FILTER session_ips > 1 | STATS count(*) AS multiple_ip_sessions, sum(requests) / count(*) AS avg_session_requests BY client_platform
您可以在具有多個 stats
命令的查詢中使用 bin
和 dateceil
函數。例如,以下查詢會先將訊息合併成 5 分鐘的區塊,然後將這些 5 分鐘的區塊彙總為 10 分鐘的區塊,並計算每個 10 分鐘區塊內的最高、最低和平均流量。
FIELDS strlen(@message) AS message_length | STATS sum(message_length) / 1024 / 1024 AS logs_mb BY BIN(5m) as @t | STATS max(logs_mb) AS peak_ingest_mb, min(logs_mb) AS min_ingest_mb, avg(logs_mb) AS avg_ingest_mb BY dateceil(@t, 10m)
備註與限制
查詢最多可以有兩個 stats
命令。此配額無法變更。
如果您使用一個 sort
或 limit
命令,則其必須出現在第二個 stats
命令之後。如果在第二個 stats
命令之前,查詢無效。
當查詢有兩個 stats
命令時,在第一個 stats
彙總完成之前,不會開始顯示查詢的部分結果。
在單一查詢的第二個 stats
命令中,您只能參照第一個 stats
命令中定義的欄位。例如,以下查詢無效,因為 @message
欄位要在第一次 stats
彙總之後才可以使用。
FIELDS @message | STATS SUM(Fault) by Operation # You can only reference `SUM(Fault)` or Operation at this point | STATS MAX(strlen(@message)) AS MaxMessageSize # Invalid reference to @message
您在第一個 stats
命令之後參照的任何欄位,都必須在該第一個 stats
命令中定義。
STATS sum(x) as sum_x by y, z | STATS max(sum_x) as max_x by z # You can only reference `max(sum_x)`, max_x or z at this point
重要
bin
函數始終以隱含的方式使用 @timestamp
欄位。這表示如果不使用第一個 stats
命令傳播 timestamp
欄位,就無法在第二個 stats
命令中使用 bin
。例如,以下查詢無效。
FIELDS strlen(@message) AS message_length | STATS sum(message_length) AS ingested_bytes BY @logStream | STATS avg(ingested_bytes) BY bin(5m) # Invalid reference to @timestamp field
因此,應在第一個 stats
命令中定義 @timestamp
欄位,然後就可以在第二個 stats
命令中用來與 dateceil
搭配使用,如以下範例所示。
FIELDS strlen(@message) AS message_length | STATS sum(message_length) AS ingested_bytes, max(@timestamp) as @t BY @logStream | STATS avg(ingested_bytes) BY dateceil(@t, 5m)
與統計資料搭配使用的函數
CloudWatch Logs Insights 同時支援統計資料彙總函數和統計資料非彙總函數。
在 stats
命令中使用統計資料彙總函數,並用作其他函數的引數。
函式 | 結果類型 | 描述 |
---|---|---|
|
數字 |
所指定欄位中的值的平均數。 |
|
number |
計算日誌事件數。 |
|
number |
傳回欄位的唯一值數目。如果欄位有極高的基數 (包含許多唯一值),則 |
|
LogFieldValue |
在所查詢的日誌中此日誌欄位的值上限。 |
|
LogFieldValue |
在所查詢的日誌中此日誌欄位的值下限。 |
|
LogFieldValue |
百分位數會指出資料集中相關準備好的值。例如, |
|
number |
所指定欄位中的值的標準差。 |
|
number |
所指定欄位中的值的總和。 |
Stats 非彙總函數
非彙總函數可用於 stats
命令,也可以作為其他函數的引數使用。
函式 | 結果類型 | 描述 |
---|---|---|
|
LogField |
從在查詢日誌中具有最早時間戳記的日誌事件中傳回 |
|
LogField |
從在查詢日誌中具有最晚時間戳記的日誌事件中傳回 |
|
LogField |
傳回在查詢日誌中最先排序的 |
|
LogField |
傳回在查詢日誌中最後排序的 |