使用 Fluent Bit 將數據內嵌至 Azure 數據總管
Fluent Bit 是開放原始碼代理程式,其會收集來自各種來源的記錄、計量和追蹤。 它可讓您先篩選、修改和彙總事件資料,再將其傳送至儲存體。 Azure 資料總管是快速及可調整的資料探索服務,以取得記錄和遙測資料。 本文會引導您完成使用 Fluent Bit 將數據傳送至 Azure 數據總管的程式。
在本文中,您將學會如何:
如需資料連接器的完整清單,請參閱資料連接器概觀。
必要條件
- Fluent Bit。
- Azure 資料總管叢集和資料庫。 建立叢集和資料庫。
您可以針對查詢環境使用任何可用的 查詢工具 。
建立資料表來儲存您的記錄
Fluent Bit 會以 JSON 格式轉送記錄,其中包含三個屬性:log
(dynamic)、tag
(string) 和 timestamp
(datetime)。
您可以為每個屬性建立具有資料行的資料表。 或者,如果您有結構化記錄,您可以建立資料表,其中包含與自訂資料行對應的記錄屬性。 若要深入瞭解,請選取相關的索引標籤。
若要從 Fluent Bit 建立傳入記錄的資料表:
瀏覽至您的查詢環境。
選取您要建立資料表所在的資料庫。
執行下列
.create table
命令:.create table FluentBitLogs (log:dynamic, tag:string, timestamp:datetime)
傳入的 JSON 屬性會自動對應到正確的資料行。
註冊具有擷取資料權限的 Microsoft Entra 應用程式
Microsoft Entra 服務主體可以透過 Azure 入口網站或以程式設計方式建立,如下列範例所示。
此服務主體是連接器用來在 Kusto 資料表中寫入您的資料的識別。 您稍後會授與此服務主體存取 Kusto 資源的權限。
透過 Azure CLI 登入您的 Azure 訂用帳戶。 然後在瀏覽器中進行驗證。
az login
選擇用來託管主體的訂用帳戶。 當您有多個訂用帳戶時,需要此步驟。
az account set --subscription YOUR_SUBSCRIPTION_GUID
建立服務主體。 在此範例中,服務主體稱為
my-service-principal
。az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
從傳回的 JSON 資料中,複製
appId
、password
和tenant
供日後使用。{ "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
驗證資料已登陸資料表
設定完成後,記錄應該會抵達您的資料表。
若要驗證已擷取記錄,請執行下列查詢:
FluentBitLogs | count
若要檢視記錄資料的範例,請執行下列查詢:
FluentBitLogs | take 100