共用方式為


使用 Fluent Bit 將數據內嵌至 Azure 數據總管

Fluent Bit 是開放原始碼代理程式,可收集來自各種來源的記錄、計量和追蹤。 它可讓您先篩選、修改和匯總事件數據,再將其傳送至記憶體。 Azure 資料總管是一項快速且可高度調整的資料探索服務,可用於處理記錄和遙測資料。 本文會引導您完成使用 Fluent Bit 將數據傳送至 Azure 數據總管的程式。

在本文中,您將學會如何:

如需數據連接器的完整清單,請參閱 數據連接器概觀

必要條件

您可以針對查詢環境使用任何可用的 查詢工具

建立數據表來儲存您的記錄

Fluent Bit 會以 JSON 格式轉送記錄,其中包含三個屬性: log (動態)、 tag字串)和 timestampdatetime)。

您可以為每個屬性建立具有資料行的數據表。 或者,如果您有結構化記錄,您可以建立數據表,其中包含對應至自定義數據行的記錄屬性。 若要深入瞭解,請選取相關的索引標籤。

若要從 Fluent Bit 建立傳入記錄的數據表:

  1. 流覽至您的查詢環境。

  2. 選取您要建立資料表的資料庫。

  3. 執行下列 .create table 命令

    .create table FluentBitLogs (log:dynamic, tag:string, timestamp:datetime)
    

    傳入的 JSON 屬性會自動對應到正確的數據行。

使用擷取數據的許可權註冊 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 數據中,複製 appIdpasswordtenant 以供日後使用。

    {
      "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 應用程式和服務主體。

將許可權授與服務主體

執行下列命令,將 取代 <MyDatabase> 為資料庫的名稱:

.add database MyDatabase ingestors ('aadapp=<Application (client) ID>;<Directory (tenant) ID>')

此命令會將應用程式許可權授與將數據內嵌至資料表。 如需詳細資訊,請參閱 角色型訪問控制

設定 Fluent Bit 將記錄傳送至數據表

若要設定 Fluent Bit 將記錄傳送至 Azure 數據總管數據表,請使用下列輸出屬性建立 傳統模式YAML 模式 組態檔:

欄位 描述
Name azure_kusto
比對 要與傳入記錄標記相符的模式。 它會區分大小寫,並支援星號 (*) 字元作為通配符。
Tenant_Id 來自註冊具有內嵌數據許可權的 Microsoft Entra 應用程式的目錄 (tenant) 識別碼
Client_Id 應用程式 (client) 識別碼 ,來自 註冊具有內嵌數據許可權的 Microsoft Entra 應用程式。
Client_Secret 用戶端秘密密鑰值 註冊具有擷取數據許可權的 Microsoft Entra 應用程式。
Ingestion_Endpoint 使用叢集概觀下 Azure 入口網站 中找到的數據擷取 URI
Database_Name 包含記錄數據表的資料庫名稱。
Table_Name 建立數據表來儲存記錄的數據表名稱。
Ingestion_Mapping_Reference 建立數據表的擷取對應名稱。 如果您未建立擷取對應,請從組態檔中移除 屬性。

若要查看範例組態檔,請選取相關的索引標籤:

[SERVICE]
    Daemon Off
    Flush 1
    Log_Level trace
    HTTP_Server On
    HTTP_Listen 0.0.0.0
    HTTP_Port 2020
    Health_Check On

[INPUT]
    Name tail
    Path /var/log/containers/*.log
    Tag kube.*
    Mem_Buf_Limit 1MB
    Skip_Long_Lines On
    Refresh_Interval 10

[OUTPUT]
    Name azure_kusto
    Match *
    Tenant_Id azure-tenant-id
    Client_Id azure-client-id
    Client_Secret azure-client-secret
    Ingestion_Endpoint azure-data-explorer-ingestion-endpoint
    Database_Name azure-data-explorer-database-name
    Table_Name azure-data-explorer-table-name

確認數據已登陸數據表

設定完成後,記錄應該會抵達您的數據表。

  1. 若要確認已擷取記錄,請執行下列查詢:

    FluentBitLogs
    | count
    
  2. 若要檢視記錄數據的範例,請執行下列查詢:

    FluentBitLogs
    | take 100