Shromažďování textových protokolů pomocí agenta Azure Monitoru
Mnoho aplikací protokoluje informace do textových souborů místo používání standardních služeb protokolování, jako je Protokol událostí systému Windows nebo Syslog. Tento článek vysvětluje, jak shromažďovat textové protokoly z monitorovaných počítačů pomocí agenta Azure Monitoru vytvořením pravidla shromažďování dat (DCR).
Požadavky
K dokončení tohoto postupu potřebujete:
Pracovní prostor služby Log Analytics, ve kterém máte alespoň práva přispěvatele.
Oprávnění k vytváření objektů pravidla shromažďování dat v pracovním prostoru
Virtuální počítač, škálovací sada virtuálních počítačů nebo místní server s podporou arc, který zapisuje protokoly do textového souboru.
Požadavky na textové soubory a osvědčené postupy:
- Soubory ukládejte na místní disk počítače, na kterém je spuštěný agent Azure Monitoru.
- Vytyčíte konec záznamu koncem řádku.
- Používejte kódování ASCII nebo UTF-8. Jiné formáty, například UTF-16, nejsou podporované.
- Každý den vytvořte nový soubor protokolu, abyste mohli snadno odebrat staré soubory.
- Vyčistěte všechny soubory protokolu starší než 2 dny v monitorovaném adresáři. Agent Azure Monitoru neodstraňuje staré soubory protokolů a jejich sledování nevyužívá prostředky agenta.
- Nepřepisujte existující soubor novými daty. Do souboru byste měli přidávat jenom nová data.
- Nepřejmenovávat soubor a otevřít nový soubor se stejným názvem, ke kterým se chcete přihlásit.
- Nepřejmenovávat ani nekopírovat velké soubory protokolu do monitorovaného adresáře.
- Nepřejmenovávat soubory v monitorovaném adresáři na nový název, který je také v monitorovaném adresáři. To může způsobit nesprávné chování při příjmu dat.
Vytvoření vlastní tabulky
Tento krok vytvoří novou vlastní tabulku, což je libovolný název tabulky, který končí _CL. V současné době se k vytvoření tabulky používá přímé volání REST koncového bodu správy tabulek. Skript na konci této části je vstupem pro volání REST.
Tabulka vytvořená ve skriptu má dva sloupce TimeGenerated: datetime a RawData: string, což je výchozí schéma pro vlastní textový protokol. Pokud znáte konečné schéma, můžete před vytvořením tabulky do skriptu přidat sloupce. Pokud to neuděláte, můžete sloupce vždy přidat do uživatelského rozhraní tabulky Log Analytics.
Nejjednodušší způsob, jak provést volání REST, je z příkazového řádku Azure Cloud PowerShellu (CLI). Prostředí otevřete tak, že přejdete na Azure Portal, stisknete tlačítko Cloud Shell a vyberete PowerShell. Pokud Azure Cloud PowerShell používáte poprvé, budete si muset projít průvodce jednorázovou konfigurací.
Zkopírujte následující skript a vložte ho do PowerShellu, aby se tabulka vytvořila ve vašem pracovním prostoru. Nezapomeňte ve skriptu nahradit položky {subscription}, {resource group}, {workspace name} a {table name}. Ujistěte se, že na začátku ani na konci parametrů nejsou žádné další prázdné hodnoty.
$tableParams = @'
{
"properties": {
"schema": {
"name": "{TableName}_CL",
"columns": [
{
"name": "TimeGenerated",
"type": "DateTime"
},
{
"name": "RawData",
"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
Stisknutím klávesy Return spusťte kód. Měla by se zobrazit odpověď 200 a zobrazí se podrobnosti o tabulce, kterou jste právě vytvořili. Pokud chcete ověřit, že se tabulka vytvořila, přejděte do pracovního prostoru a v levém okně vyberte Tabulky. V seznamu by se měla zobrazit vaše tabulka.
Vytvoření pravidla shromažďování dat pro shromažďování textových protokolů
Pravidlo shromažďování dat definuje:
- Které soubory zdrojových protokolů agent Azure Monitoru vyhledává nové události.
- Jak Azure Monitor transformuje události během příjmu dat.
- Cílový pracovní prostor služby Log Analytics a tabulka, 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 několika 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.
Vytvoření pravidla shromažďování dat v Azure Portal:
V nabídce Monitorování vyberte Pravidla shromažďování dat.
Vyberte Vytvořit a vytvořte nové pravidlo a přidružení shromažďování dat.
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 dcr vytvoří. 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 vztahovat. Možnost Vlastní umožňuje používat typy Windows i Linux.
- Ke shromažďování vlastních protokolů se vyžaduje koncový bod shromažďování dat.
Na kartě Prostředky :
Vyberte + Přidat prostředky a přidružte je k pravidlu shromažďování dat. Prostředky můžou být virtuální počítače, Virtual Machine Scale Sets a Azure Arc pro servery. Azure Portal nainstaluje agenta Azure Monitoru na prostředky, které ho ještě nemají nainstalované.
Důležité
Portál povolí spravované identity přiřazené systémem na cílových prostředcích společně s existujícími identitami přiřazenými uživatelem, pokud nějaké existují. U existujících aplikací, 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.
Pokud potřebujete izolaci sítě pomocí privátních propojení, vyberte pro příslušné prostředky existující koncové body ze stejné oblasti nebo vytvořte nový koncový bod.
Vyberte Povolit koncové body shromažďování dat.
Vyberte koncový bod shromažďování dat pro každý z prostředků přidružených k pravidlu shromažďování dat.
Na kartě Shromáždit a doručit vyberte Přidat zdroj dat , přidejte zdroj dat a nastavte cíl.
Vyberte Vlastní textové protokoly.
Zadejte následující informace:
Vzor souborů – určuje umístění souborů protokolu na místním disku. Můžete zadat více 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 obvykle existuje více souborů protokolu stejného typu. Počítač může například každý den vytvořit nový soubor, aby se zabránilo příliš velké velikosti souboru protokolu. Ke shromažďování dat protokolu v tomto scénáři můžete použít zástupný znak souboru. Použijte formát
C:\directoryA\directoryB\*MyLog.txt
pro Windows a/var/*.log
Pro Linux. Zástupné é é služby se nepodporují.Název tabulky – název cílové tabulky, kterou jste vytvořili v pracovním prostoru služby Log Analytics. Další informace najdete v Požadavcích.
Oddělovač záznamů – v budoucnu se použije k povolení jiných oddělovačů, než je aktuálně podporovaný konec řádku (
/r/n
).Transformace – přidejte transformaci v době příjmu dat nebo ponechte jako zdroj , pokud nepotřebujete transformovat shromážděná data.
Na kartě Cíl přidejte jeden nebo více cílů pro zdroj dat. Můžete vybrat více cílů stejného typu nebo různých typů. Můžete například vybrat několik pracovních prostorů služby Log Analytics, což se také označuje jako multihoming.
Vyberte Zkontrolovat a vytvořit a zkontrolujte podrobnosti o pravidle shromažďování dat a přidružení k sadě virtuálních počítačů.
Vyberte Vytvořit a vytvořte pravidlo shromažďování dat.
Poznámka
Po vytvoření pravidla shromažďování dat může trvat až 5 minut, než se data odesílají do cílů.
Ukázkové dotazy na protokoly
Názvy sloupců, které se tady používají, jsou například pouze. Názvy sloupců pro váš protokol se s největší pravděpodobností budou lišit.
Spočítá 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 chybovou událost.
MyApp_CL | where status == "Error" | summarize AggregatedValue = count() by Computer, bin(TimeGenerated, 15m)
Řešení potíží
Při řešení potíží se shromažďováním textových protokolů použijte následující postup.
Zkontrolujte, jestli se nepřijaly nějaké vlastní protokoly.
Začněte tím, že spuštěním následujícího dotazu v Log Analytics zkontrolujete, jestli se shromáždily nějaké záznamy pro vaši vlastní tabulku protokolů. Pokud se záznamy nevrátí, zkontrolujte možné příčiny v ostatních částech. Tento dotaz hledá celé objekty za poslední dva dny, ale můžete je upravit pro jiný časový rozsah. Nahrávání nových dat z tabulek může trvat 5 až 7 minut. Nahrají se jenom nová data, do kterého se soubor protokolu zapíše naposledy před vytvořením pravidel DCR, se nenahraje.
<YourCustomLog>_CL
| where TimeGenerated > ago(48h)
| order by TimeGenerated desc
Ověření, že jste vytvořili vlastní tabulku
Než do něj budete moct odesílat data, musíte v pracovním prostoru služby Log Analytics vytvořit vlastní tabulku protokolů .
Ověřte, že agent úspěšně odesílá prezenční signály.
Spuštěním následujícího dotazu v Log Analytics ověřte, že agent Azure Monitoru správně komunikuje a zkontrolujte, jestli tabulka prezenčního signálu obsahuje 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á shromáždit 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.
Ověřte, že se naplňují textové protokoly.
Agent bude shromažďovat pouze nový obsah zapsaný do shromažďovaného souboru protokolu. Pokud experimentujete s funkcí shromažďování textových protokolů, můžete pomocí následujícího skriptu vygenerovat ukázkové protokoly.
# 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)
Sdílení protokolů s Microsoftem
Pokud je všechno správně nakonfigurované, ale stále neshromažďujete data protokolu, pomocí následujícího postupu shromážděte diagnostické protokoly pro agenta Azure Monitoru, který může sdílet se skupinou Azure Monitoru.
- Otevřete okno PowerShellu se zvýšenými oprávněními.
- Přejděte do adresáře
C:\Packages\Plugins\Microsoft.Azure.Monitor.AzureMonitorWindowsAgent\[version]\
. - Spusťte skript:
.\CollectAMALogs.ps1
. - Sdílejte soubor vygenerovaný
AMAFiles.zip
na ploše.
Další kroky
Přečtěte si další informace: