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
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.
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
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
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}
Z vrácených dat JSON zkopírujte
appId
password
tenant
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
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.
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.
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);
Sestavte a spusťte aplikaci. Pokud například používáte Visual Studio, stiskněte klávesu F5.
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.
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
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ů:
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
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
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: