共用方式為


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

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

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

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

必要條件

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

建立資料表來儲存您的記錄

Fluent Bit 會以 JSON 格式轉送記錄,其中包含三個屬性:log (dynamic)、tag (string) 和 timestamp (datetime)。

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

若要從 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": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "displayName": "my-service-principal",
      "name": "my-service-principal",
      "password": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "tenant": "00001111-aaaa-2222-bbbb-3333cccc4444"
    }
    

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

將權限授與服務主體

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

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

此命令會授與應用程式權限,以將資料擷取至資料表。 如需詳細資訊,請參閱角色型存取控制

設定 Fluent Bit 將記錄傳送至資料表

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

欄位 描述
名稱 azure_kusto
Match 與傳入記錄標記相符的模式。 它會區分大小寫,並支援星號 (*) 字元作為萬用字元。
Tenant_Id 來自註冊具有擷取資料權限的 Microsoft Entra 應用程式目錄 (租用戶) 識別碼
Client_Id 來自註冊具有擷取資料權限的 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