使用 NLog 接收將數據內嵌至 Azure 數據總管
重要
此連接器可用於 Microsoft Fabric 中的即時智慧 。 使用本文中的指示,但有下列例外狀況:
- 如有需要,請使用建立 KQL 資料庫中的 指示建立資料庫。
- 如有需要,請使用建立空白數據表中的 指示建立數據表。
- 使用複製 URI 中的 指示取得查詢或擷取 URI。
- 在 KQL 查詢集中執行查詢。
NLog 是各種 .NET 平台的彈性且免費的記錄平臺,包括 .NET 標準。 NLog 可讓您寫入數個目標,例如資料庫、檔案或控制台。 使用 NLog,您可以即時變更記錄設定。 NLog 接收是 NLog 的目標,可讓您將記錄訊息傳送至 Azure 數據總管叢集。 外掛程式建置在 Azure-Kusto-Data 連結庫之上,並提供將記錄接收至叢集的有效方式。
在本文中,您將學會如何:
如需數據連接器的完整清單,請參閱 數據連接器概觀。
必要條件
- .NET SDK 6.0 或更新版本
- Azure 數據總管 叢集和資料庫
設定您的環境
在本節中,您將準備環境以使用 NLog 連接器。
Install the package
新增 NLog.Azure.Kusto NuGet 套件。 使用 Install-Package 命令,指定 NuGet 套件的名稱。
Install-Package NLog.Azure.Kusto
建立 Microsoft Entra 應用程式註冊
Microsoft Entra 應用程式驗證用於需要存取 Azure 數據總管且沒有用戶的應用程式。 若要使用 NLog 連接器擷取數據,您必須建立並註冊Microsoft Entra 服務主體,然後授權此主體內嵌 Azure 數據總管資料庫的數據。
- 使用 Azure 數據總管叢集,請遵循在 Azure 數據總管中建立Microsoft Entra 應用程式註冊中的步驟 1-7。
- 儲存下列值,以供後續步驟使用:
- 應用程式 (用戶端) 識別碼
- 目錄 (租用戶) 識別碼
- 用戶端秘密金鑰值
授與Microsoft Entra 應用程式許可權
在 Web UI 的 [查詢] 索引標籤中,連線到您的叢集。 如需如何連線的詳細資訊,請參閱 新增叢集。
流覽至您要內嵌數據的資料庫。
執行下列管理命令,取代佔位元。 將 DatabaseName 取代為目標資料庫的名稱,並將 ApplicationID 取代為先前儲存的值。 此命令會授與應用程式 資料庫擷取器 角色。 如需詳細資訊,請參閱 管理資料庫安全性角色。
.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>') 'Azure Data Explorer App Registration'
注意
最後一個參數是一個字串,當您查詢與資料庫相關聯的角色時,會顯示為附注。 如需詳細資訊,請參閱 檢視現有的安全性角色。
建立數據表和擷取對應
建立傳入數據的目標數據表。
在查詢編輯器中,執行下表 建立命令,將佔位元 TableName 取代為目標數據表的名稱:
.create table <TableName> (Timestamp:datetime, Level:string, Message:string, FormattedMessage:dynamic, Exception:string, Properties:dynamic)
將 Azure 資料總管目標組態新增至您的應用程式
使用下列步驟:
- 新增 Azure 數據總管目標組態
- 建置並執行應用程式
在 NLog 組態檔中新增 Azure 數據總管目標。
<targets> <target name="adxtarget" xsi:type="ADXTarget" IngestionEndpointUri="<ADX connection string>" Database="<ADX database name>" TableName="<ADX table name>" ApplicationClientId="<AAD App clientId>" ApplicationKey="<AAD App key>" Authority="<AAD tenant id>" /> </targets> ##Rules <rules> <logger name="*" minlevel="Info" writeTo="adxtarget" /> </rules>
如需其他選項,請參閱 Azure 數據總管 Nlog 連接器。
使用 NLog 接收將數據傳送至 Azure 數據總管。 例如:
logger.Info("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs); logger.Error(exceptionObj, "This was exception"); logger.Debug("Processed {@Position} in {Elapsed:000} ms. ", position, elapsedMs); logger.Warn("Processed {@Position} in {Elapsed:000} ms. ", position, elapsedMs);
建置並執行應用程式。 例如,如果您使用 Visual Studio,請按 F5。
確認數據位於您的叢集中。 在 Web UI 中,執行下列查詢,將佔位元取代為先前使用的資料表名稱:
<TableName> | take 10
執行範例應用程式
使用範例記錄產生器應用程式作為範例,示範如何設定和使用 NLog 接收。
使用下列 git 命令複製 NLog 接收的 git 存放庫 :
git clone https://github.com/Azure/azure-kusto-nlog-sink.git
設定下列環境變數,讓 NLog 組態檔可以立即從環境讀取它們:
變數 描述 INGEST_ENDPOINT 叢集格式https://ingest-<>為叢集的內嵌URI。<region.kusto.windows.net>。 資料庫 目標資料庫的區分大小寫名稱。 APP_ID 驗證所需的應用程式用戶端識別碼。 您已在建立 Microsoft Entra 應用程式註冊中儲存此值。 APP_KEY 驗證所需的應用程式金鑰。 您已在建立 Microsoft Entra 應用程式註冊中儲存此值。 AZURE_TENANT_ID 註冊應用程式之租用戶的標識碼。 您已在建立 Microsoft Entra 應用程式註冊中儲存此值。 您可以手動或使用下列命令來設定環境變數:
在您的終端機內,瀏覽至複製存放庫的根資料夾,然後執行下列
dotnet
命令來建置應用程式:cd .\NLog.Azure.Kusto.Samples\ dotnet build
在您的終端機內,流覽至 samples 資料夾,然後執行下列
dotnet
命令以執行應用程式:dotnet run
在 Web UI 中,選取目標資料庫,然後執行下列查詢來探索擷取的數據。
ADXNLogSample | take 10
您的輸出看起來應該類似下圖:
相關內容
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應