共用方式為


將數據從小兒串流擷取到 Azure 數據總管

Blobl Stream 是一種處理引擎,可安全地從任何來源收集、處理及串流計算機事件數據。 它可讓您剖析及處理任何目的地的數據,以安全的方式進行分析和管理。

本文說明如何使用小兒串流內嵌數據。

如需資料連接器的完整清單,請參閱資料整合概觀

必要條件

建立 Microsoft Entra 服務主體

Microsoft Entra 服務主體可以透過 Azure 入口網站 或以程序設計方式建立,如下列範例所示。

此服務主體是連接器用來將數據寫入 Kusto 中數據表的身分識別。 您可以授與此服務主體存取 Kusto 資源的許可權。

  1. 透過 Azure CLI 登入您的 Azure 訂用帳戶。 然後在瀏覽器中進行身份驗證。

    az login
    
  2. 選擇代管主體的訂閱。 當您有多個訂閱時,需要此步驟。

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. 建立服務主體。 此範例中,服務主體需符合稱為 my-service-principal

    az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
    
  4. 從傳回的 JSON 資料中,拷貝 appIdpassword 和,tenant以供將來使用。

    {
      "appId": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn",
      "displayName": "my-service-principal",
      "name": "my-service-principal",
      "password": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn",
      "tenant": "1234abcd-e5f6-g7h8-i9j0-1234kl5678mn"
    }
    

您已建立您的 Microsoft Entra 應用程式和服務主體。

建立目標資料表。

建立內送數據的目標數據表和內嵌對應,以將內嵌的數據行對應至目標數據表中的數據行。

  1. 在查詢編輯器中執行下表 建立命令 ,將佔位元 TableName 取代為目標數據表的名稱:

    .create table <TableName> (_raw: string, _time: long, cribl_pipe: dynamic)
    
  2. 執行下列 建立擷取對應 命令,將佔位元 TableName 取代為目標數據表名稱,並將 TableNameMapping 取代為擷取對應的名稱:

    .create table <TableName> ingestion csv mapping '<TableNameMapping>' 'CriblLogMapping' '[{"Name":"_raw","DataType":"string","Ordinal":"0","ConstValue":null},{"Name":"_time","DataType":"long","Ordinal":"1","ConstValue":null},{"Name":"cribl_pipe","DataType":"dynamic","Ordinal":"2","ConstValue":null}]'
    
  3. 授與服務主體從建立Microsoft Entra 服務主體資料庫擷取器角色許可權,以使用資料庫。 如需詳細資訊,請參閱 範例。 將佔位元 DatabaseName 取代為目標資料庫的名稱,並將 ApplicationID 取代 AppId 為您在建立Microsoft Entra 服務主體時儲存的值。

    .add database <DatabaseName> ingestors ('aadapp=<ApplicationID>') 'App Registration'
    

建立小兒串流目的地

下一節說明如何建立一個將數據寫入 Kusto 中數據表的 Blob Stream 目的地。 每個數據表都需要個別的 Blob Stream 目的地連接器。

選取目的地

若要將克里克爾串流連線到您的數據表:

  1. 從 Blobl 的頂端導覽中,選取 [管理 ],然後選取 [背景工作群組]。

  2. 選取 [路由>快速連線][串流]>[新增目的地]。

  3. 在 [ 設定新的 QuickConnect 目的地 ] 視窗中,選擇 [Azure 數據總管],然後選擇 [ 立即新增]。

設定一般設定

在 [新增數據總管] 視窗中,於 [一般設定] 中設定下列設定:

設定 Description
輸出標識碼 <OutputID>,例如 KustoDestination 用來識別目的地的名稱。
擷取模式 批次處理 (預設值) 或串流 擷取模式的設定。 批處理可讓您的數據表在擷取大量數據時,從 Blobl 儲存容器提取批次的數據。 串流會將數據直接傳送至目標 KQL 數據表。 串流對於擷取較小的數據量很有用,例如即時傳送重大警示。 串流可以達到比批處理低的延遲。 如果擷取模式設定為 [串流],您必須啟用串流原則。 如需詳細資訊,請參閱 串流擷取原則
叢集基底 URI 基底 URI 底 URI
擷取服務 URI 擷取 URI 選取 [批處理模式] 時顯示。 擷取 URI
資料庫名稱 <DatabaseName> 目標資料庫的名稱。
資料表名稱 <TableName> 目標數據表的名稱。
驗證資料庫設定 (預設值)或 [否]。 驗證您在儲存或啟動目的地時輸入的服務主體應用程式認證。 它會驗證數據表名稱,但新增對應對象開啟時除外。 如果您的應用程式沒有資料庫查看器和數據表查看器角色,則應該停用此設定。
新增對應物件 (預設值。) 只有在選取 [批處理模式] 而非預設 [數據對應 ] 文字字段時,才會顯示。 選取 [是 ] 會開啟視窗,以輸入數據對應做為 JSON 物件。
資料對應 建立目標數據表步驟中所定義的對應架構名稱。 對應架構名稱。 [新增對應物件] 設定為 [否] 時的默認檢視。
壓縮 gzip (預設值) 當 [數據格式] 設定為 Parquet 時無法使用 Compress
資料格式 JSON (預設值)、Raw 或 Parquet。 數據格式。 Parquet 僅適用於 Batching 模式,且僅支援 Linux。
Backpressure 行為 封鎖 (預設值) 或 卸除 選擇當接收者施加反壓時,是否要封鎖或卸除事件。
Tags (標籤) 選擇性值 選擇性標籤,以篩選和群組克里克爾數據流的 [管理目的地] 頁面中的目的地。 使用標籤名稱之間的索引標籤或硬式傳回。 這些標記不會新增至已處理的事件。

完成時,選取 [ 下一步]。

驗證設定

選取 提要欄位中的 [驗證設定 ]。 使用您在建立Microsoft Entra 服務主體儲存的值,以及您的基底 URI,如下所示:

設定 Description
租用戶識別碼 <TenantID> tenant使用您在建立Microsoft Entra 服務主體儲存的值。
用戶端識別碼 <ClientID> appId使用您在建立Microsoft Entra 服務主體儲存的值。
Scope <baseuri>/.default 使用baseuri基底 URI 中的值
驗證方法 用戶端密碼用戶端密碼(文字密碼)憑證 選項為客戶端密碼:使用您在建立用戶端秘密Microsoft Entra 服務主體中所建立之Microsoft Entra 應用程式的客戶端密碼。 針對憑證,您的憑證會使用您註冊的公鑰/將會註冊您在建立Microsoft Entra 服務主體中所建立Microsoft Entra 應用程式。

然後選取下一步

永續性佇列

當擷取模式設定為 [串流],而Backpressure行為設定為 [永續性佇列] 時顯示。

設定 Description
檔案大小上限 1 MB (預設) 關閉檔案之前要達到的佇列檔案大小上限。 輸入數位時,包括 KB 或 MB 等單位。
佇列大小上限 5 GB(預設值) 在目的地停止佇列數據之前,佇列可以在每個背景工作進程上取用的最大磁碟空間量。 具有 KB、MB 或 GB 等單位之正數的必要值。 最大值為 1 TB。
佇列檔案路徑 $CRIBL_HOME/state/queues (預設值) 永續性佇列檔案位置。 Blob Stream 會附加 /<worker‑id>/<output‑id> 至此值。
壓縮 無 (預設值),Gzip 在關閉時,用來壓縮保存數據的壓縮方法。
佇列完整行為 封鎖或卸除 當佇列因磁碟不足或磁碟容量不足而造成反壓時,選擇封鎖或卸除事件。
嚴格排序 (預設值) 或 當設定為 [是 ] 事件時,會根據第一個中的第一個順序轉送。 設定為 [ ] 以在先前的佇列事件之前傳送新事件。
排水速率限制 (EPS) 0 (預設值) 當 Strict 排序設定為 [否] 時,就會顯示此選項,可讓您在從佇列寫入接收者時設定節流速率(以每秒事件為單位)。 節流佇列事件的清空速率可提升新的或作用中聯機輸送量。 零會停用節流。
清除永續性佇列 NA 選取以刪除目前已排入佇列以傳遞至目的地的檔案。 您必須確認此動作,因為佇列數據會永久刪除,而不會傳遞。

完成時,請選取 [下一步]。

處理設定

設定 Description
管線 <\defined_pipeline> 選擇性管線,在使用此輸出傳送數據之前,先處理數據。
系統欄位 cribl_pipe(預設值)、cribl_host、、cribl_outputcribl_inputcribl_route、 或cribl_wp 欄位清單,這些欄位會在傳送至目的地之前自動新增至事件。 支援萬用字元。

完成時,請選取 [下一步]。

Parquet 設定

選取 [數據格式] 的 Parquet 顯示。

選擇 Parquet 會開啟 [Parquet 設定] 索引標籤,以選取 Parquet 架構。

設定 Description
自動架構 開啟關閉 選取 [開啟 ] ,根據 Blobl Stream 寫入的每個 Parquet 檔案事件來產生 Parquet 架構。
Parquet 架構 下拉式清單 當 [自動架構] 設定為 [關閉] 時,會顯示可讓您選取 Parquet 架構。
Parquet 版本 1.0、2.4、2.6 (預設值) 版本會決定支持的數據類型及其表示方式。
數據頁版本 V1、V2 (預設值) 數據頁串行化格式。 如果您的 Parquet 讀取器不支援 Parquet V2,請使用 V1。
群組數據列限制 1000 (預設值) 每個群組可以包含的數據列數目上限。
頁面大小 1 MB (預設) 頁面區段的目標記憶體大小。 較低的值可以改善讀取速度,而較高的值可以改善壓縮。
記錄無效的數據列 選取 [是] 且 [記錄層級] 設定為 debug,輸出最多 20 個因數據格式不符而略過的唯一數據列。
寫入統計數據 開啟 (預設值) 或 關閉 如果您已設定 Parquet 統計資料檢視工具,請選取 [開啟 ]。
寫入頁面索引 開啟 (預設值) 或 關閉 如果您的 Parquet 讀取器使用 Parquet 頁面索引統計數據來啟用頁面略過,請選取 [開啟 ]。
寫入頁面總和檢查碼 開啟關閉 如果您使用 Parquet 工具來使用 Parquet 頁面總和檢查碼來檢查數據完整性,請選取 [開啟 ]。
元數據(選擇性)* 可包含為索引鍵/值組的目的地檔案元數據屬性。

重試

當擷取模式設定為 [串流] 時顯示。

設定 Description
接受 Retry-After 標頭 是否要接受 Retry-After 標頭。 啟用時,接收的 Retry-After 標頭優先於重試區段中其他設定的選項之前使用,只要標頭指定延遲 180 秒或更少。 否則會 Retry-After 忽略標頭。
失敗 HTTP 要求的設定 HTTP 狀態碼 如果 HTTP 狀態代碼無法連線,則會自動重試的清單。 Vaultl Stream 會自動重試 429 個失敗的要求。
重試逾時 HTTP 要求 開啟關閉 設定時,會有更多重試行為設定可供使用。
輪詢前間隔 (毫秒) 1000 毫秒 (預設值) 重試之前的等候時間。
輪詢乘數 2 秒(預設值) 用來做為指數輪詢演算法的基底,以判斷重試之間的間隔。
輪詢限制 (毫秒) 10,000 毫秒 (預設值) 最終串流重試的最大輪詢間隔。 可能的值範圍從 10,000 毫秒(10 秒)到 180,000 毫秒(3 分鐘)。

完成時,請選取 [下一步]。

進階設定

從提要欄位中選取 [進階設定 ]。 下列描述選取 Batching 時的進階設定:

設定 Description
立即排清 (預設值。) 設定為 [ ] 以覆寫 Kusto 中的數據匯總。 如需詳細資訊,請參閱 Kusto 內嵌連結庫的最佳做法。
成功時保留 Blob (預設值。) 設定為 [ ] 以在擷取完成時保留數據 Blob。
範圍標籤 <\ExtentTag,ET2,...> 如有需要,請將標籤設定為目標數據表的數據分割範圍。
透過標籤值強制執行唯一性 選取 [新增值 ] ingest-by 以指定要用來篩選傳入範圍的值清單,並捨棄符合所列值的範圍。 如需詳細資訊,請參閱 範圍(資料分區)
報表層級 DoNotReportFailuresOnlyFailuresAndSuccesses 擷取狀態報告層級。
報表方法 Queue (預設值)、 數據表QueueAndTable (建議。) 擷取狀態報告的目標。
其他欄位 如有需要,請新增更多組態屬性以傳送至擷取服務。
預備位置 /tmp (預設值) 本機文件系統位置,用來在壓縮之前緩衝處理盤案,並將其移至最終目的地。 克里維爾建議一個穩定和高效能的位置。
檔名後綴表達式 .${C.env["CRIBL_WORKER_ID"]}.${__format}${__compression === "gzip" ? ".gz" : ""}(預設值) 以引號或反引弧括住的 JavaScript 運算式,用來作為輸出檔名後綴。 format 可以是 JSON未經處理,可以是 __compression nonegzip。 隨機的六個字元序列會附加至檔名結尾,以防止它們遭到覆寫。
檔案大小上限 (MB) 32 MB(預設值) 檔案關閉之前可以到達的最大未壓縮輸出檔案大小,並移至記憶體容器。
檔案開啟時間上限 (秒) 300 秒 (預設值) 在檔案關閉並移至記憶體容器之前寫入檔案的時間上限,以秒為單位。
檔案空閒時間上限 (秒) 30 秒 (預設值) 關閉非使用中檔案之前,以秒為單位的時間上限,並移至記憶體容器。
最大開啟檔案 100 (預設值) 在最舊的開啟檔案關閉並移至記憶體容器之前,要同時保持開啟的檔案數目上限。
最大並行檔案元件 1 (預設值) 要同時上傳的檔案元件數目上限。 默認值為 1,最高為 10。 將值設定為一個,可循序傳送一個部分。
拿掉空白暫存 dirs (預設值) 或 切換為 [克里布利特串流] 移動檔案之後,會刪除空的暫存目錄。 這可防止孤立的空白目錄激增。 啟用時,會 公開預備清除期間
預備清除期間 300 (預設值) 啟用移除暫存 dirs 時,會以秒為單位的時間量,直到刪除空白目錄為止。 當 [移除空白暫存 dirs] 設定為 [是] 時顯示。 最小值為 10 秒,最大值為 86,400 秒(每 24 小時)。
環境 當空的 (預設值) 時,會在任何地方啟用設定。 如果您使用 GitOps,您可以指定要啟用設定的 Git 分支。

完成時,選取 [ 儲存]。

連線設定

從開啟的 [聯機組態] 視窗中,選取 [Passthru 連線],然後選取 [儲存]。 連接器會開始將數據排入佇列。

確認資料擷取

  1. 一旦數據抵達數據表,請檢查數據列計數來確認數據傳輸:

    <Tablename> 
    | count
    
  2. 確認在過去五分鐘內排入佇列的擷取:

    .show commands-and-queries 
    | where Database == "" and CommandType == "DataIngestPull" 
    | where LastUpdatedOn >= ago(5m)
    
  3. 確認擷取過程中沒有失敗:

    • 批次處理:
    .show ingestion failures
    
    • 針對串流:
    .show streamingingestion failures 
    | order by LastFailureOn desc
    
  4. 確認資料表中的資料:

    <TableName>
    | take 10
    

如需查詢範例和指引,請參閱在 KQLKusto 查詢語言 檔中撰寫查詢。