使用摘要規則彙總 Log Analytics 工作區中的資料 (預覽)
摘要規則可讓您定期彙總記錄資料,並將彙總的結果傳送至 Log Analytics 工作區中的自訂記錄資料表。 使用摘要規則來最佳化您的資料:
分析和報告,特別是針對大型資料集和時間範圍,安全性與事件分析、每月或年度商務報告等情況下需要。 大型資料集上的複雜查詢通常會逾時。分析及報告已清理和已彙總摘要資料更為簡單且更有效率。
詳細資訊記錄的成本節省,您可以保留低成本基本記錄資料表中的一小部分或所需部分,並將摘要資料傳送至 Analytics 資料表進行分析和報告即可。
藉由移除或模糊化摘要共用資料中的隱私權詳細資料,以及限制對具有未經處理資料的資料表存取,來獲得安全性和資料隱私權。
本文說明摘要規則的運作方式,以及如何定義和檢視摘要規則,並提供摘要規則使用方式和優點的一些範例。
以下影片概述了摘要規則的一些優點:
摘要規則的運作方式
摘要規則會直接在 Log Analytics 工作區中執行批次處理。 摘要規則會根據 KQL 查詢來匯總數據區塊,並根據 KQL 查詢定義,並將摘要結果重新內嵌至具有 Log Analytics 工作區中 Analytics 記錄計劃的自定義數據表。
無論資料表是否具有 Analytics 或基本行動數據方案,您都可以彙總任何資料表的資料。 Azure 監視器會根據您定義的查詢來建立目的地資料表結構描述。 如果目的地數據表已經存在,Azure 監視器會附加任何支援查詢結果所需的數據行。 所有目的地資料表也包含一組具有摘要規則資訊的標準欄位,包括:
_RuleName
:產生彙總記錄項目的摘要規則。_RuleLastModifiedTime
:上次修改規則的時間。_BinSize
:彙總間隔。_BinStartTime
:匯總開始時間。
您可以設定最多 30 個使用中規則,以彙總多個資料表的資料,並將彙總的資料傳送至不同的目的地資料表或相同的資料表。
您可以定義資料匯出規則,將摘要資料從自訂記錄資料表匯出至儲存體帳戶或事件中樞,以進一步整合。
範例:摘要 ContainerLogsV2 資料
如果您要監視容器,需要將大量的詳細資訊記錄內嵌至 ContainerLogsV2
資料表。
您可以在摘要規則中使用此查詢,在 60 分鐘內彙總所有唯一的記錄項目,以保留可用於分析的資料並卸除您不需要的資料:
ContainerLogV2 | summarize Count = count() by Computer, ContainerName, PodName, PodNamespace, LogSource, LogLevel, Message = tostring(LogMessage.Message)
以下是 ContainerLogsV2
資料表中的未經處理資料:
以下是摘要規則傳送至目的地資料表的彙總資料:
目的地資料表會顯示每個唯一項目的計數,而不是在一小時內記錄數百個類似的項目,如 KQL 查詢中所定義。 在 ContainerLogsV2
資料表上設定基本行動數據方案,以用於未經處理資料的低成本保留,並針對分析需求使用目的地資料表中的摘要資料。
需要的權限
動作 | 需要的權限 |
---|---|
建立或更新摘要規則 | 例如,Log Analytics 參與者內建角色所提供的 Log Analytics 工作區 Microsoft.Operationalinsights/workspaces/summarylogs/write 權限 |
建立或更新目的地資料表 | 例如,Log Analytics 參與者內建角色所提供的 Log Analytics 工作區 Microsoft.OperationalInsights/workspaces/tables/write 權限 |
在工作區中啟用查詢作業 | 例如,Log Analytics 讀者內建角色所提供的 Log Analytics 工作區 Microsoft.OperationalInsights/workspaces/query/read 權限 |
查詢工作區中的所有數據表 | 例如,Log Analytics 讀者內建角色所提供的 Log Analytics 工作區 Microsoft.OperationalInsights/workspaces/query/*/read 權限 |
查詢數據表中的記錄 | 例如,Log Analytics 讀者內建角色所提供的 Log Analytics 工作區 Microsoft.OperationalInsights/workspaces/query/<table>/read 權限 |
資料表中的查詢記錄 (資料表動作) | 例如,Log Analytics 讀者內建角色所提供的 Log Analytics 工作區 Microsoft.OperationalInsights/workspaces/tables/query/read 權限 |
使用在客戶自控儲存體帳戶中加密的查詢 | 儲存體帳戶的 Microsoft.Storage/storageAccounts/* 權限,例如儲存體帳戶參與者內建角色所提供的權限 |
實作考量
- 工作區中的使用中規則數目上限為 30。
- 摘要規則目前僅適用於公用雲端。
- 摘要規則會處理傳入資料,且無法在歷程記錄時間範圍內設定。
- 當間隔執行重試用盡時,系統會跳過間隔,且無法重新執行。
- 不支援使用 Lighthouse 查詢另一個租用戶中的 Log Analytics 工作區。
計價模式
[摘要] 規則沒有額外的成本。 您只需根據執行查詢的來源資料表的資料表方案,支付查詢費用以及將結果提取到目標資料表的費用:
來源資料表方案 | 查詢成本 | 摘要結果擷取成本 |
---|---|---|
分析 | 無成本 | 擷取分析記錄 |
基本和輔助 | 數據掃描 | 擷取分析記錄 |
例如,每個間隔所傳回 100 筆記錄的每小時規則成本計算為:
來源資料表方案 | 每月價格計算 |
---|---|
分析 | 擷取價格 x 記錄磁碟區 x 記錄數 x 24 小時 x 30 天。 |
基本和輔助 | 數據掃描價格 x 掃描的磁碟區 + 擷取價格 x 記錄磁碟區 x 記錄數目 x 24 小時 x 30 天。 針對持續執行的規則,會掃描源數據表的所有傳入數據。 |
如需詳細資訊,請參閱 Azure 監視器計量價格。
建立或更新摘要規則
您可以在摘要規則中使用的運算符,您的查詢取決於查詢中的源數據表計劃。
- 分析:支援所有 KQL 運算子和函式,除了:
- 跨資源查詢,其使用
workspaces()
、app()
和resource()
表示式,以及使用 和ARG()
表達式的ADX()
跨服務查詢。 - 調整資料結構描述形狀的外掛程式,包括 bag unpack、narrow 和 pivot。
- 跨資源查詢,其使用
- 基本:支援單一數據表上的所有 KQL 運算子。 您可以使用查閱運算子來聯結最多五個 Analytics 資料表。
- Azure Functions:不支援使用者定義函式。 支援 Microsoft 所提供的系統函式。
當結果計數或磁碟區大幅減少時,摘要規則在成本和查詢體驗方面最有利。 例如,針對結果磁碟區0.01%或小於來源。 在建立規則之前,請在Log Analytics中實驗查詢,並確認查詢未達到或接近查詢API限制。 檢查查詢是否會產生預期的預期結果和架構。 如果查詢接近查詢限制,請考慮使用較小的 『bin size』 來處理每個量化的數據。 您也可以修改查詢,以傳回較少的記錄或具有較高磁碟區的欄位。
當您更新查詢且摘要結果中的欄位較少時,Azure 監視器不會自動從目的地資料表移除資料行,而且您需要 手動刪除資料表 中的數據行。
若要建立或更新摘要規則,請發出此 PUT
API 呼叫:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroup}/providers/Microsoft.OperationalInsights/workspaces/{workspace}/summarylogs/{ruleName}?api-version=2023-01-01-preview
Authorization: {credential}
{
"properties": {
"ruleType": "User",
"description": "My test rule",
"ruleDefinition": {
"query": "StorageBlobLogs | summarize count() by AccountName",
"binSize": 30,
"destinationTable": "MySummaryLogs_CL"
}
}
}
下表描述摘要規則參數:
參數 | 有效值 | 描述 |
---|---|---|
ruleType |
User 或 System |
指定規則的類型。 - User :您定義的規則。 - System :由 Azure 服務管理的預先定義規則。 |
description |
String | 描述規則及其函式。 當您有數個規則且可協助管理規則時,此參數會很有幫助。 |
binSize |
20 、30 、60 、120 、180 、360 、720 或 1440 (分鐘) |
定義彙總間隔和回顧時間範圍。 例如,如果您設定 "binSize": 120 ,則可能會取得 02:00 to 04:00 和 04:00 to 06:00 的項目。 |
query |
Kusto 查詢語言 (KQL) 查詢 | 定義在規則中執行的查詢。 您不需要指定時間範圍,因為 binSize 參數會決定彙總間隔 - 例如,如果為 "binSize": 60 則為 02:00 to 03:00 。 如果您在查詢中新增時間篩選,則查詢中使用的時間範圍是篩選條件與間隔大小之間的交集。 |
destinationTable |
tablename_CL |
指定目的地自訂記錄資料表的名稱。 名稱值必須具有尾碼 _CL 。 Azure 監視器會根據您在規則中設定的查詢,在工作區中建立資料表 (如果尚未存在的話)。 如果資料表已存在於工作區中,Azure 監視器會新增查詢中導入的任何新資料行。 如果摘要結果包含保留的資料行名稱,例如 TimeGenerated 、_IsBillable 、_ResourceId 、TenantId 或 Type - Azure 監視器會將 _Original 前置詞附加至原始欄位,以保留其原始值。 |
binDelay (選用) |
整數 (分鐘) | 設定在 bin 執行之前等候的時間,通常在延遲抵達數據上執行時很有用,也稱為 擷取延遲,並允許大部分的數據到達。 預設延遲是從 3 分半到 10% binSize 的值。 如果您知道您查詢的數據通常是以延遲擷取,請使用已知延遲值或更大值來設定 binDelay 參數,最多 1440 分鐘。 如需詳細資訊,請參閱設定彙總時間。在某些情況下,Azure 監視器可能會稍微在設定間隔延遲之後開始執行間隔,以確保服務可靠性和查詢成功。 |
binStartTime (選用) |
日期時間內%Y-%n-%eT%H:%M %Z format |
指定初始間隔執行的日期和時間。 值可以從規則建立日期時間減去 binSize 值,或稍後以及整數小時內開始。 例如,如果日期時間是 2023-12-03T12:13Z 且 binSize 為 1,440,則最早的有效 binStartTime 值為 2023-12-02T13:00Z ,而彙總會包含在 02T13:00 和 03T13:00 之間記錄的資料。 在此案例中,規則會開始彙總 03T13:00 加上預設或指定的延遲。 binStartTime 參數在每日摘要案例中很有用。 假設您位於 UTC-8 時區,並在 2023-12-03T12:13Z 建立每日規則。 您希望規則在 8:00 (00:00 UTC) 開始一天工作之前完成。 將 binStartTime 參數設定為 2023-12-02T22:00Z 。 第一個彙總包含在本機時間 02T:06:00 和 03T:06:00 之間記錄的所有資料,而規則會在每天的相同時間執行。 如需詳細資訊,請參閱設定彙總時間。當您更新規則時,您可以: - 使用現有的 binStartTime 值或移除 binStartTime 參數,在此情況下,會根據初始定義繼續執行。- 以新的 binStartTime 值更新規則,以設定新的日期時間值。 |
timeSelector (選用) |
TimeGenerated |
定義 Azure 監視器用來彙總資料的時間戳記欄位。 例如,如果您設定 "binSize": 120 ,則可能會取得介於 02:00 和 04:00 之間 TimeGenerated 值的項目。 |
設定彙總時間
根據預設,摘要規則會在下一個整數小時後不久建立第一個彙總。
簡短延遲 Azure 監視器會新增帳戶來擷取延遲 - 或介於資料在受監視系統中建立以及在 Azure 監視器中可供分析的時間。 根據預設,此延遲介於 3 到 5 分鐘到 'bin size' 值的 10% 之間,再匯總每個量化。 在大部分情況下,此延遲可確保 Azure 監視器會彙總每個間隔期間內記錄的所有資料。
例如:
您會在 14:44 建立間隔大小為 30 分鐘的摘要規則。
針對在 14:30 到 15:00 之間記錄的資料,規則會在 15:00 之後不久建立第一個彙總 - 例如在 15:04。
您會在 14:44 建立間隔大小為 720 分鐘 (12 小時) 的摘要規則。
針對在 03:00 到 15:00 之間記錄的資料,規則會在 16:12 - 即 13:00 的 72 分鐘之後 (720 間隔大小的 10%) 建立第一個彙總。
使用 binStartTime
和 binDelay
參數來變更第一次彙總的時間,以及 Azure 監視器在每次彙總之前新增的延遲。
下一節提供預設彙總時間和更進階的彙總時間選項範例。
使用預設彙總時間
在此範例中,摘要規則會在 2023-06-07 14:44 建立,而 Azure 監視器會新增預設延遲 4 分鐘。
binSize (分鐘) | 初始規則執行 | 第一次彙總 | 第二次彙總 |
---|---|---|---|
1440 | 2023-06-07 15:04 | 2023-06-06 15:00 - 2023-06-07 15:00 | 2023-06-07 15:00 - 2023-06-08 15:00 |
720 | 2023-06-07 15:04 | 2023-06-07 03:00 - 2023-06-07 15:00 | 2023-06-07 15:00 - 2023-06-08 03:00 |
360 | 2023-06-07 15:04 | 2023-06-07 09:00 - 2023-06-07 15:00 | 2023-06-07 15:00 - 2023-06-07 21:00 |
180 | 2023-06-07 15:04 | 2023-06-07 12:00 - 2023-06-07 15:00 | 2023-06-07 15:00 - 2023-06-07 18:00 |
120 | 2023-06-07 15:04 | 2023-06-07 13:00 - 2023-06-07 15:00 | 2023-06-07 15:00 - 2023-06-07 17:00 |
60 | 2023-06-07 15:04 | 2023-06-07 14:00 - 2023-06-07 15:00 | 2023-06-07 15:00 - 2023-06-07 16:00 |
30 | 2023-06-07 15:04 | 2023-06-07 14:30 - 2023-06-07 15:00 | 2023-06-07 15:00 - 2023-06-07 15:30 |
20 | 2023-06-07 15:04 | 2023-06-07 14:40 - 2023-06-07 15:00 | 2023-06-07 15:00 - 2023-06-07 15:20 |
設定選擇性彙總時間參數
在此範例中,摘要規則是在 2023-06-07 14:44 建立,而規則包含下列進階組態設定:
binStartTime
:2023-06-08 07:00binDelay
:8 分鐘
binSize (分鐘) | 初始規則執行 | 第一次彙總 | 第二次彙總 |
---|---|---|---|
1440 | 2023-06-09 07:08 | 2023-06-08 07:00 - 2023-06-09 07:00 | 2023-06-09 07:00 - 2023-06-10 07:00 |
720 | 2023-06-08 19:08 | 2023-06-08 07:00 - 2023-06-08 19:00 | 2023-06-08 19:00 - 2023-06-09 07:00 |
360 | 2023-06-08 13:08 | 2023-06-08 07:00 - 2023-06-08 13:00 | 2023-06-08 13:00 - 2023-06-08 19:00 |
180 | 2023-06-08 10:08 | 2023-06-08 07:00 - 2023-06-08 10:00 | 2023-06-08 10:00 - 2023-06-08 13:00 |
120 | 2023-06-08 09:08 | 2023-06-08 07:00 - 2023-06-08 09:00 | 2023-06-08 09:00 - 2023-06-08 11:00 |
60 | 2023-06-08 08:08 | 2023-06-08 07:00 - 2023-06-08 08:00 | 2023-06-08 08:00 - 2023-06-08 09:00 |
30 | 2023-06-08 07:38 | 2023-06-08 07:00 - 2023-06-08 07:30 | 2023-06-08 07:30 - 2023-06-08 08:00 |
20 | 2023-06-08 07:28 | 2023-06-08 07:00 - 2023-06-08 07:20 | 2023-06-08 07:20 - 2023-06-08 07:40 |
檢視摘要規則
使用此 GET
API 呼叫來檢視特定摘要規則的組態:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroup}/providers/Microsoft.OperationalInsights/workspaces/{workspace}/summarylogs/{ruleName1}?api-version=2023-01-01-preview
Authorization: {credential}
使用此 GET
API 呼叫來檢視設定,以檢視 Log Analytics 工作區中所有摘要規則的設定:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroup}/providers/Microsoft.OperationalInsights/workspaces/{workspace}/summarylogs?api-version=2023-01-01-preview
Authorization: {credential}
停止並重新啟動摘要規則
您可以停止規則一段時間 - 例如,如果您想要確認資料已內嵌至資料表,且不想要影響摘要資料表和報表。 當您重新啟動規則時,Azure 監視器會從下一個整數小時開始處理資料,或根據定義的 binStartTime
(選擇性) 參數。
若要停止規則,請使用此 POST
API 呼叫:
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroup}/providers/Microsoft.OperationalInsights/workspaces/{workspace}/summarylogs/{ruleName}/stop?api-version=2023-01-01-preview
Authorization: {credential}
若要重新啟動規則,請使用此 POST
API 呼叫:
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroup}/providers/Microsoft.OperationalInsights/workspaces/{workspace}/summarylogs/{ruleName}/start?api-version=2023-01-01-preview
Authorization: {credential}
刪除摘要規則
您可以在 Log Analytics 工作區中擁有最多 30 個使用中的摘要規則。 如果您要建立新的規則,但您已經有 30 個使用中規則,則必須停止或刪除使用中的摘要規則。
若要刪除規則,請使用此 DELETE
API 呼叫:
DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroup}/providers/Microsoft.OperationalInsights/workspaces/{workspace}/summarylogs/{ruleName}?api-version=2023-01-01-preview
Authorization: {credential}
監視摘要規則
若要監視摘要規則,請在 Log Analytics 工作區的 [診斷設定] 中啟用 [摘要記錄] 類別。 Azure 監視器會將摘要規則執行詳細資料,包括摘要規則執行 [開始]、[成功] 和 [失敗] 資訊傳送至工作區中的 LASummaryLogs 資料表。
建議您設定記錄警示規則來接收間隔失敗或間隔執行即將逾時時的通知,如下所示。 視失敗原因而定,您可以減少間隔大小以在每次執行處理較少的資料,或修改查詢以傳回較少的記錄或具有較高磁碟區的欄位。
此查詢會傳回失敗的執行:
LASummaryLogs | where Status == "Failed"
此查詢會傳回間隔執行,其中 QueryDurationMs
值大於 0.9 x 600,000 毫秒:
LASummaryLogs | where QueryDurationMs > 0.9 * 600000
確認資料完整性
摘要規則是專為調整而設計,並包含重試機制,以克服與查詢限制等相關的暫時性服務或查詢失敗。 重試機制是在八小時內彙總失敗間隔的 10 次嘗試,並在耗盡時跳過間隔。 規則會設定為 isActive: false
,並在連續八次間隔重試後保留。 如果您啟用監視摘要規則,Azure 監視器會在工作區的 LASummaryLogs
資料表中記錄事件。
您無法重新執行失敗的間隔執行,但您可以使用下列查詢來檢視失敗的執行:
let startTime = datetime("2024-02-16");
let endtTime = datetime("2024-03-03");
let ruleName = "myRuleName";
let stepSize = 20m; // The stepSize value is equal to the bin size defined in the rule
LASummaryLogs
| where RuleName == ruleName
| where Status == 'Succeeded'
| make-series dcount(BinStartTime) default=0 on BinStartTime from startTime to endtTime step stepSize
| render timechart
此查詢會將結果轉譯為時間圖:
如需規則補救選項和主動式警示,請參閱監視摘要規則一節。
使用客戶自控金鑰加密摘要規則查詢
KQL 查詢可以在註解或查詢語法中包含敏感性資訊。 若要加密摘要規則查詢,請將儲存體帳戶連結至 Log Analytics 工作區,並使用客戶自控密鑰。
使用加密查詢時的考量事項:
- 連接儲存體帳戶來加密查詢並不會中斷現有的規則。
- 根據預設,Azure 監視器會將摘要規則查詢儲存在 Log Analytics 儲存體中。 如果您在將儲存體帳戶連結至 Log Analytics 工作區之前已有現有的摘要規則,請更新摘要規則,讓查詢將現有的查詢儲存在儲存體帳戶中。
- 您在儲存體帳戶中儲存的查詢位於
CustomerConfigurationStoreTable
資料表中。 這些查詢會被視為服務成品,且其格式可能會變更。 - 您可以將相同的儲存體帳戶用於摘要規則查詢、Log Analytics 中儲存的查詢,以及記錄警示。
針對摘要規則進行疑難排解
本節提供疑難排解摘要規則的提示。
意外刪除摘要規則目的地資料表
如果您在摘要規則為使用中時刪除目的地資料表,則規則會暫停,而 Azure 監視器會將事件傳送至 LASummaryLogs
資料表,並顯示指出規則已暫停的訊息。
如果您不需要目的地資料表中的摘要結果,請刪除規則和資料表。 如果您需要復原摘要結果,請遵循「建立或更新摘要規則」一節中的步驟來重新建立資料表。 目的地資料表會還原,包括刪除之前內嵌的資料,視資料表中的保留原則而定。
如果您不需要目的地資料表中的摘要結果,請刪除規則和資料表。 如果您需要摘要結果,請依照建立或更新摘要規則一節中的步驟重新建立目的地資料表並還原所有資料,包括刪除前內嵌的資料,視資料表中的保留原則而定。
查詢會使用在目的地資料表中建立新資料行的運算子
當您建立或更新摘要規則時,會定義目的地資料表結構描述。 如果摘要規則中的查詢包含運算子,這些運算子允許根據傳入資料進行輸出結構描述擴充 - 例如,如果查詢使用 arg_max(expression, *)
函式,則 Azure 監視器不會在建立或更新摘要規則之後,將新增資料行至目的地資料表,且將會卸除需要這些資料行的輸出資料。 若要將新欄位新增至目的地資料表,請更新摘要規則,或手動將資料行新增至資料表。
根據資料表的保留設定,已刪除資料行中的資料會保留在工作區中
當您移除查詢中的欄位時,數據行和數據會保留在目的地中,並根據 數據表或工作區上定義的保留期間 。 如果您不需要在目的地資料表中移除,請從資料表結構描述中刪除資料行。 如果您接著新增具有相同名稱的資料行,則任何不早於保留期間的資料都會再次出現。
相關內容
- 深入了解 Azure 監視器記錄行動數據方案。
- 逐步解說在 Log Analytics 中使用 KQL 模式的教學課程。
- 存取完整的 KQL 參考文件。