Shromažďování protokolů z textového souboru pomocí agenta služby Azure Monitor
Vlastní textové protokoly jsou jedním ze zdrojů dat používaných v pravidle shromažďování dat (DCR). Podrobnosti o vytvoření DCR najdete v části Shromažďování dat pomocí agenta služby Azure Monitor. Tento článek obsahuje další podrobnosti o typu textových protokolů.
Mnoho aplikací a služeb bude protokolovat informace do textových souborů místo standardních služeb protokolování, jako je protokol událostí systému Windows nebo Syslog. Tato data je možné shromažďovat pomocí agenta služby Azure Monitor a ukládat do pracovního prostoru služby Log Analytics s daty shromážděnými z jiných zdrojů.
Požadavky
- Pracovní prostor služby Log Analytics, kde máte alespoň práva přispěvatele.
- Koncový bod shromažďování dat (DCE) ve stejné oblasti jako pracovní prostor služby Log Analytics. Podrobnosti najdete v tématu Nastavení koncových bodů shromažďování dat na základě nasazení .
- Nové nebo existující DCR popsané v tématu Shromažďování dat pomocí agenta služby Azure Monitor
Základní operace
Následující diagram znázorňuje základní operaci shromažďování dat protokolu z textového souboru.
- Agent sleduje všechny soubory protokolu, které odpovídají zadanému vzoru názvů na místním disku.
- Každá položka v protokolu se shromažďuje a odesílá do služby Azure Monitor. Příchozí datový proud obsahuje celou položku protokolu v jednom sloupci.
- Pokud se použije výchozí transformace, odešle se celá položka protokolu do jednoho sloupce v cílové tabulce.
- Pokud se použije vlastní transformace, je možné položku protokolu analyzovat do více sloupců v cílové tabulce.
Požadavky na textové soubory a osvědčené postupy
Soubor, který agent azure Monitor monitoruje, musí splňovat následující požadavky:
- Soubor musí být uložený na místním disku počítače s agentem služby Azure Monitor v adresáři, který se monitoruje.
- Každý záznam musí být označen koncem řádku.
- Soubor musí používat kódování ASCII nebo UTF-8. Jiné formáty, jako je UTF-16, se nepodporují.
- Nové záznamy by se měly připojit na konec souboru a nepřepsat staré záznamy. Přepsání způsobí ztrátu dat.
Při dodržování následujících doporučení se ujistěte, že se vám nezobrazují problémy se ztrátou nebo výkonem dat:
- Každý den vytvořte nový soubor protokolu, abyste mohli snadno vyčistit staré soubory.
- Nepřetržitě vyčistí 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řejmenovávejte soubor, který odpovídá vzoru kontroly souboru, na jiný název, který odpovídá vzoru kontroly souboru. To způsobí, že se ingestují duplicitní data.
- Nepřejmenovávejte 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.
Příchozí datový proud
Poznámka:
K dispozici je teď podpora víceřádkového rozhraní, která používá časové razítko k odděleným událostem. Nasazení šablony správy prostředků je nutné použít, dokud nebude podpora přidána do uživatelského rozhraní portálu.
Příchozí datový proud obsahuje sloupce v následující tabulce.
Column | Type | Popis |
---|---|---|
TimeGenerated |
datetime | Čas vygenerování záznamu. Tato hodnota se automaticky vyplní časem, kdy se záznam přidá do pracovního prostoru služby Log Analytics. Tuto hodnotu můžete přepsat pomocí transformace, která se nastaví TimeGenerated na jinou hodnotu. |
RawData |
string | Celá položka protokolu v jednom sloupci. Transformace můžete použít, pokud chcete tato data před odesláním do tabulky rozdělit do více sloupců. |
FilePath |
string | Pokud tento sloupec přidáte do příchozího datového proudu v DCR, naplní se cestou k souboru protokolu. Tento sloupec se nevytvořil automaticky a nejde ho přidat pomocí portálu. Musíte ručně upravit řadič domény vytvořený portálem nebo vytvořit řadič domény pomocí jiné metody, kde můžete explicitně definovat příchozí datový proud. |
Computer |
string | Pokud tento sloupec přidáte do příchozího datového proudu v řadiči domény, naplní se názvem počítače se souborem protokolu. Tento sloupec se nevytvořil automaticky a nejde ho přidat pomocí portálu. Musíte ručně upravit řadič domény vytvořený portálem nebo vytvořit řadič domény pomocí jiné metody, kde můžete explicitně definovat příchozí datový proud. |
Vlastní tabulka
Než budete moct shromažďovat data protokolu z textového souboru, musíte vytvořit vlastní tabulku v pracovním prostoru služby Log Analytics pro příjem dat. Schéma tabulky musí odpovídat datům, která shromažďujete, nebo musíte přidat transformaci, aby bylo zajištěno, že výstupní schéma odpovídá tabulce.
Upozorňující
Abyste se vyhnuli ztrátě dat, je důležité, abyste nepoužíli existující vlastní tabulku protokolů, kterou aktuálně využívají agenti MMA. Jakmile se agent AMA zapíše do existující vlastní tabulky protokolů, agenti MMA už do této tabulky nebudou moct zapisovat. Místo toho byste měli vytvořit novou tabulku určenou speciálně pro agenty AMA, abyste zajistili hladký přechod z jednoho agenta na další.
Pomocí následujícího skriptu PowerShellu můžete například vytvořit vlastní tabulku s RawData
FilePath
, a Computer
. Pro tuto tabulku byste nemuseli potřebovat transformaci, protože schéma odpovídá výchozímu schématu příchozího datového proudu.
$tableParams = @'
{
"properties": {
"schema": {
"name": "{TableName}_CL",
"columns": [
{
"name": "TimeGenerated",
"type": "DateTime"
},
{
"name": "RawData",
"type": "String"
},
{
"name": "FilePath",
"type": "String"
},
{
"name": "Computer",
"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
Vytvoření pravidla shromažďování dat pro textový soubor
Vytvořte pravidlo shromažďování dat, jak je popsáno v tématu Shromažďování dat pomocí agenta služby Azure Monitor. V kroku Shromáždit a doručit vyberte z rozevíracího seznamu Typ zdroje dat vlastní textové protokoly.
Nastavení | Popis |
---|---|
Vzor souboru | Určuje umístění a název souborů protokolu na místním disku. Pro názvy souborů, které se liší, například když se každý den vytvoří nový soubor s novým názvem, použijte zástupný znak. Můžete zadat více vzorů souborů oddělených čárkami. Příklady: - C:\Logs\MyLog.txt – C:\Logs\MyLog*.txt - C:\App01\AppLog.txt, C:\App02\AppLog.txt - /var/mylog.log - /var/mylog*.log |
Název tabulky | Název cílové tabulky v pracovním prostoru služby Log Analytics |
Oddělovač záznamů | Aktuálně se nepoužívá, ale vyhrazeno pro budoucí potenciální použití, což umožňuje oddělovače kromě aktuálně podporovaného konce řádku (/r/n ). |
Transformace | Transformace času příjmu dat pro filtrování záznamů nebo formátování příchozích dat pro cílovou tabulku Slouží source k ponechání příchozích dat beze změny. |
Soubory protokolu s oddělovači
Mnoho textových souborů protokolu obsahuje položky, které jsou oddělené znakem, například čárkou. Pokud chcete tato data analyzovat do samostatných sloupců, použijte transformaci s rozdělenou funkcí.
Představte si například textový soubor s následujícími daty oddělenými čárkami. Tato pole mohou být popsána takto: Time
, Code
, Severity
,Module
, a Message
.
2024-06-21 19:17:34,1423,Error,Sales,Unable to connect to pricing service.
2024-06-21 19:18:23,1420,Information,Sales,Pricing service connection established.
2024-06-21 21:45:13,2011,Warning,Procurement,Module failed and was restarted.
2024-06-21 23:53:31,4100,Information,Data,Nightly backup complete.
Následující transformace analyzuje data do samostatných sloupců. Vzhledem k tomu split
, že vrací dynamická data, musíte použít funkce, jako tostring
je například a toint
převést data na správný skalární typ. Musíte také zadat název pro každou položku, která odpovídá názvu sloupce v cílové tabulce. Všimněte si, že tento příklad poskytuje TimeGenerated
hodnotu. Pokud se tato hodnota nezadá, použije se čas příjmu dat.
source | project d = split(RawData,",") | project TimeGenerated=todatetime(d[0]), Code=toint(d[1]), Severity=tostring(d[2]), Module=tostring(d[3]), Message=tostring(d[4])
Načtení těchto dat pomocí dotazu protokolu by vrátilo následující výsledky.
Řešení problému
Pokud neshromažďujete data z textového protokolu, který očekáváte, projděte si následující kroky.
- Ověřte, že se data zapisují do shromažďovaného souboru protokolu.
- Ověřte, že název a umístění souboru protokolu odpovídají zadanému vzoru souboru.
- Ověřte, že schéma cílové tabulky odpovídá příchozímu datovému proudu nebo že máte transformaci, která převede příchozí datový proud na správné schéma.
- Informace o tom, jestli je agent funkční a přijímá data, najdete v části Ověření operace .
Další kroky
Přečtěte si další informace: