共用方式為


使用 NLog 接收將資料內嵌至 Azure Data Explorer

重要

此連接器可用於 Microsoft Fabric 中的 即時分析 。 使用本文中的指示,但有下列例外狀況:

NLog 是各種 .NET 平臺的彈性且免費的記錄平臺,包括 .NET 標準。 NLog 可讓您寫入數個目標,例如資料庫、檔案或主控台。 使用 NLog,您可以即時變更記錄組態。 NLog 接收是 NLog 的目標,可讓您將記錄訊息傳送至 Azure Data Explorer叢集。 外掛程式建置在 Azure-Kusto-Data 程式庫之上,並提供有效率的方式將記錄接收至叢集。

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

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

必要條件

設定環境

在本節中,您將準備環境以使用 NLog 連接器。

安裝套件

新增 NLog.Azure.Kusto NuGet 套件。 使用指定 NuGet 套件名稱的 Install-Package 命令。

Install-Package NLog.Azure.Kusto

建立Microsoft Entra應用程式註冊

Microsoft Entra應用程式驗證用於需要存取 Azure Data Explorer且沒有使用者的應用程式。 若要使用 NLog 連接器擷取資料,您必須建立並註冊Microsoft Entra服務主體,然後授權此主體內嵌 Azure Data Explorer 資料庫的資料。

  1. 使用 Azure Data Explorer 叢集,遵循在 Azure Data Explorer 中建立Microsoft Entra應用程式註冊中的步驟 1-7。
  2. 儲存下列值,以供後續步驟使用:
    • 應用程式 (用戶端) 識別碼
    • 目錄 (租用戶) 識別碼
    • 用戶端秘密金鑰值

授與Microsoft Entra應用程式許可權

  1. Web UI的 [查詢] 索引標籤中,連線到您的叢集。 如需如何連線的詳細資訊,請參閱 新增叢集

  2. 流覽至您要內嵌資料的資料庫。

  3. 執行下列管理命令,取代預留位置。 將 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 Data Explorer目標群組態新增至您的應用程式

使用下列步驟來:

  • 新增 Azure Data Explorer目標群組態
  • 建置並執行應用程式
  1. 在 NLog 組態檔中新增 Azure Data Explorer目標。

    <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 Data Explorer Nlog 連接器

  2. 使用 NLog 接收將資料傳送至 Azure Data Explorer。 例如:

    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);
    
  3. 建置並執行應用程式。 例如,如果您使用 Visual Studio,請按 F5。

  4. 確認資料位於您的叢集中。 在 Web UI中,執行下列查詢,以先前使用的資料表名稱取代預留位置:

    <TableName>
    | take 10
    

執行範例應用程式

使用範例記錄產生器應用程式作為示範如何設定及使用 NLog 接收的範例。

  1. 使用下列 git 命令複製 NLog 接收的 git 存放庫

    git clone https://github.com/Azure/azure-kusto-nlog-sink.git
    
  2. 設定下列環境變數,讓 NLog 組態檔可以立即從環境讀取它們:

    變數 Description
    INGEST_ENDPOINT 格式https://ingest-< 叢集中叢集 > 的內嵌 URI。 <region.kusto.windows.net >
    資料庫 目標資料庫的區分大小寫名稱。
    APP_ID 驗證所需的應用程式用戶端識別碼。 您已在建立Microsoft Entra應用程式註冊中儲存此值。
    APP_KEY 驗證所需的應用程式金鑰。 您已在建立Microsoft Entra應用程式註冊中儲存此值。
    AZURE_TENANT_ID 註冊應用程式的租使用者識別碼。 您已在建立Microsoft Entra應用程式註冊中儲存此值。

    您可以手動或使用下列命令來設定環境變數:

    $env:INGEST_ENDPOINT="<ingestionURI>"
    $env:APP_ID="<appId>"
    $env:APP_KEY="<appKey>"
    $env:AZURE_TENANT_ID="<tenant>"
    $env:DATABASE="<databaseName>"
    
  3. 在您的終端機中,流覽至複製存放庫的根資料夾,然後執行下列 dotnet 命令來建置應用程式:

    cd .\NLog.Azure.Kusto.Samples\
    dotnet build
    
  4. 在您的終端機中,流覽至 samples 資料夾,然後執行下列 dotnet 命令以執行應用程式:

    dotnet run
    
  5. Web UI中,選取目標資料庫,然後執行下列查詢來探索擷取的資料。

    ADXNLogSample
    | take 10
    

    您的輸出看起來應該類似下圖:

    包含 10 個函式和結果的資料表螢幕擷取畫面。