Samla in loggar från en text- eller JSON-fil med Azure Monitor Agent

Många program loggar information till text- eller JSON-filer i stället för standardloggningstjänster som Windows-händelselogg eller Syslog. Den här artikeln beskriver hur du samlar in loggdata från text- och JSON-filer på övervakade datorer med hjälp av Azure Monitor Agent genom att skapa en datainsamlingsregel (DCR).

Kommentar

JSON-inmatningen är i förhandsversion just nu.

Förutsättningar

För att slutföra den här proceduren behöver du:

  • Log Analytics-arbetsyta där du har minst deltagarbehörighet.

  • En eller två datainsamlingsslutpunkter, beroende på om din virtuella dator och Log Analytics-arbetsyta finns i samma region.

    Mer information finns i Konfigurera datainsamlingsslutpunkter baserat på din distribution.

  • Behörigheter för att skapa datainsamlingsregelobjekt på arbetsytan.

  • JSON-text måste finnas i en enda rad för korrekt inmatning. Formatet JSON-brödtext (fil) stöds inte.

  • En virtuell dator, vm-skalningsuppsättning, Arc-aktiverad server lokalt eller Azure Monitoring Agent på en lokal Windows-klient som skriver loggar till en text- eller JSON-fil.

    Krav och metodtips för text- och JSON-filer:

    • Lagra filer på den lokala enheten på den dator där Azure Monitor-agenten körs och i katalogen som övervakas.
    • Avgränsa slutet av en post med en radslut.
    • Använd ASCII- eller UTF-8-kodning. Andra format som UTF-16 stöds inte.
    • Skapa en ny loggfil varje dag så att du enkelt kan ta bort gamla filer.
    • Rensa alla loggfiler i den övervakade katalogen. Spårning av många loggfiler kan öka agentens cpu- och minnesanvändning. Vänta i minst 2 dagar för att ge gott om tid för att alla loggar ska bearbetas.
    • Skriv inte över en befintlig fil med nya poster. Du bör bara lägga till nya poster i slutet av filen. Om du skriver över orsakas dataförlust.
    • Byt inte namn på en fil till ett nytt namn och öppna sedan en ny fil med samma namn. Detta kan orsaka dataförlust.
    • Byt inte namn på eller kopiera stora loggfiler som matchar filgenomsökningsmönstret i den övervakade katalogen. Om du måste ska du inte överskrida 50 MB per minut.
    • Byt inte namn på en fil som matchar filgenomsökningsmönstret till ett nytt namn som även matchar filgenomsökningsmönstret. Detta gör att dubbletter av data matas in.

Skapa en anpassad tabell

Tabellen som skapades i skriptet har två kolumner:

  • TimeGenerated (datetime) [Krävs]
  • RawData (sträng) [Valfritt om tabellschema anges]
  • 'FilePath' (sträng) [Valfritt]
  • YourOptionalColumn (sträng) [Valfritt]

Standardtabellschemat för loggdata som samlas in från textfiler är "TimeGenerated" och "RawData". Det är valfritt att lägga till "FilePath" i något av teamen. Om du vet att ditt slutliga schema eller om källan är en JSON-logg kan du lägga till de sista kolumnerna i skriptet innan du skapar tabellen. Du kan alltid lägga till kolumner med log analytics-tabellgränssnittet senare.

Kolumnnamnen och JSON-attributen måste exakt matcha för att automatiskt parsas i tabellen. Både kolumner och JSON-attribut är skiftlägeskänsliga. Till exempel Rawdata samlar inte in händelsedata. Det måste vara RawData. Inmatning släpper JSON-attribut som inte har någon motsvarande kolumn.

Det enklaste sättet att göra REST-anropet är från en Azure Cloud PowerShell-kommandorad (CLI). Öppna gränssnittet genom att gå till Azure-portalen, trycka på Cloud Shell-knappen och välja PowerShell. Om det här är första gången du använder Azure Cloud PowerShell måste du gå igenom konfigurationsguiden för en gång.

Kopiera och klistra in det här skriptet i PowerShell för att skapa tabellen på din arbetsyta:

$tableParams = @'
{
    "properties": {
        "schema": {
               "name": "{TableName}_CL",
               "columns": [
        {
                                "name": "TimeGenerated",
                                "type": "DateTime"
                        }, 
                       {
                                "name": "RawData",
                                "type": "String"
                       },
                       {
                                "name": "FilePath",
                                "type": "String"
                       },
                      {
                                "name": `"YourOptionalColumn",
                                "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

Du bör få ett svar på 200 och information om tabellen som du nyss skapade.

Skapa en datainsamlingsregel för en text- eller JSON-fil

Datainsamlingsregeln definierar:

  • Vilka källloggfiler Azure Monitor Agent söker efter nya händelser.
  • Hur Azure Monitor transformerar händelser under inmatning.
  • Log Analytics-målarbetsytan och tabellen som Azure Monitor skickar data till.

Du kan definiera en datainsamlingsregel för att skicka data från flera datorer till flera Log Analytics-arbetsytor, inklusive arbetsytor i en annan region eller klientorganisation. Skapa datainsamlingsregeln i samma region som din Log Analytics-arbetsyta.

Kommentar

Om du vill skicka data mellan klienter måste du först aktivera Azure Lighthouse.

Följ stegen i Resource Manager-mallen om du vill parsa JSON-loggfilen automatiskt i en anpassad tabell. Textdata kan omvandlas till kolumner med inmatningstidstransformering.

Så här skapar du datainsamlingsregeln i Azure-portalen:

  1. På menyn Övervaka väljer du Regler för datainsamling.

  2. Välj Skapa för att skapa en ny regel och associationer för datainsamling.

    Skärmbild som visar knappen Skapa på skärmen Datainsamlingsregler.

  3. Ange ett regelnamn och ange en slutpunkt för prenumeration, resursgrupp, region, plattformstyp och datainsamling:

    • Region anger var DCR ska skapas. De virtuella datorerna och deras associationer kan finnas i valfri prenumeration eller resursgrupp i klientorganisationen.
    • Plattformstyp anger vilken typ av resurser som den här regeln kan tillämpas på. Alternativet Anpassad tillåter både Windows- och Linux-typer.
    • Slutpunkten för datainsamling anger den datainsamlingsslutpunkt som Azure Monitor-agenten skickar insamlade data till. Den här datainsamlingsslutpunkten måste finnas i samma region som Log Analytics-arbetsytan. Mer information finns i Konfigurera datainsamlingsslutpunkter baserat på din distribution.

    Skärmbild som visar fliken Grundläggande på skärmen Datainsamlingsregel.

  4. På fliken Resurser :

    1. Välj + Lägg till resurser och associera resurser med datainsamlingsregeln. Resurser kan vara virtuella datorer, VM-skalningsuppsättningar och Azure Arc för servrar. Azure-portalen installerar Azure Monitor Agent på resurser som inte redan har den installerad.

      Viktigt!

      Portalen aktiverar systemtilldelad hanterad identitet på målresurserna, tillsammans med befintliga användartilldelade identiteter, om det finns några. För befintliga program, såvida du inte anger den användartilldelade identiteten i begäran, använder datorn som standard systemtilldelad identitet i stället.

    2. Välj Aktivera slutpunkter för datainsamling.

    3. Du kan också välja en datainsamlingsslutpunkt för var och en av de virtuella datorer som associeras med datainsamlingsregeln. För det mesta bör du bara använda standardvärdena.

      Den här datainsamlingsslutpunkten skickar konfigurationsfiler till den virtuella datorn och måste finnas i samma region som den virtuella datorn. Mer information finns i Konfigurera datainsamlingsslutpunkter baserat på din distribution.

    Skärmbild som visar fliken Resurser på skärmen Datainsamlingsregel.

  5. På fliken Samla in och leverera väljer du Lägg till datakälla för att lägga till en datakälla och ange ett mål.

  6. I listrutan Datakällatyp väljer du Anpassade textloggar eller JSON-loggar.

  7. Ange följande information:

    • Filmönster – Identifierar var loggfilerna finns på den lokala disken. Du kan ange flera filmönster avgränsade med kommatecken (i Linux krävs AMA version 1.26 eller senare för att samla in från en kommaavgränsad lista med filmönster).

      Exempel på giltiga indata:

      • 20220122-MyLog.txt
      • ProcessA_MyLog.txt
      • ErrorsOnly_MyLog.txt, WarningOnly_MyLog.txt

      Kommentar

      Det finns ofta flera loggfiler av samma typ i samma katalog. En dator kan till exempel skapa en ny fil varje dag för att förhindra att loggfilen blir för stor. Om du vill samla in loggdata i det här scenariot kan du använda ett jokertecken för filer. Använd formatet C:\directoryA\directoryB\*MyLog.txt för Windows och /var/*.log för Linux. Det finns inget stöd för katalog jokertecken.

    • Tabellnamn – namnet på måltabellen som du skapade i Log Analytics-arbetsytan. Mer information finns i Skapa en anpassad tabell.

    • Postavgränsare – kommer att användas i framtiden för att tillåta andra avgränsare än den radslut som stöds för närvarande (/r/n).

    • Transformera – Lägg till en inmatningstidstransformering eller lämna som källa om du inte behöver transformera insamlade data.

  8. På fliken Mål lägger du till ett eller flera mål för datakällan. Du kan välja flera mål av samma eller olika typer. Du kan till exempel välja flera Log Analytics-arbetsytor, som även kallas multihoming.

    Skärmbild som visar målfliken på skärmen Lägg till datakälla för en datainsamlingsregel i Azure-portalen.

  9. Välj Granska + skapa för att granska informationen om datainsamlingsregeln och associationen med uppsättningen virtuella datorer.

  10. Välj Skapa för att skapa datainsamlingsregeln.

Kommentar

Det kan ta upp till 10 minuter innan data skickas till målen när du har skapat datainsamlingsregeln.

Exempelloggfrågor

Kolumnnamnen som används här är till exempel endast. Kolumnnamnen för din logg kommer troligen att vara olika.

  • Räkna antalet händelser efter kod.

    MyApp_CL
    | summarize count() by code
    

Exempel på aviseringsregel

  • Skapa en aviseringsregel för alla felhändelser.

    MyApp_CL
    | where status == "Error"
    | summarize AggregatedValue = count() by Computer, bin(TimeGenerated, 15m)
    

Felsöka

Använd följande steg för att felsöka insamling av loggar från text- och JSON-filer.

Kontrollera om du har matat in data till din anpassade tabell

Börja med att kontrollera om några poster har matats in i din anpassade loggtabell genom att köra följande fråga i Log Analytics:

<YourCustomTable>_CL
| where TimeGenerated > ago(48h)
| order by TimeGenerated desc

Om poster inte returneras kontrollerar du de andra avsnitten efter möjliga orsaker. Den här frågan söker efter poster under de senaste två dagarna, men du kan ändra för ett annat tidsintervall. Det kan ta 5–7 minuter innan nya data visas i tabellen. Azure Monitor-agenten samlar bara in data som skrivits till texten eller JSON-filen när du har associerat datainsamlingsregeln med den virtuella datorn.

Kontrollera att du har skapat en anpassad tabell

Du måste skapa en anpassad loggtabell på Log Analytics-arbetsytan innan du kan skicka data till den.

Kontrollera att agenten skickar pulsslag

Kontrollera att Azure Monitor-agenten kommunicerar korrekt genom att köra följande fråga i Log Analytics för att kontrollera om det finns några poster i tabellen Heartbeat.

Heartbeat
| where TimeGenerated > ago(24h)
| where Computer has "<computer name>"
| project TimeGenerated, Category, Version
| order by TimeGenerated desc

Kontrollera att du har angett rätt loggplats i datainsamlingsregeln

Datainsamlingsregeln har ett avsnitt som liknar följande. Elementet filePatterns anger sökvägen till loggfilen som ska samlas in från agentdatorn. Kontrollera agentdatorn för att kontrollera att detta är korrekt.

"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"]
        }
    ]

Det här filmönstret ska motsvara loggarna på agentdatorn.

Skärmbild av textloggfiler på agentdatorn.

Använda felsökaren för Azure Monitor-agenten

Använd felsökaren för Azure Monitor-agenten för att leta efter vanliga problem och dela resultat med Microsoft.

Kontrollera att loggar fylls i

Agenten samlar bara in nytt innehåll som skrivs till loggfilen som samlas in. Om du experimenterar med samlingsloggarna från en text- eller JSON-fil kan du använda följande skript för att generera exempelloggar.

# 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)

Nästa steg

Läs mer om: