您可以自定义 JSON 分析程序配置,以便有选择地分析 JSON 日志。
您可以为 FileLog 和 WinLog 收集器配置逗号分隔值 (CSV) 分析程序。仅使用 Log Insight 代理 JSON 分析程序分析有效的 JSON 日志。无效的 JSON 日志分析程序将返回空结果。
对于默认 JSON 分析程序配置,Log Insight 代理将提取 JSON 日志中的所有字段。在 JSON 日志将自身表示为复杂 JSON 对象(也可能包含 JSON 对象)时,分析程序使用下划线 (_) 字符连接嵌套和更高层 JSON 对象的名称。这会为相应元素生成内容丰富的字段名称。如果 JSON 日志还包含数组,成员元素名称将包含数组名称,后跟数组中的元素索引。
JSON 分析程序还提供一个称为 fields 的特定选项。
JSON 分析程序“fields”选项
您可以使用
fields 选项指定在配置中分析的字段。该选项的用途是启用选择性 JSON 日志分析。
注: 对于选择性分析,您必须指定所需的 JSON 元素的路径。不同层中的 JSON 对象必须使用点 (.)字符隔开。
以下列表提供一些示例配置,以使您能够根据需要有选择地分析 JSON 日志。
- 要分析 JSON 日志中的多个元素,所需的元素必须作为 fields 选项的参数列出并以逗号分隔。请参见以下示例:
{"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"}
- 要仅分析最里面的 JSON 对象(如 timestamp、log_severity 和 log_message),请参见以下示例。该示例配置生成以下字段结果:operation_timestamp ="2018-11-22T15:28:58.094000" and operation_log_severity ="info"
[parser|json_parser] base_parser=json fields=operation.timestamp,operation.log_severity, operation.log_message
- 要分析整个 JSON 对象,请包含对象路径,后跟一个星号 (*) 字符。
{"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"}
- 要仅分析 operation 对象,请使用以下配置:
[parser|json_parser] base_parser=json fields=operation.*
- 如果 JSON 日志包含数组,并且您希望仅分析数组的特定元素,请在配置中使用数组的元素索引,如以下示例配置中所示:
{ "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" } } ] } - 要仅分析同一日志中的 key 和 size 元素,请使用以下配置生成以下字段:
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
- 要分析所有数组元素的 key 字段,请使用以下配置:
[parser|json_parser] base_parser=json fields=Records.#.object.key
- 要分析所有字段,请使用带有星号 (*) 字符的 fields 选项。该配置相当于默认 JSON 分析程序配置。
[parser|json_parser] base_parser=json fields=*