共用方式為


Kusto 查詢語言概觀

適用於:✅Microsoft網狀架構

Kusto 查詢語言 (KQL) 是一種功能強大的工具,可探索您的資料並探索模式、找出異常狀況和極端值、建立統計模型等。

KQL 是一種簡單但功能強大的語言,可查詢結構化、半結構化和非結構化數據。 語言具有表達性、易於閱讀和瞭解查詢意圖,並已針對撰寫體驗進行優化。 KQL 最適合用於查詢遙測、計量和記錄,並深入支援文字搜尋和剖析、時間序列運算符和函式、分析和匯總、地理空間、向量相似度搜尋,以及許多其他語言建構,以提供最理想的數據分析語言。 此查詢會使用類似 SQL 的階層中組織的架構實體:資料庫、數據表和數據行。

如果您有腳本或使用資料庫的背景,本文的大部分內容都應該很熟悉。 如果沒有,別擔心,因為語言的直覺本質可讓您快速開始撰寫自己的查詢,並為組織創造價值。

本文提供查詢語言的說明,並提供實際練習,讓您開始撰寫查詢。 若要存取查詢環境,請使用 Azure 資料總管 Web UI。 若要瞭解如何使用 KQL,請參閱 教學課程:瞭解常見的運算子

本文提供查詢語言的說明,並提供實際練習,讓您開始撰寫查詢。 若要存取查詢環境,請使用 KQL 查詢集。 若要瞭解如何使用 KQL,請參閱 教學課程:瞭解常見的運算子

KQL 也是您用來處理和作 Sentinel Microsoft數據的語言。 如果您無法分析饋送到工作區的記錄,並取得那其中所有資料中隱藏的重要資訊,則這些記錄就沒什麼價值。 KQL 不僅具備取得該資訊的強大功能和彈性,而且能協助您快速開始使用的簡單性。

本文介紹 KQL 的基本概念,涵蓋一些最常用的函式和運算符,該函式和運算符應該處理 75 到 80% 的使用者每天撰寫的查詢。 當您需要更深入或執行更進階的查詢時,您可以利用 進階 KQL for Microsoft Sentinel 活頁簿

為什麼Microsoft Sentinel 的 KQL?

Microsoft Sentinel 建置於 Azure 監視器服務之上,並使用 Azure 監視器的 Log Analytics 工作區來儲存其所有資料。 此資料包括下列任一項:

  • 使用 Microsoft Sentinel 資料連接器,從外部來源擷取到預先定義資料表的資料。
  • 使用自定義建立的數據連接器和某些類型的現成連接器,從外部來源擷取至使用者定義的自定義數據表。
  • 由 Microsoft Sentinel 本身建立的資料 (產生自其建立並執行的分析),例如,警示、事件及 UEBA 相關資訊。
  • 上傳至 Microsoft Sentinel 以協助偵測和分析的資料,例如,威脅情報摘要和關注清單。

KQL 是 Azure 數據 總管服務的一部分所開發,因此已針對在雲端環境中搜尋巨量數據存放區進行優化。 其設計目的是協助您深入探討您的數據,並探索其隱藏的寶藏。

KQL 也用於 Azure 監視器,並支援額外的 Azure 監視器功能,可讓您擷取、可視化、分析和剖析 Log Analytics 數據存放區中的數據。 在 Microsoft Sentinel 中,每當您可視化和分析數據並搜捕威脅、無論是在現有規則和活頁簿中,還是在建置您自己的時,您都使用以 KQL 為基礎的工具。

由於 KQL 是您Microsoft Sentinel 中幾乎所做的一切的一部分,因此清楚瞭解其運作方式可協助您從 SIEM 中取得更多功能。

什麼是 Kusto 查詢?

Kusto 查詢是處理數據和傳回結果的唯讀要求。 要求會以純文本表示,其使用易於讀取、撰寫及自動化的數據流模型。 Kusto 查詢是由一或多個查詢語句所組成。

Kusto 查詢不會寫入任何數據。 查詢會針對組織為資料庫資料表資料行階層的資料進行操作,類似於 SQL。

什麼是查詢語句?

使用者 查詢語句有三種

所有查詢語句都會以 ; 分隔(分號),而且只會影響手邊的查詢。

注意

如需應用程式查詢語句的相關信息,請參閱 應用程式查詢語句

最常見的查詢語句類型是表格式表達式 語句,這表示其輸入和輸出是由數據表或表格式數據集所組成。 表格式語句包含零個或多個 運算子,每個運算元都是以表格式輸入開頭,並傳回表格式輸出。 運算子會依 | (pipe) 排序。 數據流或管道會從一個運算符傳送至下一個運算符。 數據會在每個步驟進行篩選或操作,然後饋送至下列步驟。

就像漏鬥圖,您從整個數據表開始。 每次數據通過另一個運算符時,都會經過篩選、重新排列或摘要。 由於從一個運算符到另一個運算子的資訊管線是循序的,因此查詢運算符順序很重要,而且可能會影響結果和效能。 在漏鬥圖結尾處,您會留下一個精簡的輸出。

讓我們看看範例查詢。

StormEvents
| where StartTime between (datetime(2007-11-01) .. datetime(2007-12-01))
| where State == "FLORIDA"
| count
計數
28

注意

KQL 會區分大小寫的所有專案 – 資料表名稱、資料表數據行名稱、運算元、函式等等。 關鍵詞可以用括弧和引號括住它們來做為標識碼([''][""])。 例如,['where']。 如需詳細資訊,請參閱 標識符命名規則

此查詢具有單一表格式表達式語句。 語句的開頭是一個稱為 stormEvents 之數據表的參考,並包含數個運算符,wherecount,每一個以管道分隔。 源數據表的數據列會依 StartTime 數據行的值進行篩選,然後依 [State] 數據行的值進行篩選。 在最後一行中,查詢會傳回含有單一數據行的數據表,以及包含其餘數據列計數的單一數據列。

若要嘗試更多 Kusto 查詢,請參閱 教學課程:撰寫 Kusto 查詢

管理命令

相較於 Kusto 查詢,Management 命令 是 Kusto 處理或修改資料或元數據的要求。 例如,下列管理命令會建立具有兩個數據行的新 Kusto 數據表,LevelText

.create table Logs (Level:string, Text:string)

管理命令有自己的語法,這不是 KQL 語法的一部分,但兩者共用許多概念。 特別是,管理命令與查詢的區別是命令文字中的第一個字元是點 (.) 字元 (無法啟動查詢)。 這種區別可防止許多種類的安全性攻擊,只是因為它會防止將管理命令內嵌在查詢中。

並非所有管理命令都會修改數據或元數據。 以 .show開頭的大型命令類別是用來顯示元數據或數據。 例如,.show tables 命令會傳回目前資料庫中所有數據表的清單。

如需管理命令的詳細資訊,請參閱 管理命令概觀

其他服務中的 KQL

其他許多Microsoft服務都會使用 KQL。 如需在這些環境中使用 KQL 的特定資訊,請參閱下列連結: