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
- Log Analytics-werkruimte met ten minste inzenderrechten.
- Een eindpunt voor gegevensverzameling (DCE) in dezelfde regio als de Log Analytics-werkruimte. Zie Hoe u eindpunten voor gegevensverzameling instelt op basis van uw implementatie voor meer informatie.
- Een nieuwe of bestaande DCR die wordt beschreven in Gegevens verzamelen met De Azure Monitor-agent.
Basisbewerking
In het volgende diagram ziet u de basisbewerking voor het verzamelen van logboekgegevens uit een tekstbestand.
- De agent kijkt naar logboekbestanden die overeenkomen met een opgegeven naampatroon op de lokale schijf.
- Elke vermelding in het logboek wordt verzameld en verzonden naar Azure Monitor. De binnenkomende stroom bevat de volledige logboekvermelding in één kolom.
- Als de standaardtransformatie wordt gebruikt, wordt de volledige logboekvermelding verzonden naar één kolom in de doeltabel.
- Als een aangepaste transformatie wordt gebruikt, kan de logboekvermelding worden geparseerd in meerdere kolommen in de doeltabel.
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
Notitie
Ondersteuning voor meerdere regels die gebruikmaakt van een tijdstempel voor gescheiden gebeurtenissen is nu beschikbaar. U moet een resourcebeheersjabloonimplementatie gebruiken totdat de ondersteuning is toegevoegd in de gebruikersinterface van de portal.
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 met 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. |
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.
Waarschuwing
Om gegevensverlies te voorkomen, is het belangrijk dat u geen bestaande aangepaste logboektabel gebruikt die momenteel door MMA-agents wordt gebruikt. Zodra een AMA-agent naar een bestaande aangepaste logboektabel schrijft, kunnen MMA-agents niet meer naar die tabel schrijven. In plaats daarvan moet u een nieuwe tabel maken die specifiek is bedoeld voor AMA-agents om een soepele overgang van de ene agent naar de volgende te garanderen.
U kunt bijvoorbeeld het volgende PowerShell-script gebruiken om een aangepaste tabel te maken met RawData
, FilePath
en Computer
. 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
, enModule
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.
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])
Als u deze gegevens met een logboekquery opvraagt, worden de volgende resultaten geretourneerd.
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: