Sdílet prostřednictvím


Příjem dat pomocí jímky NLog do Azure Data Exploreru

NLog je flexibilní a bezplatná platforma protokolování pro různé platformy .NET, včetně .NET Standard. NLog umožňuje zapisovat do několika cílů, jako je databáze, soubor nebo konzola. S protokolem NLog můžete změnit konfiguraci protokolování za běhu. Jímka NLog je cílem protokolu NLog, který umožňuje odesílat zprávy protokolu do clusteru KQL. Modul plug-in je založený na knihovně Azure-Kusto-Data a poskytuje efektivní způsob, jak jímit protokoly do clusteru.

V tomto článku se dozvíte, jak ingestovat data pomocí jímky nLog.

Úplný seznam datových konektorů najdete v přehledu datových konektorů.

Požadavky

  • .NET SDK 6.0 nebo novější
  • Cluster a databáze Azure Data Exploreru

Nastavení prostředí

V této části připravíte prostředí na použití konektoru NLog.

Nainstalujte balíček .

Přidejte balíček NuGet NLog.Azure.Kusto. Použijte příkaz Install-Package určující název balíčku NuGet.

Install-Package NLog.Azure.Kusto

Vytvoření registrace aplikace Microsoft Entra

Ověřování aplikací Microsoft Entra se používá pro aplikace, které potřebují přístup k platformě bez přítomnosti uživatele. Pokud chcete získat data pomocí konektoru NLog, musíte vytvořit a zaregistrovat instanční objekt Microsoft Entra a pak tento objekt zabezpečení autorizovat k získání dat z databáze.

Instanční objekt Microsoft Entra je možné vytvořit prostřednictvím webu Azure Portal nebo programově, jako v následujícím příkladu.

Tento instanční objekt bude identita, kterou konektor používá k zápisu dat do tabulky v Kusto. Později udělíte oprávnění pro tento instanční objekt pro přístup k prostředkům Kusto.

  1. Přihlaste se ke svému předplatnému Azure prostřednictvím Azure CLI. Pak se ověřte v prohlížeči.

    az login
    
  2. Zvolte předplatné, které má být hostitelem objektu zabezpečení. Tento krok je potřeba v případě, že máte více předplatných.

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. Vytvořte instanční objekt. V tomto příkladu se instanční objekt nazývá my-service-principal.

    az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
    
  4. Z vrácených dat JSON zkopírujte appIdpasswordtenant a pro budoucí použití.

    {
      "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"
    }
    

Vytvořili jste aplikaci Microsoft Entra a instanční objekt.

Uložte následující hodnoty, které se mají použít v dalších krocích: * ID aplikace (klient) ID * ID adresáře (tenanta) * Hodnota tajného klíče klienta

Udělení oprávnění aplikace Microsoft Entra

  1. V prostředí dotazu spusťte následující příkaz pro správu a nahraďte zástupné symboly. Nahraďte DatabaseName názvem cílové databáze a APPLICATIONID dříve uloženou hodnotou. Tento příkaz aplikaci udělí roli databázového ingestoru. Další informace najdete v tématu Správa rolí zabezpečení databáze.

    .add database <DatabaseName> ingestors ('aadapp=<ApplicationID>') 'NLOG Azure App Registration role'
    

    Poznámka:

    Poslední parametr je řetězec, který se zobrazí jako poznámky při dotazování rolí přidružených k databázi. Další informace najdete v tématu Zobrazení existujících rolí zabezpečení.

Vytvoření mapování tabulek a příjmu dat

Vytvořte cílovou tabulku pro příchozí data.

  • V editoru dotazů spusťte následující příkaz pro vytvoření tabulky a nahraďte zástupný název TableName názvem cílové tabulky:

    .create table <TableName> (Timestamp:datetime, Level:string, Message:string, FormattedMessage:dynamic, Exception:string, Properties:dynamic)
    

Přidání cílové konfigurace do aplikace

Pomocí následujících kroků:

  • Přidání cílové konfigurace
  • Sestavte a spusťte aplikaci.
  1. Přidejte cíl do konfiguračního souboru NLogu.

    <targets>
        <target name="targettable" xsi:type="TargetTable"
        IngestionEndpointUri="<Connection string>"
        Database="<Database name>"
        TableName="<Table name>"
        ApplicationClientId="<Entra App clientId>"
        ApplicationKey="<Entra App key>"
        Authority="<Entra tenant id>"
        />
    </targets>
    
    ##Rules
    <rules>
        <logger name="*" minlevel="Info" writeTo="adxtarget" />
    </rules>
    

    Další možnosti najdete v tématu Konektor Nlog.

  2. Odeslání dat pomocí jímky NLog Příklad:

    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. Sestavte a spusťte aplikaci. Pokud například používáte Visual Studio, stiskněte klávesu F5.

  4. Ověřte, že jsou data ve vašem clusteru. V prostředí dotazu spusťte následující dotaz a nahraďte zástupný text názvem tabulky, kterou jste použili dříve:

    <TableName>
    | take 10
    

Spuštění ukázkové aplikace

Ukázkovou aplikaci generátoru protokolů použijte jako příklad ukazující, jak nakonfigurovat a použít jímku NLog.

  1. Naklonujte úložiště Git jímky NLog pomocí následujícího příkazu Git:

    git clone https://github.com/Azure/azure-kusto-nlog-sink.git
    
  2. Nastavte následující proměnné prostředí, aby konfigurační soubor NLog mohl číst hned od prostředí:

    Proměnná Popis
    INGEST_ENDPOINT Identifikátor ingestování URI cíle dat. Tento identifikátor URI jste zkopírovali v požadavcích.
    DATABÁZE V cílové databázi se rozlišují malá a velká písmena.
    APP_ID ID klienta aplikace vyžadované pro ověřování. Tuto hodnotu jste uložili v části Vytvoření registrace aplikace Microsoft Entra.
    APP_KEY Klíč aplikace vyžadovaný pro ověřování. Tuto hodnotu jste uložili v části Vytvoření registrace aplikace Microsoft Entra.
    AZURE_TENANT_ID ID tenanta, ve kterém je aplikace zaregistrovaná. Tuto hodnotu jste uložili v části Vytvoření registrace aplikace Microsoft Entra.

    Proměnné prostředí můžete nastavit ručně nebo pomocí následujících příkazů:

    $env:INGEST_ENDPOINT="<ingestionURI>"
    $env:APP_ID="<appId>"
    $env:APP_KEY="<appKey>"
    $env:AZURE_TENANT_ID="<tenant>"
    $env:DATABASE="<databaseName>"
    
  3. V terminálu přejděte do kořenové složky klonovaného úložiště a spuštěním následujícího dotnet příkazu sestavte aplikaci:

    cd .\NLog.Azure.Kusto.Samples\
    dotnet build
    
  4. V terminálu přejděte do složky s ukázkami a spuštěním následujícího dotnet příkazu spusťte aplikaci:

    dotnet run
    
  5. V prostředí dotazu vyberte cílovou databázi a spuštěním následujícího dotazu prozkoumejte přijatá data.

    ADXNLogSample
    | take 10
    

    Výstup by měl vypadat podobně jako na následujícím obrázku:

    Snímek obrazovky tabulky s funkcí take 10 a výsledky