可以为生成命名字段的所有分析程序配置常见选项。

字段名称的保留字

字段名称受到一定的限制。以下名称是保留名称,因此不能用作字段名称。

  • event_type
  • hostname
  • source
  • text

常见分析程序选项

下表中的选项可与所有受支持的分析程序一起使用。

选项 描述
base_parser

此自定义分析程序扩展的基本分析程序的名称。它可以是内置分析程序名称或其他自定义分析程序名称。此配置键是必备键。

field_decoder
指定为 JSON 字符串的嵌套分析程序。键是嵌套分析程序要应用到的字段的名称,值是用于该字段的分析程序的名称。每个嵌套分析程序将应用于由基本分析程序解码的相应字段。字段的值是复杂值(例如时间戳)时,字段解码器很有用。 field_decoder 选项还支持将更复杂的 JSON 对象作为参数,以允许您在应用嵌套分析程序之前检查的特定字段值中使用条件。
注: 有关用法和条件配置的详细信息,请参见下面的“field_decoder 选项的条件配置”部分。
field_rename

重命名提取的字段。使用一个 JSON 字符串,其中键是字段的原始名称,值是字段所需的新名称。field_decoder 选项将始终在 field_rename 之前应用。这些选项在 INI 文件中的顺序并不重要。为明确起见,请先指定 field_decoder

next_parser

要运行的下一个分析程序的名称。允许对同一输入按顺序运行多个分析程序。

注: 分析程序处理由 next_parser关键字定义的所有后续分析程序,并且可能会替换由上一个分析程序提取的字段值。
exclude_fields

要在将事件传送到服务器之前从其中删除的以分号分隔的字段名称列表。在执行事件筛选之前移除字段名称,从而使解析期间排除的字段无法在筛选条件中使用。

debug

用于启用特定分析程序的调试的 Yes 或 No 选项。启用调试后,分析程序将执行它接收的输入、它执行的操作以及它产生的结果的详细日志记录。此选项按部分应用,即仅应用于特定部分定义的分析程序。

对于分析程序,调试的默认值是 debug=no

field_decoder 选项的条件配置

对于具有相同通用格式但存在与特定字段值相关的明显差异的日志(例如,具有 infoerror 严重性的日志),您可以使用条件嵌套分析程序避免将不需要的分析程序应用于已分析的日志的相应字段。

例如,使用以下日志:
2019-03-29T11:00:54.858Z host-FQDN Hostd: error hostd[2099230] [Originator@6876 sub=Default opID=1983bdbe-c1-800f user=admin.user] AdapterServer caught exception: SSLExceptionE(SSL Exception: error:140000DB:SSL routines:SSL routines:short read: The connection was closed by the remote end during handshake.)
2019-03-29T11:00:55.477Z host-FQDN Hostd: info hostd[6D620B70] ['commonhost' opID=5759adcc-cf] [transportConnector] -- FINISH task-internal-5726666 -- -- Completed connection restart -- 

您可以使用以下配置对其进行分析:

[parser|clf_parser]
base_parser=clf
format=%t %{generator_host}i %i: %{log_severity}i %i[%{thread_id}i]%M
field_decoder={"log_message" : {"log_severity" : {"error" : "error_parser", "info" : "info_parser"}}}
exclude_fields=log_message

[parser|info_parser]
base_parser=clf
format=[%{common_info}i] [%{process}i] %M
field_rename={"log_message" : "info_log_content"}

[parser|error_parser]
base_parser=clfformat=[%{common_info}i] %{exception_handler}i %i:%{exception_type}i:%i:%{error_id}i:%i:%i:%i: %M
field_rename={"log_message" : "exception_content"}

该配置生成以下结果:

timestamp=2019-03-29T11:00:54.858000 generator_host="host-FQDN" log_severity="error" thread_id="2099230" common_info=Originator@6876 sub=Default opID=1983bdbe-c1-800f user=admin.user exception_handler="AdapterServer" exception_type="SSLExceptionE(SSL Exception" error_id="140000DB" exception_content="The connection was closed by the remote end during handshake.)"

此外,还会为 info 日志分析以下字段:

timestamp=2019-03-29T11:00:55.477000 generator_host="host-FQDN" log_severity="info" thread_id="6D620B70" log_message="['commonhost' opID=5759adcc-cf] [transportConnector] -- FINISH task-internal-5726666 -- -- Completed connection restart --" common_info="'commonhost' opID=5759adcc-cf" process="transportConnector" info_log_content="-- FINISH task-internal-5726666 -- -- Completed connection restart --"