Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Viele Anwendungen und Dienste auf einem virtuellen Computer protokollieren Informationen in Textdateien anstelle von Standardprotokollierungsdiensten wie Windows-Ereignisprotokoll oder Syslog. Das Sammeln von benutzerdefinierten Textprotokollen von virtuellen Computern kann mithilfe einer Datensammlungsregel (Data Collection Rule, DCR) und einer Datenquelle für benutzerdefinierte Textprotokolle erfolgen.
Details zur Erstellung des DCR werden in " Sammeln von Daten vom VM-Client mit Azure Monitor" bereitgestellt. Dieser Artikel enthält zusätzliche Details für den Datenquellentyp "Benutzerdefinierte Textprotokolle".
Hinweis
Informationen zum direkten Arbeiten mit der DCR-Definition oder zur Bereitstellung mit anderen Methoden wie ARM-Vorlagen finden Sie in Den Beispielen zur Datensammlungsregel (Data Collection Rule, DCR) in Azure Monitor.
Voraussetzungen
Zusätzlich zu den Voraussetzungen, die unter "Sammeln von Daten vom Client für virtuelle Computer mit Azure Monitor" aufgeführt sind, benötigen Sie eine benutzerdefinierte Tabelle in einem Log Analytics-Arbeitsbereich, um die Daten zu empfangen. Details zu den Anforderungen dieser Tabelle finden Sie in der Tabelle des Log Analytics-Arbeitsbereichs . Beachten Sie, dass Aarch64 alma8 und rocky8 nicht unterstützt werden.
Konfigurieren von benutzerdefinierten Textdateidatenquellen
Erstellen Sie den DCR mithilfe des Prozesses in "Sammeln von Daten vom virtuellen Maschinen-Client mit Azure Monitor". Wählen Sie auf der Registerkarte "Sammeln und Übermitteln" des DCR im Dropdownmenü "Datenquellentyp" die Option "Benutzerdefinierte Textprotokolle" aus.
Die optionen, die in der Konfiguration für benutzerdefinierte Textprotokolle verfügbar sind, werden in der folgenden Tabelle beschrieben.
| Konfiguration | BESCHREIBUNG |
|---|---|
| Dateimuster | Hiermit wird der Speicherort und der Namen von Protokolldateien auf dem lokalen Datenträger angegeben. Verwenden Sie Platzhalterzeichen für Dateinamen, die variieren, zum Beispiel, wenn täglich eine Datei mit einem neuen Namen erstellt wird. Sie können mehrere Dateimuster durch Komma getrennt eingeben. Sie können Wildcards nur im Dateinamen und im Ordnernamen der ersten Ebene verwenden, die über dem Dateinamen steht. Beispiele – C:\Logs\MyLog.txt – C:\Logs\MyLog*.txt -C:\Logs\IIS*\*.logs – C:\App01\AppLog.txt, C:\App02\AppLog.txt – /var/mylog.log – /var/mylog*.log |
| Tabellenname | Dies ist der Name der Zieltabelle in Ihrem Log Analytics-Arbeitsbereich. Diese Tabelle muss bereits vorhanden sein. |
| Datensatztrennzeichen | Gibt das Trennzeichen zwischen Protokolleinträgen an.
TimeStamp ist der einzige aktuell zulässige Wert. Dadurch wird nach einem Datum im angegebenen timeFormat Format gesucht, um den Anfang eines neuen Datensatzes zu identifizieren. Wenn kein Datum im angegebenen Format gefunden wird, wird das Zeilenende verwendet. Weitere Informationen finden Sie unter "Zeitformate ". |
| TimeStamp-Format | Das zeitformat, das in der Protokolldatei verwendet wird, wie in den folgenden Zeitformaten beschrieben. |
| Umwandeln |
Dies ist die Erfassungszeittransformation zum Filtern von Datensätzen oder zum Formatieren der eingehenden Daten für die Zieltabelle. Verwenden Sie source, um eingehende Daten unverändert zu lassen und an die RawData-Spalte zu senden. Ein Beispiel für die Verwendung einer Transformation finden Sie unter "Durch Trennzeichen getrennte Protokolldateien ". |
Hinzufügen von Zielen
Benutzerdefinierte Textprotokolle können nur an einen Log Analytics-Arbeitsbereich gesendet werden, in dem sie in der benutzerdefinierten Tabelle gespeichert ist, die Sie erstellen. Fügen Sie ein Ziel vom Typ Azure Monitor Logs hinzu, und wählen Sie einen Log Analytics-Arbeitsbereich aus. Sie können einem DCR nur einen einzelnen Arbeitsbereich für eine benutzerdefinierte Textprotokolldatenquelle hinzufügen. Wenn Sie mehrere Ziele benötigen, erstellen Sie mehrere DCRs. Beachten Sie jedoch, dass dadurch doppelte Daten an jedes gesendet werden, was zu zusätzlichen Kosten führt.
Zeitformate
In der folgenden Tabelle werden die Zeitformate beschrieben, die in der timeFormat Einstellung des DCR unterstützt werden. Wenn eine Zeit mit dem angegebenen Format im Protokolleintrag enthalten ist, wird sie verwendet, um einen neuen Protokolleintrag zu identifizieren. Wenn kein Datum im angegebenen Format gefunden wird, wird das Zeilenende als Trennzeichen verwendet. Weitere Informationen dazu, wie diese Einstellung verwendet wird, finden Sie unter "Mehrzeilenprotokolldateien ".
| Zeitformat | Beispiel |
|---|---|
ISO 8601
1 |
2024-10-29T18:28:34Z |
yyyy-MM-ddTHH:mm:ssk |
2024-10-29T18:28:34Z 2024-10-29T18:28:34+01:11 |
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 |
29. Oktober 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. Oktober 18:28:34 |
dd/MMM/yyyy:HH:mm:ss zzz |
14.Oktober/2024:18:28:34 -00 |
1 ISO 8601-Zeitstempel mit Dezimalstellen / Subsekundengenauigkeit werden nicht unterstützt.
Anforderungen an die Textdatei und Best Practices
Die von Azure Monitor erfasste Datei muss die folgenden Anforderungen erfüllen:
- Die Datei muss auf dem lokalen Laufwerk des Agentcomputers im verzeichnis gespeichert werden, das überwacht wird.
- Die Datei muss die ASCII- oder UTF-8-Codierung verwenden. Andere Formate wie UTF-16 werden nicht unterstützt.
- Neue Datensätze sollten am Ende der Datei angefügt werden und alte Datensätze nicht überschreiben. Das Überschreiben führt zu Datenverlusten.
Nachfolgend finden Sie ein Beispiel für eine typische benutzerdefinierte Textdatei, die von Azure Monitor gesammelt werden kann. Obwohl jede Zeile mit einem Datum beginnt, ist dies nicht erforderlich, da das Ende der Zeile verwendet wird, um jeden Eintrag zu identifizieren, wenn kein Datum gefunden wird.
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.
Befolgen Sie diese Empfehlungen, um sicherzustellen, dass keine Datenverluste oder Leistungsprobleme auftreten:
- Zielen Sie nicht auf mehr als 10 Verzeichnisse mit Protokolldateien. Das Abrufen zu vieler Verzeichnisse beeinträchtigt die Leistung.
- Bereinigen Sie Protokolldateien im überwachten Verzeichnis kontinuierlich. Die Nachverfolgung vieler Protokolldateien kann die CPU- und Arbeitsspeicherauslastung des Agents erhöhen. Warten Sie mindestens zwei Tage, um ausreichend Zeit für die Verarbeitung aller Protokolle zuzulassen.
- Ändern Sie den Namen einer Datei, der dem Dateisuchmuster entspricht, nicht in einen anderen Namen, der dem Dateisuchmuster ebenfalls entspricht. Dies führt dazu, dass doppelte Daten erfasst werden.
- Benennen Sie keine großen Protokolldateien um, die dem Dateisuchmuster entsprechen, und kopieren Sie sie nicht in das überwachte Verzeichnis. Wenn Sie dies tun müssen, dürfen 50 MB pro Minute nicht überschritten werden.
Log Analytics-Arbeitsbereichstabelle
Jeder Eintrag in der Protokolldatei wird erfasst, während er erstellt und an die angegebene Tabelle in einem Log Analytics-Arbeitsbereich gesendet wird. Die benutzerdefinierte Tabelle im Log Analytics-Arbeitsbereich, die die Daten empfängt, muss vorhanden sein, bevor Sie den DCR erstellen.
In der folgenden Tabelle werden die erforderlichen und optionalen Spalten in der Arbeitsbereichstabelle beschrieben. Die Tabelle kann andere Spalten enthalten, aber sie werden nicht aufgefüllt, es sei denn, Sie analysieren die Daten mit einer Transformation, wie in getrennten Protokolldateien beschrieben.
| Kolumne | Typ | Erforderlich? | BESCHREIBUNG |
|---|---|---|---|
TimeGenerated |
Datum/Uhrzeit | Ja | Diese Spalte enthält die Zeit, zu der der Datensatz generiert wurde und in allen Tabellen erforderlich ist. Dieser Wert wird automatisch mit dem Zeitpunkt aufgefüllt, zu dem der Datensatz dem Log Analytics-Arbeitsbereich hinzugefügt wird. Sie können diesen Wert mithilfe einer Transformation außer Kraft setzen, um TimeGenerated auf einen Wert aus dem Protokolleintrag festzulegen. |
RawData |
Schnur | Ja 1 | Dies ist der gesamte Protokolleintrag in einer einzelnen Spalte. Sie können eine Transformation verwenden, wenn Sie diese Daten vor dem Senden an die Tabelle in mehrere Spalten aufteilen möchten. |
Computer |
Schnur | Nein | Wenn die Tabelle diese Spalte enthält, wird sie mit dem Namen des Computers aufgefüllt, von dem der Protokolleintrag erfasst wurde. |
FilePath |
Schnur | Nein | Wenn die Tabelle diese Spalte enthält, wird sie mit dem Pfad zur Protokolldatei aufgefüllt, aus der der Protokolleintrag erfasst wurde. |
1 Die Tabelle muss keine Spalte enthalten RawData , wenn Sie eine Transformation verwenden, um die Daten in mehrere Spalten zu analysieren.
Bei der Erfassung mithilfe von Standardeinstellungen werden die Daten aus der oben gezeigten Beispielprotokolldatei wie folgt angezeigt, wenn sie mit einer Protokollabfrage abgerufen werden.
Erstellen einer benutzerdefinierten Tabelle
Wenn die Zieltabelle noch nicht vorhanden ist, müssen Sie sie vor dem Erstellen des DCR erstellen. Siehe Erstellen einer benutzerdefinierten Tabelle für verschiedene Methoden zum Erstellen einer Tabelle.
Sie können z. B. das folgende PowerShell-Skript verwenden, um eine benutzerdefinierte Tabelle zu erstellen, um die Daten aus einem benutzerdefinierten Textprotokoll zu empfangen. In diesem Beispiel werden auch die optionalen Spalten hinzugefügt.
$tableParams = @'
{
"properties": {
"schema": {
"name": "{TableName}_CL",
"columns": [
{
"name": "TimeGenerated",
"type": "DateTime"
},
{
"name": "Computer",
"type": "string"
},
{
"name": "FilePath",
"type": "string"
},
{
"name": "RawData",
"type": "string"
}
]
}
}
}
'@
Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/MyTable_CL?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
Mehrzeilige Protokolldateien
Einige Protokolldateien können Einträge enthalten, die mehrere Zeilen umfassen. Wenn jeder Protokolleintrag mit einem Datum beginnt, kann dieses Datum als Trennzeichen verwendet werden, um jeden Protokolleintrag zu definieren. In diesem Fall werden die zusätzlichen Zeilen in der RawData Spalte miteinander verknüpft.
Die Textdatei im vorherigen Beispiel kann z. B. wie folgt formatiert werden:
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.
Wenn das Zeitstempelformat YYYY-MM-DD HH:MM:SS im DCR verwendet wird, werden die Daten auf die gleiche Weise wie im vorherigen Beispiel gesammelt. Die zusätzlichen Zeilen würden in der RawData Spalte enthalten sein. Wenn ein weiteres Zeitstempelformat verwendet wurde, das nicht mit dem Datum im Protokolleintrag übereinstimmt, werden alle Einträge als zwei separate Datensätze erfasst.
Durch Trennzeichen getrennte Protokolldateien
Viele Textdateien enthalten Einträge mit Spalten, die durch ein Zeichen wie ein Komma getrennt sind. Anstatt den gesamten Eintrag an die RawData Spalte zu senden, können Sie die Daten in separate Spalten analysieren, sodass jede in der Zieltabelle aufgefüllt werden kann. Verwenden Sie eine Transformation mit der geteilten Funktion , um diese Analyse durchzuführen.
Die oben gezeigte Beispieltextdatei ist durch Trennzeichen getrennt, und die Felder können wie folgt beschrieben werden: Time, , Code, , Severity, Moduleund Message. Um diese Daten in separate Spalten zu analysieren, fügen Sie die einzelnen Spalten zur Zieltabelle hinzu, und fügen Sie der DCR die folgende Transformation hinzu.
Von Bedeutung
Bevor Sie diese Transformation zum DCR hinzufügen, müssen Sie diese Spalten zur Zieltabelle hinzufügen. Sie können das obige PowerShell-Skript ändern, um die zusätzlichen Spalten einzuschließen, wenn die Tabelle erstellt wird. Oder verwenden Sie das Azure-Portal, wie unter Hinzufügen oder Löschen einer benutzerdefinierten Spalte beschrieben, um die Spalten zu einer vorhandenen Tabelle hinzuzufügen.
Zu den wichtigen Details der Transformationsabfrage gehören die folgenden:
- Die Abfrage gibt Eigenschaften aus, die jeweils einem Spaltennamen in der Zieltabelle entsprechen.
- In diesem Beispiel wird die
TimeEigenschaft in der Protokolldatei umbenannt, sodass dieser Wert fürTimeGeneratedverwendet wird. Wenn dies nicht angegeben wurde, wirdTimeGeneratedmit der Aufnahmezeit befüllt. - Da
splitdynamische Daten zurückgibt, müssen Sie Funktionen wietostringundtointverwenden, um die Daten in den richtigen Skalartyp zu konvertieren.
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])
Wenn Sie diese Daten mit einer Protokollabfrage abrufen, werden die folgenden Ergebnisse zurückgegeben.
Problembehandlung
Führen Sie die folgenden Schritte aus, wenn Sie nicht die erwarteten Daten aus dem Textprotokoll sammeln.
- Vergewissern Sie sich, dass Daten in die erfasste Protokolldatei geschrieben werden.
- Stellen Sie sicher, dass der Name und Speicherort der Protokolldatei dem von Ihnen angegebenen Dateimuster entspricht.
- Überprüfen Sie, ob das Schema der Zieltabelle dem eingehenden Datenstrom entspricht oder Sie über eine Transformation verfügen, die den eingehenden Datenstrom in das richtige Schema konvertiert.
- Unter Vorgang überprüfen können Sie überprüfen, ob der Agent funktioniert und Daten empfangen werden.
Nächste Schritte
- Weitere Informationen zum Azure Monitor-Agent.
- Informieren Sie sich über die Datensammlungsregeln.