Shromažďování protokolů ze souboru JSON pomocí agenta služby Azure Monitor
Vlastní protokoly JSON 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 textu a protokolů JSON.
Mnoho aplikací a služeb bude protokolovat informace do souborů JSON 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 ze souboru JSON.
- 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 definovaný uživatelem se používá k analýze dat protokolu do sloupců.
- Pokud schéma příchozího datového proudu odpovídá schématu cílové tabulky, použije se výchozí transformace.
Požadavky na soubory JSON 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.
- Text JSON musí být obsažený v jednom řádku. Formát textu JSON není podporován. Podívejte se na ukázku níže.
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.
Vlastní tabulka
Než budete moct shromažďovat data protokolu ze souboru JSON, musíte v pracovním prostoru služby Log Analytics vytvořit vlastní tabulku, která bude přijímat data. Schéma tabulky musí odpovídat sloupcům v příchozím datovém proudu nebo musíte přidat transformaci, aby bylo zajištěno, že výstupní schéma odpovídá tabulce.
Upozorňující
Neměli byste používat existující vlastní tabulku používanou agentem Log Analytics. Starší agenti nebudou moct zapisovat do tabulky, jakmile do ní zapíše první agent služby Azure Monitor. Vytvořte novou tabulku pro agenta Azure Monitoru, která se má použít, aby se zabránilo ztrátě dat agenta Log Analytics.
Pomocí následujícího skriptu PowerShellu můžete například vytvořit vlastní tabulku s více sloupci.
$tableParams = @'
{
"properties": {
"schema": {
"name": "{TableName}_CL",
"columns": [
{
"name": "TimeGenerated",
"type": "DateTime"
},
{
"name": "MyStringColumn",
"type": "string"
},
{
"name": "MyIntegerColumn",
"type": "int"
},
{
"name": "MyRealColumn",
"type": "real"
},
{
"name": "MyBooleanColumn",
"type": "bool"
},
{
"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 soubor JSON
Poznámka:
Vlastní příjem souborů JSON založený na agentech je aktuálně ve verzi Preview a na portálu zatím nemá kompletní uživatelské rozhraní. I když můžete vytvořit dcR pomocí portálu, musíte ho upravit tak, aby definoval sloupce v příchozím datovém proudu. Tato část obsahuje podrobnosti o vytvoření DCR pomocí šablony ARM.
Schéma příchozího datového proudu
Poznámka:
Podpora víceřádkového rozhraní, která používá časové razítko k odděleným událostem, je nyní k dispozici.
Soubory JSON obsahují název vlastnosti s každou hodnotou a příchozí datový proud v DCR musí obsahovat sloupec odpovídající názvu každé vlastnosti. Oddíl šablony ARM je potřeba upravit columns
pomocí sloupců z protokolu.
Následující tabulka popisuje volitelné sloupce, které můžete zahrnout kromě sloupců definujících data v souboru protokolu.
Column | Type | Popis |
---|---|---|
TimeGenerated |
datetime | Čas vygenerování záznamu. Tato hodnota se automaticky naplní časem, kdy se záznam přidá do pracovního prostoru služby Log Analytics, pokud není zahrnutý do příchozího datového proudu. |
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. |
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 tee pomocí dotazu KQL, který vrací požadované schéma.
Šablona ARM
Pomocí následující šablony ARM vytvořte DCR pro shromažďování souborů protokolu JSON a proveďte změny popsané v předchozích částech. Následující tabulka popisuje parametry, které při nasazování šablony vyžadují hodnoty.
Nastavení | Popis |
---|---|
Název pravidla shromažďování dat | Jedinečný název dcR. |
ID prostředku koncového bodu shromažďování dat | ID prostředku koncového bodu shromažďování dat (DCE). |
Umístění | Oblast dcR. Musí být stejné umístění jako pracovní prostor služby Log Analytics. |
Vzory souborů | 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 (AMA verze 1.26 nebo vyšší vyžadované pro více vzorů souborů v Linuxu). Příklady: - C:\Logs\MyLog.json - C:\Logs\MyLog*.json - C:\App01\AppLog.json, C:\App02\AppLog.json - /var/mylog.json - /var/mylog*.json |
Název tabulky | Název cílové tabulky v pracovním prostoru služby Log Analytics |
ID prostředku pracovního prostoru | ID prostředku pracovního prostoru služby Log Analytics s cílovou tabulkou |
timeFormat | Podporované jsou následující formáty. Použijte řetězce uvozovek v šabloně ARM. Nezahrnujte ukázkový čas, který je v závorkách. - "yyyy-MM-ddTHH:mm:ssk" (2024-10-29T18:28:34) - "YYYY-MM-DD HH:MM:SS" (2024-10-29 18:28:34) - "M/D/YYYY HH:MM:SS AM/PM" (10.29.2024 06:28:34 PM) - "Mon DD, YYYY HH:MM:SS" (Oct[ober] 29, 2024 18:28:34) - "yyMMDd HH:mm:ss" (241029 18:28:34) - "ddMMyy HH:mm:ss" (291024 18:28:34) - "MMM d HH:mm:ss" (29. října 18:28:34) - "dd/MMM/yyyy:HH:mm:ss zzz" (14.října/2024:18:28:34 -00) |
Důležité
Při vytváření DCR pomocí šablony ARM musíte řadič domény přidružit k agentům, kteří ho budou používat. Řadič domény můžete upravit na webu Azure Portal a vybrat agenty, jak je popsáno v části Přidání prostředků.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"dataCollectionRuleName": {
"type": "string",
"metadata": {
"description": "Unique name for the DCR. "
}
},
"dataCollectionEndpointResourceId": {
"type": "string",
"metadata": {
"description": "Resource ID of the data collection endpoint (DCE)."
}
},
"location": {
"type": "string",
"metadata": {
"description": "Region for the DCR. Must be the same location as the Log Analytics workspace. "
}
},
"filePatterns": {
"type": "string",
"metadata": {
"description": "Path on the local disk for the log file to collect. May include wildcards.Enter multiple file patterns separated by commas (AMA version 1.26 or higher required for multiple file patterns on Linux)."
}
},
"tableName": {
"type": "string",
"metadata": {
"description": "Name of destination table in your Log Analytics workspace. "
}
},
"workspaceResourceId": {
"type": "string",
"metadata": {
"description": "Resource ID of the Log Analytics workspace with the target table."
}
},
"timeFormat": {
"type": "string"
"metadata": {
"discription": "The time format that you would like to use to split multi line imput"
}
}
},
"variables": {
"tableOutputStream": "[concat('Custom-', parameters('tableName'))]"
},
"resources": [
{
"type": "Microsoft.Insights/dataCollectionRules",
"apiVersion": "2022-06-01",
"name": "[parameters('dataCollectionRuleName')]",
"location": "[parameters('location')]",
"properties": {
"dataCollectionEndpointId": "[parameters('dataCollectionEndpointResourceId')]",
"streamDeclarations": {
"Custom-Json-stream": {
"columns": [
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "FilePath",
"type": "string"
},
{
"name": "MyStringColumn",
"type": "string"
},
{
"name": "MyIntegerColumn",
"type": "int"
},
{
"name": "MyRealColumn",
"type": "real"
},
{
"name": "MyBooleanColumn",
"type": "boolean"
}
]
}
},
"dataSources": {
"logFiles": [
{
"streams": [
"Custom-Json-stream"
],
"filePatterns": [
"[parameters('filePatterns')]"
],
"format": "json",
"name": "Custom-Json-stream",
"settings": {
"text": {
"recordStartTimestampFormat": "[parameters('timeFormat')]"
}
}
}
]
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "[parameters('workspaceResourceId')]",
"name": "workspace"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-Json-stream"
],
"destinations": [
"workspace"
],
"transformKql": "source",
"outputStream": "[variables('tableOutputStream')]"
}
]
}
}
]
}
Řešení problému
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:
- Agent Služby Azure Monitor
- Pravidla shromažďování dat.
- Osvědčené postupy pro správu nákladů ve službě Azure Monitor