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

Základní operace

Následující diagram znázorňuje základní operaci shromažďování dat protokolu z textového souboru.

  1. Agent sleduje všechny soubory protokolu, které odpovídají zadanému vzoru názvů na místním disku.
  2. 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.
  3. Pokud se použije výchozí transformace, odešle se celá položka protokolu do jednoho sloupce v cílové tabulce.
  4. Pokud se použije vlastní transformace, je možné položku protokolu analyzovat do více sloupců v cílové tabulce.

Diagram znázorňující kolekci textového protokolu agentem Služby Azure Monitor zobrazující jednoduchou kolekci i transformaci souboru s oddělovači

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 RawDataFilePath, 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])

Snímek obrazovky znázorňující konfiguraci kolekce souborů oddělených čárkami

Načtení těchto dat pomocí dotazu protokolu by vrátilo následující výsledky.

Snímek obrazovky zobrazující dotaz protokolu vracející výsledky kolekce souborů s oddělovači

Ř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: