Dela via


Samla in loggar från en textfil med Azure Monitor Agent

Anpassade textloggar är en av de datakällor som används i en datainsamlingsregel (DCR). Information om hur du skapar DCR finns i Samla in data med Azure Monitor Agent. Den här artikeln innehåller ytterligare information om typ av textloggar.

Många program och tjänster loggar information till textfiler i stället för standardloggningstjänster som Windows-händelselogg eller Syslog. Dessa data kan samlas in med Azure Monitor Agent och lagras på en Log Analytics-arbetsyta med data som samlats in från andra källor.

Förutsättningar

Grundläggande åtgärd

Följande diagram visar den grundläggande åtgärden för att samla in loggdata från en textfil.

  1. Agenten söker efter loggfiler som matchar ett angivet namnmönster på den lokala disken.
  2. Varje post i loggen samlas in och skickas till Azure Monitor. Den inkommande strömmen innehåller hela loggposten i en enda kolumn.
  3. Om standardtransformeringen används skickas hela loggposten till en enda kolumn i måltabellen.
  4. Om en anpassad transformering används kan loggposten parsas till flera kolumner i måltabellen.

Diagram som visar en samling av en textlogg av Azure Monitor-agenten, som visar både enkel samling och en transformering för en kommaavgränsad fil.

Krav och metodtips för textfiler

Filen som Azure Monitor-agenten övervakar måste uppfylla följande krav:

  • Filen måste lagras på den lokala enheten på datorn med Azure Monitor-agenten i katalogen som övervakas.
  • Varje post måste vara avgränsad med en radslut.
  • Filen måste använda ASCII- eller UTF-8-kodning. Andra format som UTF-16 stöds inte.
  • Nya poster ska läggas till i slutet av filen och inte skriva över gamla poster. Om du skriver över orsakas dataförlust.

Följ följande rekommendationer för att säkerställa att du inte får problem med dataförlust eller prestanda:

  • Skapa en ny loggfil varje dag så att du enkelt kan rensa gamla filer.
  • Rensa loggfiler kontinuerligt 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.
  • Byt inte namn på en fil som matchar filgenomsökningsmönstret till ett annat namn som också matchar filgenomsökningsmönstret. Detta gör att dubbletter av data matas in.
  • Byt inte namn på eller kopiera stora loggfiler som matchar filgenomsökningsmönstret till den övervakade katalogen. Om du måste ska du inte överskrida 50 MB per minut.

Inkommande ström

Den inkommande dataströmmen innehåller kolumnerna i följande tabell.

Column Type Beskrivning
TimeGenerated datetime Den tid då posten genererades. Det här värdet fylls i automatiskt när posten läggs till i Log Analytics-arbetsytan. Du kan åsidosätta det här värdet med hjälp av en transformering för att ange TimeGenerated till ett annat värde.
RawData sträng Hela loggposten i en enda kolumn. Du kan använda en transformering om du vill dela upp dessa data i flera kolumner innan du skickar till tabellen.
FilePath sträng Om du lägger till den här kolumnen i den inkommande strömmen i DCR fylls den i med sökvägen till loggfilen. Den här kolumnen skapas inte automatiskt och kan inte läggas till med hjälp av portalen. Du måste ändra domänkontrollanten som skapats av portalen manuellt eller skapa DCR med en annan metod där du uttryckligen kan definiera den inkommande strömmen.

Anpassad tabell

Innan du kan samla in loggdata från en textfil måste du skapa en anpassad tabell på Log Analytics-arbetsytan för att ta emot data. Tabellschemat måste matcha de data som du samlar in, eller så måste du lägga till en transformering för att säkerställa att utdataschemat matchar tabellen.

Varning

Du bör inte använda en befintlig anpassad loggtabell som används av MMA-agenter. Dina MMA-agenter kan inte skriva till tabellen när den första AMA-agenten skriver till tabellen. Du bör skapa en ny tabell för AMA som ska användas för att förhindra MMA-dataförlust.

Du kan till exempel använda följande PowerShell-skript för att skapa en anpassad tabell med RawData och FilePath. Du behöver ingen transformering för den här tabellen eftersom schemat matchar standardschemat för den inkommande strömmen.

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

Skapa en datainsamlingsregel för en textfil

Skapa en datainsamlingsregel enligt beskrivningen i Samla in data med Azure Monitor Agent. I steget Samla in och leverera väljer du Anpassade textloggar i listrutan Datakällatyp .

Inställning beskrivning
Filmönster Identifierar platsen och namnet på loggfilerna på den lokala disken. Använd ett jokertecken för filnamn som varierar, till exempel när en ny fil skapas varje dag med ett nytt namn. Du kan ange flera filmönster avgränsade med kommatecken.

Exempel:
- C:\Logs\MyLog.txt
- C:\Logs\MyLog*.txt
- C:\App01\AppLog.txt, C:\App02\AppLog.txt
- /var/mylog.log
- /var/mylog*.log
Tabellnamn Namn på måltabellen på Log Analytics-arbetsytan.
Registrera avgränsare Används för närvarande inte men är reserverad för framtida potentiell användning och tillåter avgränsare som inte stöds i slutet av raden (/r/n).
Transformering Inmatningstidstransformering för att filtrera poster eller formatera inkommande data för måltabellen. Använd source för att lämna inkommande data oförändrade.

Avgränsade loggfiler

Många textloggfiler har poster som avgränsas av ett tecken, till exempel ett kommatecken. Om du vill parsa dessa data i separata kolumner använder du en transformering med funktionen split.

Tänk dig till exempel en textfil med följande kommaavgränsade data. Dessa fält kan beskrivas som: Time, Code, Severity,Moduleoch 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.

Följande transformering parsar data i separata kolumner. Eftersom split returnerar dynamiska data måste du använda funktioner som tostring och toint för att konvertera data till rätt skalär typ. Du måste också ange ett namn för varje post som matchar kolumnnamnet i måltabellen. Observera att det här exemplet innehåller ett TimeGenerated värde. Om detta inte angavs används inmatningstiden.

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

Skärmbild som visar konfigurationen av kommaavgränsad filsamling.

Om du hämtar dessa data med en loggfråga returneras följande resultat.

Skärmbild som visar loggfrågan som returnerar resultat av kommaavgränsad filsamling.

Felsökning

Gå igenom följande steg om du inte samlar in data från textloggen som du förväntar dig.

  • Kontrollera att data skrivs till loggfilen som samlas in.
  • Kontrollera att loggfilens namn och plats matchar det filmönster som du har angett.
  • Kontrollera att schemat för måltabellen matchar den inkommande strömmen eller att du har en transformering som konverterar den inkommande strömmen till rätt schema.
  • Se Kontrollera åtgärden för att kontrollera om agenten är i drift och att data tas emot.

Nästa steg

Läs mer om: