Sdílet prostřednictvím


Příjem dat pomocí jímky Serilog do Azure Data Explorer

Důležité

Tento konektor se dá použít v analýze v reálném čase v Microsoft Fabric. Postupujte podle pokynů v tomto článku s následujícími výjimkami:

Serilog je oblíbená architektura protokolování pro aplikace .NET. Serilog umožňuje vývojářům řídit, které příkazy protokolu budou výstupem, s libovolnou členitostí na základě názvu protokolovacího nástroje, úrovně protokolovacího nástroje a vzoru zprávy. Jímka Serilog, označovaná také jako appender, pro Azure Data Explorer streamuje data protokolů do Azure Data Explorer, kde můžete protokoly analyzovat a vizualizovat v reálném čase.

V tomto článku se naučíte:

Úplný seznam datových konektorů najdete v tématu Přehled datových konektorů.

Požadavky

Nastavení prostředí

V této části připravíte prostředí tak, aby používalo jímku Serilog.

Instalace balíčku

Přidejte balíček NuGet Serilog.Sinks.AzureDataExplorer . Pomocí příkazu Install-Package zadejte název balíčku NuGet.

Install-Package Serilog.Sinks.AzureDataExplorer

Vytvoření registrace aplikace Microsoft Entra

Microsoft Entra ověřování aplikací se používá pro aplikace, které potřebují přístup k Azure Data Explorer bez přítomnosti uživatele. Pokud chcete ingestovat data pomocí konektoru Serilog, musíte vytvořit a zaregistrovat Microsoft Entra instanční objekt a pak tento instanční objekt autorizovat k ingestování dat databáze Azure Data Explorer.

  1. Pomocí clusteru Azure Data Explorer postupujte podle kroků 1 až 7 v tématu Vytvoření registrace aplikace Microsoft Entra v Azure Data Explorer.
  2. Uložte následující hodnoty, které se použijí v pozdějších krocích:
    • ID aplikace (klienta)
    • ID adresáře (tenanta)
    • Hodnota klíče tajného klíče klienta

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

  1. Na kartě dotazu webového uživatelského rozhraní se připojte ke clusteru. Další informace o připojení najdete v tématu Přidání clusterů.

  2. Přejděte do databáze, ve které chcete ingestovat data.

  3. 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 udělí aplikaci roli ingestor databáze . Další informace najdete v tématu Správa rolí zabezpečení databáze.

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

    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í tabulky a mapování příjmu dat

Vytvořte cílovou tabulku pro příchozí data a namapujte sloupce přijatých dat na sloupce v cílové tabulce. V následujících krocích schéma a mapování tabulky odpovídají datům odeslaných z ukázkové aplikace.

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

    .create table <TableName> (Timestamp: datetime, Level: string, Message: string, Exception: string, Properties: dynamic, Position: dynamic, Elapsed: int)
    
  2. Spusťte následující příkaz mapování příjmu dat a nahraďte zástupné symboly TableName názvem cílové tabulky a TableNameMapping názvem mapování příjmu dat:

    .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}]'
    

Přidání jímky Serilog do aplikace

Postupujte následovně:

  • Přidání jímky Serilog do aplikace
  • Konfigurace proměnných používaných jímkou
  • Sestavte a spusťte aplikaci.
  1. Do aplikace přidejte následující kód:

    using Serilog.Sinks.AzureDataExplorer;
    
  2. Nakonfigurujte jímku Serilog a nahraďte zástupné symboly pomocí informací v následující tabulce:

    var log = new LoggerConfiguration()
    .WriteTo.AzureDataExplorerSink(new AzureDataExplorerSinkOptions
    {
        IngestionEndpointUri = "<cluster>",
        DatabaseName = "<MyDatabase>",
        TableName = "<MyTable>",
        BufferBaseFileName = "<BufferBaseFileName>"
    })
    .CreateLogger();
    
    Proměnná Popis
    IngestováníEndPointUri Identifikátor URI ingestování vašeho clusteru ve formátu https://ingest-<clusteru><region.kusto.windows.net>.
    Databasename Název cílové databáze rozlišující malá a velká písmena.
    TableName Název existující cílové tabulky rozlišující malá a velká písmena. Například SerilogTest je název tabulky vytvořené v tématu Vytvoření tabulky a mapování příjmu dat.
    AppId ID klienta aplikace vyžadované pro ověřování. Tuto hodnotu jste uložili v části Vytvoření registrace aplikace Microsoft Entra.
    AppKey Klíč aplikace vyžadovaný pro ověřování. Tuto hodnotu jste uložili v části Vytvoření registrace aplikace Microsoft Entra.
    Tenant ID tenanta, ve kterém je aplikace zaregistrovaná. Tuto hodnotu jste uložili v části Vytvoření registrace aplikace Microsoft Entra.
    BufferBaseFileName Volitelný základní název souboru vyrovnávací paměti. Tuto hodnotu nastavte, pokud požadujete, aby protokoly byly odolné proti ztrátě způsobující selhání připojení ke clusteru. Například, C:/Temp/Serilog.

    Další možnosti najdete v tématu Možnosti jímky.

  3. Odesílání dat do Azure Data Explorer pomocí jímky Serilog. Příklad:

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

  5. Ověřte, že se data nachází ve vašem clusteru. Ve webovém uživatelském rozhraní spusťte následující dotaz, který nahradí zástupný symbol názvem tabulky, která se použila dříve:

    <TableName>
    | take 10
    

Spuštění ukázkové aplikace

Jako příklad použijte ukázkovou aplikaci generátoru protokolů, která ukazuje, jak nakonfigurovat a používat jímku Serilog.

  1. Pomocí následujícího příkazu git naklonujte úložiště Git jímky Serilog:

    git clone https://github.com/Azure/serilog-sinks-azuredataexplorer
    
  2. Pro konfiguraci jímky Serilog nastavte následující proměnné prostředí:

    Proměnná Popis
    IngestováníEndPointUri Identifikátor URI ingestování vašeho clusteru ve formátu https://ingest-<clusteru><region.kusto.windows.net>.
    Databasename Název cílové databáze rozlišující malá a velká písmena.
    TableName Název existující cílové tabulky rozlišující malá a velká písmena. Například SerilogTest je název tabulky vytvořené v tématu Vytvoření tabulky a mapování příjmu dat.
    AppId ID klienta aplikace vyžadované pro ověřování. Tuto hodnotu jste uložili do části Vytvoření registrace aplikace Microsoft Entra.
    AppKey Klíč aplikace vyžadovaný pro ověřování. Tuto hodnotu jste uložili do části Vytvoření registrace aplikace Microsoft Entra.
    Tenant ID tenanta, ve kterém je aplikace zaregistrovaná. Tuto hodnotu jste uložili do části Vytvoření registrace aplikace Microsoft Entra.
    Název souboru vyrovnávací paměti Název základního souboru pro soubor vyrovnávací paměti. Tuto hodnotu nastavte, pokud požadujete, aby vaše protokoly byly odolné proti ztrátě způsobujícím selhání připojení ke clusteru. Například C:/Temp/Serilog.

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

    $env:ingestionURI="<ingestionURI>"
    $env:appId="<appId>"
    $env:appKey="<appKey>"
    $env:tenant="<tenant>"
    $env:databaseName="<databaseName>"
    $env:tableName="<tableName>"
    
  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 příkazu .NET sestavte aplikaci:

    dotnet build src
    
  4. V terminálu přejděte do složky samples a spusťte aplikaci spuštěním následujícího příkazu .NET:

    dotnet build run
    
  5. Ve webovém uživatelském rozhraní vyberte cílovou databázi a spuštěním následujícího dotazu prozkoumejte ingestovaná data. Zástupný text TableName nahraďte názvem cílové tabulky:

    <TableName>
    | take 10
    

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

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