Pozyskiwanie danych za pomocą ujścia NLog do usługi Azure Data Explorer
NLog to elastyczna i bezpłatna platforma rejestrowania dla różnych platform .NET, w tym .NET Standard. Serwer NLog umożliwia zapisywanie w kilku miejscach docelowych, takich jak baza danych, plik lub konsola. Za pomocą programu NLog można zmienić konfigurację rejestrowania na bieżąco. Ujście NLog jest elementem docelowym dla serwera NLog, który umożliwia wysyłanie komunikatów dziennika do klastra KQL. Wtyczka jest oparta na bibliotece Azure-Kusto-Data i zapewnia wydajny sposób ujścia dzienników do klastra.
W tym artykule dowiesz się, jak pozyskiwać dane za pomocą ujścia nLog.
Aby uzyskać pełną listę łączników danych, zobacz Omówienie łączników danych.
Wymagania wstępne
Konfigurowanie środowiska
W tej sekcji przygotujesz środowisko do korzystania z łącznika NLog.
Instalowanie pakietu
Dodaj pakiet NuGet NLog.Azure.Kusto. Użyj polecenia Install-Package, określając nazwę pakietu NuGet.
Install-Package NLog.Azure.Kusto
Tworzenie rejestracji aplikacji Entra firmy Microsoft
Uwierzytelnianie aplikacji Entra firmy Microsoft jest używane w przypadku aplikacji, które muszą uzyskiwać dostęp do platformy bez obecności użytkownika. Aby uzyskać dane przy użyciu łącznika NLog, należy utworzyć i zarejestrować jednostkę usługi Microsoft Entra, a następnie autoryzować tę jednostkę do pobierania danych z bazy danych.
Jednostkę usługi Microsoft Entra można utworzyć za pomocą witryny Azure Portal lub programowo, jak w poniższym przykładzie.
Ta jednostka usługi będzie tożsamością używaną przez łącznik do zapisywania danych w tabeli w usłudze Kusto. Później przyznasz uprawnienia dla tej jednostki usługi w celu uzyskania dostępu do zasobów usługi Kusto.
Zaloguj się do subskrypcji platformy Azure za pomocą interfejsu wiersza polecenia platformy Azure. Następnie uwierzytelnij się w przeglądarce.
az login
Wybierz subskrypcję do hostowania podmiotu zabezpieczeń. Ten krok jest wymagany, gdy masz wiele subskrypcji.
az account set --subscription YOUR_SUBSCRIPTION_GUID
Utwórz jednostkę usługi. W tym przykładzie jednostka usługi nosi nazwę
my-service-principal
.az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
Z zwróconych danych JSON skopiuj wartości
appId
,password
itenant
do użycia w przyszłości.{ "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" }
Utworzono aplikację Microsoft Entra i jednostkę usługi.
Zapisz następujące wartości, które mają być używane w kolejnych krokach: * Identyfikator aplikacji (klienta) * Identyfikator katalogu (dzierżawy) * Wartość klucza tajnego klienta
Udzielanie uprawnień aplikacji Microsoft Entra
W środowisku zapytań uruchom następujące polecenie zarządzania, zastępując symbole zastępcze. Zastąp ciąg DatabaseName nazwą docelowej bazy danych i identyfikatorem ApplicationID wcześniej zapisaną wartością. To polecenie przyznaje aplikacji rolę ingestor bazy danych. Aby uzyskać więcej informacji, zobacz Zarządzanie rolami zabezpieczeń bazy danych.
.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>') 'NLOG Azure App Registration role'
Uwaga
Ostatni parametr to ciąg, który jest wyświetlany jako notatki podczas wykonywania zapytań dotyczących ról skojarzonych z bazą danych. Aby uzyskać więcej informacji, zobacz Wyświetlanie istniejących ról zabezpieczeń.
Tworzenie tabeli i mapowania pozyskiwania
Utwórz tabelę docelową dla danych przychodzących.
W edytorze zapytań uruchom następujące polecenie tworzenia tabeli, zastępując symbol zastępczy TableName nazwą tabeli docelowej:
.create table <TableName> (Timestamp:datetime, Level:string, Message:string, FormattedMessage:dynamic, Exception:string, Properties:dynamic)
Dodawanie konfiguracji docelowej do aplikacji
Wykonaj następujące czynności, aby:
- Dodawanie konfiguracji docelowej
- Skompiluj i uruchom aplikację
Dodaj element docelowy w pliku konfiguracji NLog.
<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>
Aby uzyskać więcej opcji, zobacz Nlog connector (Łącznik Nlog).
Wysyłanie danych przy użyciu ujścia NLog. Na przykład:
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);
Skompiluj i uruchom aplikację. Jeśli na przykład używasz programu Visual Studio, naciśnij F5.
Sprawdź, czy dane są w klastrze. W środowisku zapytania uruchom następujące zapytanie, zastępując symbol zastępczy nazwą użytej wcześniej tabeli:
<TableName> | take 10
Uruchamianie przykładowej aplikacji
Przykładowa aplikacja generatora dzienników przedstawia sposób konfigurowania i używania ujścia NLog.
Sklonuj repozytorium git ujścia NLog przy użyciu następującego polecenia git:
git clone https://github.com/Azure/azure-kusto-nlog-sink.git
Ustaw następujące zmienne środowiskowe, aby plik konfiguracji NLog mógł odczytywać je od razu ze środowiska:
Zmienna opis INGEST_ENDPOINT Identyfikator URI pozyskiwania dla celu danych. Ten identyfikator URI został skopiowany w wymaganiach wstępnych. BAZA DANYCH W nazwie docelowej bazy danych uwzględniana jest wielkość liter. APP_ID Identyfikator klienta aplikacji wymagany do uwierzytelniania. Zapisano tę wartość w temacie Tworzenie rejestracji aplikacji Entra firmy Microsoft. APP_KEY Klucz aplikacji wymagany do uwierzytelniania. Zapisano tę wartość w sekcji Tworzenie rejestracji aplikacji Entra Firmy Microsoft. AZURE_TENANT_ID Identyfikator dzierżawy, w której zarejestrowano aplikację. Zapisano tę wartość w sekcji Tworzenie rejestracji aplikacji Entra Firmy Microsoft. Zmienne środowiskowe można ustawić ręcznie lub za pomocą następujących poleceń:
W terminalu przejdź do folderu głównego sklonowanego repozytorium i uruchom następujące
dotnet
polecenie, aby skompilować aplikację:cd .\NLog.Azure.Kusto.Samples\ dotnet build
W terminalu przejdź do folderu samples i uruchom następujące
dotnet
polecenie, aby uruchomić aplikację:dotnet run
W środowisku zapytań wybierz docelową bazę danych i uruchom następujące zapytanie, aby eksplorować pozyskane dane.
ADXNLogSample | take 10
Dane wyjściowe powinny wyglądać podobnie do poniższej ilustracji: