Pozyskiwanie danych za pomocą ujścia serilogu do usługi Azure Data Explorer
Ważne
Ten łącznik może być używany w analizie w czasie rzeczywistym w usłudze Microsoft Fabric. Skorzystaj z instrukcji opisanych w tym artykule z następującymi wyjątkami:
- W razie potrzeby utwórz bazy danych, korzystając z instrukcji w temacie Tworzenie bazy danych KQL.
- W razie potrzeby utwórz tabele przy użyciu instrukcji w temacie Tworzenie pustej tabeli.
- Pobierz identyfikatory URI zapytań lub pozyskiwania, korzystając z instrukcji w temacie Copy URI (Kopiowanie identyfikatora URI).
- Uruchamianie zapytań w zestawie zapytań KQL.
Serilog to popularna platforma rejestrowania dla aplikacji .NET. Usługa Serilog umożliwia deweloperom kontrolowanie, które instrukcje dziennika są danymi wyjściowymi z dowolną szczegółowością na podstawie nazwy rejestratora, poziomu rejestratora i wzorca komunikatów. Ujście seriloga, znane również jako dodatek, dla usługi Azure Data Explorer przesyła strumieniowo dane dziennika do usługi Azure Data Explorer, gdzie można analizować i wizualizować dzienniki w czasie rzeczywistym.
Ten artykuł obejmuje następujące zagadnienia:
Aby uzyskać pełną listę łączników danych, zobacz Omówienie łączników danych.
Wymagania wstępne
- Zestaw .NET SDK 6.0 lub nowszy
- Klaster i baza danych usługi Azure Data Explorer
Konfigurowanie środowiska
W tej sekcji przygotujesz środowisko do użycia ujścia serilogu.
Instalowanie pakietu
Dodaj pakiet NuGet Serilog.Sinks.AzureDataExplorer . Użyj polecenia Install-Package określającego nazwę pakietu NuGet.
Install-Package Serilog.Sinks.AzureDataExplorer
Tworzenie rejestracji aplikacji Microsoft Entra
Microsoft Entra uwierzytelnianie aplikacji jest używane w przypadku aplikacji, które muszą uzyskiwać dostęp do usługi Azure Data Explorer bez obecności użytkownika. Aby pozyskać dane przy użyciu łącznika Serilog, należy utworzyć i zarejestrować jednostkę usługi Microsoft Entra, a następnie autoryzować tę jednostkę do pozyskiwania danych bazy danych usługi Azure Data Explorer.
- Korzystając z klastra usługi Azure Data Explorer, wykonaj kroki 1–7 w temacie Tworzenie rejestracji aplikacji Microsoft Entra w usłudze Azure Data Explorer.
- Zapisz następujące wartości do użycia w kolejnych krokach:
- Identyfikator aplikacji (klienta)
- Identyfikator katalogu (dzierżawcy)
- Wartość klucza tajnego klienta
Udzielanie uprawnień aplikacji Microsoft Entra
Na karcie zapytania internetowego interfejsu użytkownika połącz się z klastrem. Aby uzyskać więcej informacji na temat nawiązywania połączenia, zobacz Dodawanie klastrów.
Przejdź do bazy danych, w której chcesz pozyskać dane.
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>') 'Azure Data Explorer App Registration'
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, mapując pozyskane kolumny danych na kolumny w tabeli docelowej. W poniższych krokach schemat tabeli i mapowanie odpowiadają danym wysyłanym z przykładowej aplikacji.
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, Exception: string, Properties: dynamic, Position: dynamic, Elapsed: int)
Uruchom następujące polecenie mapowania pozyskiwania, zastępując symbole zastępcze TableName nazwą tabeli docelowej i tabelą TableNameMapping nazwą mapowania pozyskiwania:
.create table <TableName> ingestion csv mapping '<TableNameMapping>' '[{"Name":"Timestamp","DataType":"","Ordinal":"0","ConstValue":null},{"Name":"Level","DataType":"","Ordinal":"1","ConstValue":null},{"Name":"Message","DataType":"","Ordinal":"2","ConstValue":null},{"Name":"Exception","DataType":"","Ordinal":"3","ConstValue":null},{"Name":"Properties","DataType":"","Ordinal":"4","ConstValue":null},{"Name":"Position","DataType":"","Ordinal":"5","ConstValue":null},{"Name":"Elapsed","DataType":"","Ordinal":"6","ConstValue":null}]'
Dodawanie ujścia serilogu do aplikacji
Wykonaj następujące kroki, aby:
- Dodawanie ujścia serilogu do aplikacji
- Konfigurowanie zmiennych używanych przez ujście
- Skompiluj i uruchom aplikację
Dodaj następujący kod do aplikacji:
using Serilog.Sinks.AzureDataExplorer;
Skonfiguruj ujście serilogu, zastępując symbole zastępcze przy użyciu informacji w poniższej tabeli:
var log = new LoggerConfiguration() .WriteTo.AzureDataExplorerSink(new AzureDataExplorerSinkOptions { IngestionEndpointUri = "<cluster>", DatabaseName = "<MyDatabase>", TableName = "<MyTable>", BufferBaseFileName = "<BufferBaseFileName>" }) .CreateLogger();
Zmienna Opis Identyfikator IngestionEndPointUri Identyfikator URI pozyskiwania klastra w klastrze> formatuhttps://ingest-<.<region.kusto.windows.net>. Databasename Uwzględniana wielkość liter nazwa docelowej bazy danych. TableName Rozróżniana wielkość liter w istniejącej tabeli docelowej. Na przykład SerilogTest jest nazwą tabeli utworzonej w sekcji Tworzenie tabeli i mapowania pozyskiwania. AppId Identyfikator klienta aplikacji wymagany do uwierzytelniania. Zapisano tę wartość w sekcji Tworzenie rejestracji aplikacji Microsoft Entra. Klucz aplikacji Klucz aplikacji wymagany do uwierzytelniania. Zapisano tę wartość w sekcji Tworzenie rejestracji aplikacji Microsoft Entra. Dzierżawa Identyfikator dzierżawy, w której zarejestrowano aplikację. Zapisano tę wartość w sekcji Tworzenie rejestracji aplikacji Microsoft Entra. BufferBaseFileName Opcjonalna nazwa pliku podstawowego dla pliku buforu. Ustaw tę wartość, jeśli dzienniki mają być trwałe przed utratą wynikową awarią połączenia z klastrem. Na przykład C:/Temp/Serilog
.Aby uzyskać więcej opcji, zobacz Opcje ujścia.
Wysyłanie danych do platformy Azure Data Explorer przy użyciu ujścia serilogu. Na przykład:
log.Verbose("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs); log.Information("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs); log.Warning("Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs); log.Error(new Exception(), "Processed {@Position} in {Elapsed:000} ms.", position, elapsedMs); log.Debug("Processed {@Position} in {Elapsed:000} ms. ", position, elapsedMs);
Skompiluj i uruchom aplikację. Jeśli na przykład używasz programu Visual Studio, naciśnij klawisz F5.
Sprawdź, czy dane są w klastrze. W internetowym interfejsie użytkownika uruchom następujące zapytanie, zastępując symbol zastępczy nazwą tabeli, która była używana wcześniej:
<TableName> | take 10
Uruchamianie przykładowej aplikacji
Użyj przykładowej aplikacji generatora dzienników jako przykładu pokazującego sposób konfigurowania i używania ujścia serilogu.
Sklonuj repozytorium git ujścia serilog przy użyciu następującego polecenia git:
git clone https://github.com/Azure/serilog-sinks-azuredataexplorer
Ustaw następujące zmienne środowiskowe, aby skonfigurować ujście serilogu:
Zmienna Opis Identyfikator IngestionEndPointUri Identyfikator URI pozyskiwania klastra w klastrze> formatuhttps://ingest-<.<region.kusto.windows.net>. Databasename Uwzględniana wielkość liter nazwa docelowej bazy danych. TableName Rozróżniana wielkość liter w istniejącej tabeli docelowej. Na przykład SerilogTest jest nazwą tabeli utworzonej w sekcji Tworzenie tabeli i mapowania pozyskiwania. AppId Identyfikator klienta aplikacji wymagany do uwierzytelniania. Zapisano tę wartość w sekcji Tworzenie rejestracji aplikacji Microsoft Entra. Klucz aplikacji Klucz aplikacji wymagany do uwierzytelniania. Zapisano tę wartość w sekcji Tworzenie rejestracji aplikacji Microsoft Entra. Dzierżawa Identyfikator dzierżawy, w której zarejestrowano aplikację. Zapisano tę wartość w sekcji Tworzenie rejestracji aplikacji Microsoft Entra. BufferBaseFileName Nazwa pliku podstawowego dla pliku buforu. Ustaw tę wartość, jeśli dzienniki mają być trwałe przed utratą wynikową awarią połączenia z klastrem. Na przykład C:/Temp/Serilog
Zmienne środowiskowe można ustawić ręcznie lub za pomocą następujących poleceń:
$env:ingestionURI="<ingestionURI>" $env:appId="<appId>" $env:appKey="<appKey>" $env:tenant="<tenant>" $env:databaseName="<databaseName>" $env:tableName="<tableName>"
W terminalu przejdź do folderu głównego sklonowanego repozytorium i uruchom następujące polecenie platformy .NET, aby skompilować aplikację:
dotnet build src
W terminalu przejdź do folderu samples i uruchom następujące polecenie platformy .NET, aby uruchomić aplikację:
dotnet build run
W internetowym interfejsie użytkownika wybierz docelową bazę danych i uruchom następujące zapytanie, aby zbadać pozyskane dane, zastępując symbol zastępczy TableName nazwą tabeli docelowej:
<TableName> | take 10
Dane wyjściowe powinny wyglądać podobnie do poniższej ilustracji:
Zawartość pokrewna
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla