Sie können die Konfiguration des JSON-Parser anpassen, um das JSON-Protokoll selektiv zu analysieren.
Sie können Parser für das kommagetrennte Format (CSV) sowohl für FileLog- als auch für WinLog-Collectors konfigurieren. Nur gültige JSON-Protokolle werden mit dem JSON-Parser des Log Insight-Agenten analysiert. Ungültige JSON-Protokoll-Parser geben leere Ergebnisse zurück.
Bei der standardmäßigen Konfiguration des JSON-Parser werden alle Felder aus dem JSON-Protokoll vom Log Insight-Agenten extrahiert. Wenn sich das JSON-Protokoll als komplexes JSON-Objekt darstellt, das auch JSON-Objekte enthalten kann, verwendet der Parser einen Unterstrich (_), um Namen von verschachtelten und höherrangigen JSON-Objekten zu verketten. Dies erzeugt einen informativen Feldnamen für die entsprechenden Elemente. Wenn das JSON-Protokoll auch ein Array enthält, enthalten die Elementnamen des Elements den Array-Namen, gefolgt vom Index des Elements im Array.
Der JSON-Parser bietet auch eine bestimmte Option, die als fields bezeichnet wird.
JSON-Parser-Option „fields“
Die folgende Liste enthält Beispielkonfigurationen, mit denen Sie das JSON-Protokoll nach Bedarf selektiv analysieren können.
- Um mehr als ein Element aus dem JSON-Protokoll zu analysieren, müssen die gewünschten Elemente als Parameter für die Option fields angegeben und durch Kommas getrennt werden. Siehe Beispiel unten:
{"operation" : {"timestamp" : "2018-11-22T15:28:58.094000", "thread_id" : "0x05673", "initiator" : "connector", "log_severity" : "info", "log_message" : "Requested connection to the server."}, "operation_result" : "success"}
- Schauen Sie sich das folgende Beispiel an, um nur die innersten JSON-Objekte, z. B. timestamp, log_severity und log_message, zu analysieren. In dieser Beispielkonfiguration werden die folgenden Feldergebnisse generiert: operation_timestamp ="2018-11-22T15:28:58.094000" und operation_log_severity ="info"
[parser|json_parser] base_parser=json fields=operation.timestamp,operation.log_severity, operation.log_message
- Um das gesamte JSON-Objekt zu analysieren, schließen Sie den Pfad zu dem Objekt ein, gefolgt von einem Sternchen (*).
{"product_name" : "LI Agent", "operation" : {"timestamp" : "2018-11-22T15:28:58.094000", "thread_id" : "0x05673", "initiator" : "connector", "log_severity" : "info", "log_message" : "Requested connection to the server."}, "operation_result" : "success"}
- Um nur das Objekt operation zu analysieren, verwenden Sie die folgende Konfiguration:
[parser|json_parser] base_parser=json fields=operation.*
- Wenn das JSON-Protokoll ein Array enthält und Sie nur bestimmte Elemente des Arrays analysieren möchten, verwenden Sie den Elementindex des Arrays in der Konfiguration, wie in dieser Beispielkonfiguration gezeigt:
{ "Records": [{ "object":{ "key": "/events/mykey", "size": 502, "eTag": "091820398091823", "sequencer": "1123123" } }, { "object":{ "key": "/events/user_key", "size": 128, "eTag": "09182039000001", "sequencer": "1123231" } }, { "object":{ "key": "/events/admin_key", "size": 1024, "eTag": "09182039547241", "sequencer": "1123213" } } ] }
- Um nur die Elemente key und size aus demselben Protokoll zu analysieren, verwenden Sie die folgende Konfiguration, um die folgenden Felder zu erstellen:
records0_object_key="/events/mykey"
records0_object_size=502
records2_object_key="/events/admin_key"
records2_object_size=1024
[parser|json_parser] base_parser=json fields = Records0.object.key Records0.object.size, Records2.object.key, Records2.object.size
- Um das Feld key für alle Array-Elemente zu analysieren, verwenden Sie die folgende Konfiguration:
[parser|json_parser] base_parser=json fields=Records.#.object.key
- Um alle Felder zu analysieren, verwenden Sie die Option „fields“ mit einem Sternchen (*). Diese Konfiguration entspricht der standardmäßigen JSON-Parser-Konfiguration.
[parser|json_parser] base_parser=json fields=*