Sdílet prostřednictvím


Shromažďování souboru JSON z virtuálního počítače pomocí služby Azure Monitor

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. Pokud jsou tato data uložená ve formátu JSON, může je Azure Monitor shromažďovat v pravidle shromažďování dat (DCR) s vlastním zdrojem dat protokolů JSON .

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 protokolů JSON.

Poznámka:

Pokud chcete pracovat s definicí DCR přímo nebo nasadit s jinými metodami, jako jsou šablony ARM, podívejte se na ukázky pravidel shromažďování dat (DCR) ve službě Azure Monitor.

Požadavky

Kromě požadavků uvedených v části Shromažďování dat z klienta virtuálního počítače pomocí služby Azure Monitor potřebujete k příjmu dat vlastní tabulku v pracovním prostoru služby Log Analytics. Podrobnosti o požadavcích této tabulky najdete v tabulce pracovního prostoru služby Log Analytics .

Konfigurace vlastního zdroje dat souboru JSON

Vytvořte DCR pomocí procesu shromažďování dat z klienta virtuálního počítače pomocí služby Azure Monitor. Na kartě Shromažďování a doručování DCR vyberte z rozevíracího seznamu Typ zdroje dat možnost Vlastní protokoly JSON.

Snímek obrazovky znázorňující konfiguraci kolekce souborů JSON

Možnosti, které jsou dostupné v konfiguraci vlastních protokolů JSON, jsou popsány v následující tabulce.

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
Přeměnit Transformace při příjmu k 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. Příklad najdete v tématu Transformace .
Schéma JSON Vlastnosti, které se mají shromáždit ze souboru protokolu JSON a odesílají se do cílové tabulky. Jediná požadovaná vlastnost je TimeGenerated. Pokud soubor JSON tuto hodnotu neposkytuje, použije se doba příjmu dat. Ostatní sloupce popsané v tabulce pracovního prostoru služby Log Analytics , které nejsou povinné, je možné zahrnout a automaticky se vyplní. Všechny ostatní vlastnosti naplní sloupce v tabulce stejným názvem. Ujistěte se, že vlastnosti, které odpovídají sloupcům tabulky, používají stejný datový typ jako odpovídající sloupec.

Výše uvedený obrázek ukazuje schéma JSON pro ukázkový soubor JSON zobrazený v požadavcích na soubory JSON a osvědčených postupech.

Přidání cílů

Vlastní protokoly JSON je možné odesílat jenom do pracovního prostoru služby Log Analytics, kde je uložená ve vlastní tabulce , kterou vytvoříte. Přidejte cíl typu Azure Monitor Logs a vyberte pracovní prostor Log Analytics. Do DCR můžete přidat pouze jeden pracovní prostor pro vlastní zdroj dat protokolu JSON. Pokud potřebujete více cílů, vytvořte více DCRů. Mějte ale na paměti, že tato akce odešle duplicitní data každému z nich, což bude mít za následek další náklady.

Snímek obrazovky, který ukazuje konfiguraci cílového místa protokolů služby Azure Monitor v pravidle pro shromažďování dat.

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

Soubor, který shromažďuje agent Služby Azure Monitor, musí splňovat následující požadavky:

  • Soubor musí být uložen na místní jednotce počítače agenta v adresáři, který se monitoruje.
  • Každá položka musí být řádek JSON (neboli JSONL nebo NDJSON), který je jedním řádkem JSON a je označený koncem řádku. Formát textu JSON není podporován. Podívejte se na ukázku níže.
  • 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.

Následuje ukázka typického souboru protokolu JSON, který může azure Monitor shromažďovat. To zahrnuje pole: Time, Code, SeverityModule, a Message.

{"Time":"2025-03-07 13:17:34","Code":1423,"Severity":"Error","Module":"Sales","Message":"Unable to connect to pricing service."}
{"Time":"2025-03-07 13:18:23","Code":1420,"Severity":"Information","Module":"Sales","Message":"Pricing service connection established."}
{"Time":"2025-03-07 15:45:13","Code":2011,"Severity":"Warning","Module":"Procurement","Message":"Module failed and was restarted."}
{"Time":"2025-03-07 15:53:31","Code":4100,"Severity":"Information","Module":"Data","Message":"Daily backup complete."}

Dodržujte následující doporučení, abyste předešli ztrátě dat nebo problémům s výkonem.

  • Nezaměřujte se na více než 10 adresářů se soubory protokolu. Dotazování příliš mnoha adresářů vede ke špatnému výkonu.
  • 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 alespoň 2 dny, aby bylo možné zpracovat 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.

Tabulka pracovního prostoru služby Log Analytics

Agent sleduje všechny soubory JSON na místním disku, které odpovídají zadanému vzoru názvů. Každá položka se shromažďuje při zápisu do protokolu a pak se analyzuje před odesláním do zadané tabulky v pracovním prostoru služby Log Analytics. Vlastní tabulka v pracovním prostoru služby Log Analytics, která bude přijímat data, musí existovat před vytvořením dcR.

Všechny sloupce v tabulce, které odpovídají názvu pole v analyzovaných datech JSON, se naplní hodnotou z položky protokolu. Následující tabulka popisuje požadované a volitelné sloupce v tabulce pracovního prostoru kromě sloupců identifikovaných v datech JSON.

Sloupec Typ Povinné? Popis
TimeGenerated Datum a čas Ano Tento sloupec obsahuje čas vygenerování záznamu a vyžaduje se ve všech tabulkách. 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á nastaví TimeGenerated na hodnotu z položky protokolu.
Computer řetězec Ne Pokud tabulka obsahuje tento sloupec, naplní se názvem počítače, ze které byla položka protokolu shromážděna.
FilePath řetězec Ne Pokud tabulka obsahuje tento sloupec, naplní se cestou k souboru protokolu, ze které byla položka protokolu shromážděna.

Následující příklad ukazuje dotaz vracející data z tabulky vytvořené pro ukázkový soubor JSON uvedený výše. Shromáždil se pomocí DCR s ukázkovým schématem JSON uvedeným výše. Vzhledem k tomu, že data JSON neobsahují vlastnost TimeGenerated, použije se čas příjmu. Sloupce Computer a FilePath jsou také automaticky vyplněny.

Snímek obrazovky znázorňující dotaz protokolu vracející výsledky shromážděného protokolu JSON

Vytvoření vlastní tabulky

Pokud cílová tabulka ještě neexistuje, musíte ji před vytvořením řadiče domény vytvořit. Viz Vytvoření vlastní tabulky pro různé metody vytvoření tabulky. Pomocí následujícího skriptu PowerShellu můžete například vytvořit vlastní tabulku pro příjem dat z ukázkového souboru JSON výše. Tento příklad také přidá volitelné sloupce.

$tableParams = @'
{
    "properties": {
        "schema": {
               "name": "{TableName}_CL",
               "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "dateTime"
                    }, 
                    {
                        "name": "Computer",
                        "type": "string"
                    },
                    {
                        "name": "FilePath",
                        "type": "string"
                    },
                    {
                        "name": "Time",
                        "type": "dateTime"
                    },
                    {
                        "name": "Code",
                        "type": "int"
                    },
                    {
                        "name": "Severity",
                        "type": "string"
                    },
                    {
                        "name": "Module",
                        "type": "string"
                    },
                    {
                        "name": "Message",
                        "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

Transformace

Transformace potenciálně upraví příchozí datový proud tak, aby filtrovaly záznamy nebo upravily schéma tak, aby odpovídaly cílové tabulce. Pokud je schéma příchozího datového proudu stejné jako cílová tabulka, můžete použít výchozí transformaci source. Pokud ne, upravte transformKql část šablony ARM pomocí dotazu KQL, který vrátí požadované schéma.

Například v předchozím příkladu má Time položka protokolu pole, které obsahuje čas vytvoření položky protokolu. Místo uložení jako samostatného sloupce v cílové tabulce můžete pomocí následující transformace namapovat hodnotu Time vlastnosti na TimeGenerated.

source | extend TimeGenerated = todatetime(Time) | project-away Time

Snímek obrazovky znázorňující konfiguraci zdroje dat JSON s transformací

Výsledkem by byl následující dotaz protokolu. Všimněte si, že Time sloupec je prázdný a hodnota této vlastnosti se používá pro TimeGenerated.

Snímek obrazovky znázorňující dotaz protokolu vracející výsledky shromážděných protokolů JSON s transformací

Řešení problémů

Pokud neshromažďujete data z očekávaného protokolu JSON, 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 příchozího datového proudu v DCR odpovídá schématu v souboru protokolu.
  • 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 o agentu služby Azure Monitor.
  • Přečtěte si další informace o pravidlech shromažďování dat.