Delen via


Logboeken verzamelen uit een tekstbestand met Azure Monitor Agent

Aangepaste tekstlogboeken is een van de gegevensbronnen die worden gebruikt in een regel voor gegevensverzameling (DCR). Details voor het maken van de DCR worden verstrekt in Gegevens verzamelen met De Azure Monitor-agent. Dit artikel bevat aanvullende informatie voor het type tekstlogboeken.

Veel toepassingen en services registreren gegevens naar tekstbestanden in plaats van standaardservices voor logboekregistratie, zoals Windows-gebeurtenislogboek of Syslog. Deze gegevens kunnen worden verzameld met de Azure Monitor-agent en worden opgeslagen in een Log Analytics-werkruimte met gegevens die zijn verzameld uit andere bronnen.

Vereisten

Basisbewerking

In het volgende diagram ziet u de basisbewerking voor het verzamelen van logboekgegevens uit een tekstbestand.

  1. De agent kijkt naar logboekbestanden die overeenkomen met een opgegeven naampatroon op de lokale schijf.
  2. Elke vermelding in het logboek wordt verzameld en verzonden naar Azure Monitor. De binnenkomende stroom bevat de volledige logboekvermelding in één kolom.
  3. Als de standaardtransformatie wordt gebruikt, wordt de volledige logboekvermelding verzonden naar één kolom in de doeltabel.
  4. Als een aangepaste transformatie wordt gebruikt, kan de logboekvermelding worden geparseerd in meerdere kolommen in de doeltabel.

Diagram met een verzameling van een tekstlogboek door de Azure Monitor-agent, met zowel een eenvoudige verzameling als een transformatie voor een bestand met door komma's gescheiden bestanden.

Vereisten en aanbevolen procedures voor tekstbestanden

Het bestand dat de Azure Monitor-agent bewaakt, moet voldoen aan de volgende vereisten:

  • Het bestand moet worden opgeslagen op het lokale station van de machine met de Azure Monitor-agent in de map die wordt bewaakt.
  • Elke record moet worden uitgelijnd met een einde van de regel.
  • Het bestand moet ASCII- of UTF-8-codering gebruiken. Andere indelingen, zoals UTF-16, worden niet ondersteund.
  • Nieuwe records moeten worden toegevoegd aan het einde van het bestand en niet oude records overschrijven. Het overschrijven veroorzaakt gegevensverlies.

Volg de volgende aanbevelingen om ervoor te zorgen dat u geen gegevensverlies of prestatieproblemen ondervindt:

  • Maak elke dag een nieuw logboekbestand zodat u eenvoudig oude bestanden kunt opschonen.
  • Continu logboekbestanden opschonen in de bewaakte map. Het bijhouden van veel logboekbestanden kan het CPU- en geheugengebruik van agents stimuleren. Wacht minstens 2 dagen totdat alle logboeken kunnen worden verwerkt.
  • Wijzig de naam van een bestand dat overeenkomt met het bestandsscanpatroon niet naar een andere naam die ook overeenkomt met het patroon voor bestandsscans. Hierdoor worden dubbele gegevens opgenomen.
  • Wijzig of kopieer geen grote logboekbestanden die overeenkomen met het scanpatroon van het bestand in de bewaakte map. Indien nodig mag u niet langer zijn dan 50 MB per minuut.

Binnenkomende stroom

De binnenkomende gegevensstroom bevat de kolommen in de volgende tabel.

Column Type Description
TimeGenerated datetime Het tijdstip waarop de record is gegenereerd. Deze waarde wordt automatisch ingevuld wanneer de record wordt toegevoegd aan de Log Analytics-werkruimte. U kunt deze waarde overschrijven met behulp van een transformatie die moet worden ingesteld TimeGenerated op een andere waarde.
RawData tekenreeks De volledige logboekvermelding in één kolom. U kunt een transformatie gebruiken als u deze gegevens wilt opsplitsen in meerdere kolommen voordat u naar de tabel verzendt.
FilePath tekenreeks Als u deze kolom toevoegt aan de binnenkomende stroom in de DCR, wordt deze gevuld met het pad naar het logboekbestand. Deze kolom wordt niet automatisch gemaakt en kan niet worden toegevoegd met behulp van de portal. U moet de DCR die is gemaakt door de portal handmatig wijzigen of de DCR maken met een andere methode, waar u de binnenkomende stroom expliciet kunt definiëren.
Computer tekenreeks Als u deze kolom toevoegt aan de binnenkomende stroom in de DCR, wordt deze gevuld met de naam van de computer. Deze kolom wordt niet automatisch gemaakt en kan niet worden toegevoegd met behulp van de portal. U moet de DCR die is gemaakt door de portal handmatig wijzigen of de DCR maken met een andere methode, waar u de binnenkomende stroom expliciet kunt definiëren.

Aangepaste tabel

Voordat u logboekgegevens uit een tekstbestand kunt verzamelen, moet u een aangepaste tabel maken in uw Log Analytics-werkruimte om de gegevens te ontvangen. Het tabelschema moet overeenkomen met de gegevens die u verzamelt, of u moet een transformatie toevoegen om ervoor te zorgen dat het uitvoerschema overeenkomt met de tabel.

U kunt bijvoorbeeld het volgende PowerShell-script gebruiken om een aangepaste tabel te maken met RawData en FilePath. U hebt geen transformatie nodig voor deze tabel omdat het schema overeenkomt met het standaardschema van de binnenkomende stroom.

$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

Een regel voor gegevensverzameling maken voor een tekstbestand

Maak een regel voor gegevensverzameling, zoals beschreven in Gegevens verzamelen met Azure Monitor Agent. Selecteer in de stap Verzamelen en leveren aangepaste tekstlogboeken in de vervolgkeuzelijst Gegevensbrontype.

Instelling Beschrijving
Bestandspatroon Identificeert de locatie en naam van logboekbestanden op de lokale schijf. Gebruik een jokerteken voor bestandsnamen die variëren, bijvoorbeeld wanneer er elke dag een nieuw bestand wordt gemaakt met een nieuwe naam. U kunt meerdere bestandspatronen invoeren, gescheiden door komma's.

Voorbeelden:
- C:\Logs\MyLog.txt
- C:\Logs\MyLog*.txt
- C:\App01\AppLog.txt, C:\App02\AppLog.txt
- /var/mylog.log
- /var/mylog*.log
Tabelnaam Naam van de doeltabel in uw Log Analytics-werkruimte.
Recordscheidingsteken Momenteel niet gebruikt, maar gereserveerd voor toekomstig potentieel gebruik, met andere scheidingstekens dan het momenteel ondersteunde einde van regel (/r/n).
Transformeren Opnametijdtransformatie om records te filteren of om de binnenkomende gegevens voor de doeltabel op te maken. Gebruik source dit om de binnenkomende gegevens ongewijzigd te laten.

Door scheidingstekens gescheiden logboekbestanden

Veel tekstbestanden bevatten vermeldingen die worden gescheiden door een teken, zoals een komma. Als u deze gegevens wilt parseren in afzonderlijke kolommen, gebruikt u een transformatie met de splitsfunctie.

Denk bijvoorbeeld aan een tekstbestand met de volgende door komma's gescheiden gegevens. Deze velden kunnen worden beschreven als: Time, Code, Severity, enModuleMessage .

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.

Met de volgende transformatie worden de gegevens geparseerd in afzonderlijke kolommen. Omdat split dynamische gegevens worden geretourneerd, moet u functies zoals tostring en toint om de gegevens converteren naar het juiste scalaire type. U moet ook een naam opgeven voor elk item dat overeenkomt met de kolomnaam in de doeltabel. Houd er rekening mee dat dit voorbeeld een TimeGenerated waarde biedt. Als dit niet is opgegeven, wordt de opnametijd gebruikt.

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

Schermopname van de configuratie van door komma's gescheiden bestandsverzameling.

Als u deze gegevens met een logboekquery opvraagt, worden de volgende resultaten geretourneerd.

Schermopname van logboekquery die resultaten retourneert van door komma's gescheiden bestandsverzameling.

Probleemoplossing

Voer de volgende stappen uit als u geen gegevens verzamelt uit het tekstlogboek dat u verwacht.

  • Controleer of gegevens naar het logboekbestand worden geschreven dat wordt verzameld.
  • Controleer of de naam en locatie van het logboekbestand overeenkomen met het bestandspatroon dat u hebt opgegeven.
  • Controleer of het schema van de doeltabel overeenkomt met de binnenkomende stroom of dat u een transformatie hebt waarmee de binnenkomende stroom wordt geconverteerd naar het juiste schema.
  • Zie De bewerking Controleren om te controleren of de agent operationeel is en of er gegevens worden ontvangen.

Volgende stappen

Meer informatie over: