Shromažďování protokolů z textového souboru nebo souboru JSON pomocí agenta služby Azure Monitor

Mnoho aplikací protokoluje informace do textových souborů nebo souborů JSON místo standardních služeb protokolování, jako je protokol událostí systému Windows nebo Syslog. Tento článek vysvětluje, jak shromažďovat data protokolu z textových souborů a souborů JSON na monitorovaných počítačích pomocí agenta služby Azure Monitor vytvořením pravidla shromažďování dat (DCR).

Poznámka:

Příjem dat JSON je v tuto chvíli ve verzi Preview.

Požadavky

K dokončení tohoto postupu potřebujete:

  • Pracovní prostor služby Log Analytics, kde máte alespoň práva přispěvatele.

  • Jeden nebo dva koncové body shromažďování dat v závislosti na tom, jestli je váš virtuální počítač a pracovní prostor služby Log Analytics ve stejné oblasti.

    Další informace najdete v tématu Jak nastavit koncové body shromažďování dat na základě vašeho nasazení.

  • Oprávnění k vytváření objektů pravidla shromažďování dat v pracovním prostoru

  • Aby bylo možné ingestovat, musí být text JSON obsažený v jednom řádku. Základní formát JSON (soubor) není podporován.

  • Virtuální počítač, škálovací sada virtuálních počítačů, místní server s podporou arc nebo agent monitorování Azure na místním klientovi s Windows, který zapisuje protokoly do textového souboru nebo souboru JSON.

    Požadavky na textové soubory a soubory JSON a osvědčené postupy:

    • Ukládejte soubory na místní jednotce počítače, na kterém běží agent Azure Monitoru, a v adresáři, který se monitoruje.
    • Ukončete konec záznamu koncem řádku.
    • Používejte kódování ASCII nebo UTF-8. Jiné formáty, jako je UTF-16, se nepodporují.
    • Každý den vytvořte nový soubor protokolu, abyste mohli staré soubory snadno odebrat.
    • Vyčistěte všechny soubory protokolu v monitorovaném adresáři. Sledování mnoha souborů protokolu může zvýšit využití procesoru a paměti agenta. Počkejte aspoň 2 dny, aby bylo možné zpracovat dostatek času pro všechny protokoly.
    • Nepřepisujte existující soubor novými záznamy. Na konec souboru byste měli přidávat jenom nové záznamy. Přepsání způsobí ztrátu dat.
    • Nepřejmenovávat soubor na nový název a pak otevřít nový soubor se stejným názvem. To může způsobit ztrátu dat.
    • Nepřejmenovávat ani nekopírujte velké soubory protokolu, které odpovídají vzoru kontroly souborů do monitorovaného adresáře. Pokud potřebujete, nepřesahujte 50 MB za minutu.
    • Nepřejmenovávat soubor, který odpovídá vzoru kontroly souboru, na nový název, který také odpovídá vzoru kontroly souboru. To způsobí, že se ingestují duplicitní data.

Vytvoření vlastní tabulky

Tabulka vytvořená ve skriptu má dva sloupce:

  • TimeGenerated (datetime) [Povinné]
  • RawData (řetězec) [Volitelné, pokud je k dispozici schéma tabulky]
  • 'FilePath' (řetězec) [Volitelné]
  • YourOptionalColumn (řetězec) [Volitelné]

Výchozí schéma tabulky pro data protokolu shromážděná z textových souborů je TimeGenerated a RawData. Přidání Cesty k souboru do libovolného týmu je volitelné. Pokud víte, že vaše konečné schéma nebo zdroj je protokol JSON, můžete před vytvořením tabulky přidat konečné sloupce ve skriptu. Sloupce můžete kdykoli později přidat pomocí uživatelského rozhraní tabulky Log Analytics.

Názvy sloupců a atributy JSON se musí přesně shodovat, aby se automaticky parsovaly do tabulky. Sloupce i atributy JSON rozlišují malá a velká písmena. Například Rawdata neshromažďuje data události. Musí to být RawData. Příjem dat zahodí atributy JSON, které nemají odpovídající sloupec.

Nejjednodušší způsob, jak provést volání REST, je z příkazového řádku Azure Cloud PowerShellu (CLI). Pokud chcete prostředí otevřít, přejděte na web Azure Portal, stiskněte tlačítko Cloud Shell a vyberte PowerShell. Pokud používáte Azure Cloud PowerShell poprvé, budete si muset projít jednorázovým průvodcem konfigurací.

Zkopírujte a vložte tento skript do PowerShellu, abyste vytvořili tabulku ve vašem pracovním prostoru:

$tableParams = @'
{
    "properties": {
        "schema": {
               "name": "{TableName}_CL",
               "columns": [
        {
                                "name": "TimeGenerated",
                                "type": "DateTime"
                        }, 
                       {
                                "name": "RawData",
                                "type": "String"
                       },
                       {
                                "name": "FilePath",
                                "type": "String"
                       },
                      {
                                "name": `"YourOptionalColumn",
                                "type": "String"
                     }
              ]
        }
    }
}
'@

Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{WorkspaceName}/tables/{TableName}_CL?api-version=2021-12-01-preview" -Method PUT -payload $tableParams

Měla by se zobrazit odpověď 200 a podrobnosti o tabulce, kterou jste právě vytvořili.

Vytvoření pravidla shromažďování dat pro textový soubor nebo soubor JSON

Pravidlo shromažďování dat definuje:

  • Které zdrojové soubory protokolu agent Azure Monitor vyhledá nové události.
  • Jak Azure Monitor transformuje události během příjmu dat.
  • Cílový pracovní prostor a tabulka služby Log Analytics, do které Azure Monitor odesílá data.

Můžete definovat pravidlo shromažďování dat pro odesílání dat z více počítačů do více pracovních prostorů služby Log Analytics, včetně pracovních prostorů v jiné oblasti nebo tenantovi. Vytvořte pravidlo shromažďování dat ve stejné oblasti jako pracovní prostor služby Log Analytics.

Poznámka:

Pokud chcete odesílat data mezi tenanty, musíte nejprve povolit Azure Lighthouse.

Pokud chcete automaticky analyzovat soubor protokolu JSON do vlastní tabulky, postupujte podle kroků šablon Resource Manageru. Textová data se dají transformovat do sloupců pomocí transformace v čase příjmu dat.

Vytvoření pravidla shromažďování dat na webu Azure Portal:

  1. V nabídce Monitorování vyberte Pravidla shromažďování dat.

  2. Výběrem možnosti Vytvořit vytvoříte nové pravidlo a přidružení shromažďování dat.

    Snímek obrazovky znázorňující tlačítko Vytvořit na obrazovce Pravidla shromažďování dat

  3. Zadejte název pravidla a zadejte předplatné, skupinu prostředků, oblast, typ platformy a koncový bod shromažďování dat:

    • Oblast určuje, kde se bude řadič domény vytvářet. Virtuální počítače a jejich přidružení můžou být v libovolném předplatném nebo skupině prostředků v tenantovi.
    • Typ platformy určuje typ prostředků, na které se toto pravidlo může použít. Možnost Vlastní umožňuje pro typy Windows i Linux.
    • Koncový bod shromažďování dat určuje koncový bod shromažďování dat, do kterého agent služby Azure Monitor odesílá shromážděná data. Tento koncový bod shromažďování dat musí být ve stejné oblasti jako pracovní prostor služby Log Analytics. Další informace najdete v tématu Jak nastavit koncové body shromažďování dat na základě vašeho nasazení.

    Snímek obrazovky, který znázorňuje kartu Základy na obrazovce Pravidla shromažďování dat

  4. On the Resources tab:

    1. Vyberte + Přidat prostředky a přidružte prostředky k pravidlu shromažďování dat. Prostředky můžou být virtuální počítače, škálovací sady virtuálních počítačů a Azure Arc pro servery. Azure Portal nainstaluje agenta Služby Azure Monitor na prostředky, které ho ještě nemají nainstalované.

      Důležité

      Portál umožňuje spravovanou identitu přiřazenou systémem na cílových prostředcích spolu s existujícími identitami přiřazenými uživatelem, pokud existují. Pokud v požadavku nezadáte identitu přiřazenou uživatelem, počítač místo toho použije identitu přiřazenou systémem.

    2. Vyberte Povolit koncové body shromažďování dat.

    3. Volitelně můžete vybrat koncový bod shromažďování dat pro každý virtuální počítač přidružený k pravidlu shromažďování dat. Ve většině případů byste měli použít jenom výchozí hodnoty.

      Tento koncový bod shromažďování dat odesílá konfigurační soubory do virtuálního počítače a musí být ve stejné oblasti jako virtuální počítač. Další informace najdete v tématu Jak nastavit koncové body shromažďování dat na základě vašeho nasazení.

    Snímek obrazovky s kartou Prostředky na obrazovce Pravidla shromažďování dat

  5. Na kartě Shromáždit a doručit vyberte Přidat zdroj dat a přidejte zdroj dat a nastavte cíl.

  6. V rozevíracím seznamu Typ zdroje dat vyberte Vlastní textové protokoly nebo Protokoly JSON.

  7. Zadejte tyto informace:

    • Vzor souboru – určuje, kde se soubory protokolu nacházejí na místním disku. Můžete zadat více vzorů souborů oddělených čárkami (v Linuxu, AMA verze 1.26 nebo vyšší je potřeba ke shromažďování ze seznamu vzorů souborů oddělených čárkami).

      Příklady platných vstupů:

      • 20220122-MyLog.txt
      • ProcessA_MyLog.txt
      • ErrorsOnly_MyLog.txt, WarningOnly_MyLog.txt

      Poznámka:

      Ve stejném adresáři běžně existuje více souborů protokolu stejného typu. Například počítač může každý den vytvořit nový soubor, aby se zabránilo příliš velkému zvětšení souboru protokolu. Pokud chcete v tomto scénáři shromažďovat data protokolu, můžete použít zástupný znak souboru. Použijte formát C:\directoryA\directoryB\*MyLog.txt pro Windows a /var/*.log Linux. Pro zástupné dokumentace adresáře neexistuje žádná podpora.

    • Název tabulky – název cílové tabulky, kterou jste vytvořili v pracovním prostoru služby Log Analytics. Další informace najdete v tématu Vytvoření vlastní tabulky.

    • Oddělovač záznamů – v budoucnu se použije k povolení jiných oddělovačů než aktuálně podporovaného konce řádku (/r/n).

    • Transformace – Pokud nepotřebujete transformovat shromážděná data, přidejte transformaci v čase příjmu dat nebo ponechte jako zdroj .

  8. Na kartě Cíl přidejte pro zdroj dat jeden nebo více cílů. Můžete vybrat více cílů stejného nebo různých typů. Můžete například vybrat několik pracovních prostorů služby Log Analytics, které se také označuje jako multihoming.

    Snímek obrazovky znázorňující cílovou kartu obrazovky Přidat zdroj dat pro pravidlo shromažďování dat na webu Azure Portal

  9. Výběrem možnosti Zkontrolovat a vytvořit zkontrolujte podrobnosti pravidla shromažďování dat a přidružení k sadě virtuálních počítačů.

  10. Výběrem možnosti Vytvořit vytvořte pravidlo shromažďování dat.

Poznámka:

Po vytvoření pravidla shromažďování dat může trvat až 10 minut, než se data odesílají do cílů.

Ukázkové dotazy na protokoly

Tady použité názvy sloupců jsou například pouze. Názvy sloupců pro váš protokol se s největší pravděpodobností budou lišit.

  • Spočítejte počet událostí podle kódu.

    MyApp_CL
    | summarize count() by code
    

Ukázkové pravidlo upozornění

  • Vytvořte pravidlo upozornění pro libovolnou událost chyb.

    MyApp_CL
    | where status == "Error"
    | summarize AggregatedValue = count() by Computer, bin(TimeGenerated, 15m)
    

Odstraňování potíží

Při řešení potíží s shromažďováním protokolů z textových souborů a souborů JSON postupujte následovně.

Kontrola, jestli jste ingestovali data do vlastní tabulky

Začněte tím, že zkontrolujete, jestli se do vlastní tabulky protokolů ingestovaly nějaké záznamy spuštěním následujícího dotazu v Log Analytics:

<YourCustomTable>_CL
| where TimeGenerated > ago(48h)
| order by TimeGenerated desc

Pokud se záznamy nevrátí, zkontrolujte možné příčiny v dalších částech. Tento dotaz hledá položky za poslední dva dny, ale můžete je upravit pro jiný časový rozsah. Zobrazení nových dat v tabulce může trvat 5 až 7 minut. Agent Služby Azure Monitor shromažďuje data zapsaná pouze do textového souboru nebo souboru JSON po přidružení pravidla shromažďování dat k virtuálnímu počítači.

Ověření, že jste vytvořili vlastní tabulku

Před odesláním dat do pracovního prostoru služby Log Analytics musíte v pracovním prostoru služby Log Analytics vytvořit vlastní tabulku protokolů.

Ověření úspěšného odesílání prezenčních signálů agentem

Spuštěním následujícího dotazu v Log Analytics ověřte, že agent Azure Monitor komunikuje správně a zkontrolujte, jestli v tabulce prezenčního signálu nejsou nějaké záznamy.

Heartbeat
| where TimeGenerated > ago(24h)
| where Computer has "<computer name>"
| project TimeGenerated, Category, Version
| order by TimeGenerated desc

Ověřte, že jste v pravidle shromažďování dat zadali správné umístění protokolu.

Pravidlo shromažďování dat bude mít oddíl podobný následujícímu. Element filePatterns určuje cestu k souboru protokolu, který se má shromažďovat z počítače agenta. Zkontrolujte počítač agenta a ověřte, že je to správné.

"dataSources": [{
            "configuration": {
                "filePatterns": ["C:\\JavaLogs\\*.log"],
                "format": "text",
                "settings": {
                    "text": {
                        "recordStartTimestampFormat": "yyyy-MM-ddTHH:mm:ssK"
                    }
                }
            },
            "id": "myTabularLogDataSource",
            "kind": "logFile",
            "streams": [{
                    "stream": "Custom-TabularData-ABC"
                }
            ],
            "sendToChannels": ["gigl-dce-00000000000000000000000000000000"]
        }
    ]

Tento vzor souboru by měl odpovídat protokolům na počítači agenta.

Snímek obrazovky se soubory textového protokolu na počítači agenta

Použití poradce při potížích s agentem služby Azure Monitor

Pomocí poradce při potížích s agentem Služby Azure Monitor vyhledejte běžné problémy a sdílejte výsledky s Microsoftem.

Ověřte, že se vyplňují protokoly.

Agent bude shromažďovat pouze nový obsah zapsaný do shromažďovaného souboru protokolu. Pokud experimentujete s protokoly kolekce z textového souboru nebo souboru JSON, můžete k vygenerování ukázkových protokolů použít následující skript.

# This script writes a new log entry at the specified interval indefinitely.
# Usage:
# .\GenerateCustomLogs.ps1 [interval to sleep]
#
# Press Ctrl+C to terminate script.
#
# Example:
# .\ GenerateCustomLogs.ps1 5

param (
    [Parameter(Mandatory=$true)][int]$sleepSeconds
)

$logFolder = "c:\\JavaLogs"
if (!(Test-Path -Path $logFolder))
{
    mkdir $logFolder
}

$logFileName = "TestLog-$(Get-Date -format yyyyMMddhhmm).log"
do
{
    $count++
    $randomContent = New-Guid
    $logRecord = "$(Get-Date -format s)Z Record number $count with random content $randomContent"
    $logRecord | Out-File "$logFolder\\$logFileName" -Encoding utf8 -Append
    Start-Sleep $sleepSeconds
}
while ($true)

Další kroky

Přečtěte si další informace: