多行编码插件
编辑多行编码插件
编辑- 插件版本: v3.1.2
- 发布日期: 2024-04-25
- 变更日志
其他版本请参见 版本化插件文档。
获取帮助
编辑如有关于插件的问题,请在 Discuss 论坛中发起主题讨论。如发现错误或有功能请求,请在 Github 中提交问题。有关 Elastic 支持的插件列表,请查阅 Elastic 支持矩阵。
描述
编辑多行编码插件会将多行消息折叠并合并到单个事件中。
如果您正在使用支持多个主机的 Logstash 输入插件,例如 beats 输入插件,则不应使用多行编码插件来处理多行事件。这样做可能会导致流混合和事件数据损坏。在这种情况下,您需要在将事件数据发送到 Logstash 之前处理多行事件。
此编码插件的最初目标是允许将来自文件的多个消息合并到单个事件中。例如,将 Java 异常和堆栈跟踪消息合并到单个事件中。
配置如下所示
input { stdin { codec => multiline { pattern => "pattern, a regexp" negate => "true" or "false" what => "previous" or "next" } } }
pattern
应匹配您认为是该字段属于多行事件的指示符。
what
必须是 previous
或 next
,并指示与多行事件的关系。
negate
可以是 true
或 false
(默认为 false
)。如果为 true
,则不匹配模式的消息将构成多行过滤器匹配,并将应用 what
。(反之亦然)
例如,Java 堆栈跟踪是多行的,通常以最左侧的消息开头,后续每一行都缩进。请执行以下操作
input { stdin { codec => multiline { pattern => "^\s" what => "previous" } } }
这意味着任何以空格开头的行都属于上一行。
另一个示例是将不以日期开头的行合并到上一行。
input { file { path => "/var/log/someapp.log" codec => multiline { # Grok pattern names are valid! :) pattern => "^%{TIMESTAMP_ISO8601} " negate => true what => "previous" } } }
这意味着任何不以时间戳开头的行都应与上一行合并。
另一个常见的示例是 C 语言的行延续(反斜杠)。以下是操作方法
input { stdin { codec => multiline { pattern => "\\$" what => "next" } } }
这意味着任何以反斜杠结尾的行都应与下一行组合。
多行编码插件配置选项
编辑设置 | 输入类型 | 必需 |
---|---|---|
否 |
||
字符串,其中之一为 |
否 |
|
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
是 |
||
否 |
||
字符串,其中之一为 |
是 |
auto_flush_interval
编辑- 值类型为 数字
- 此设置没有默认值。
当看到匹配的新行或在这么多秒内没有追加新数据时,多行的累积将转换为事件。没有默认值。如果未设置,则不进行自动刷新。单位:秒
charset
编辑- 值可以是以下任何一个:
ASCII-8BIT
、UTF-8
、US-ASCII
、Big5
、Big5-HKSCS
、Big5-UAO
、CP949
、Emacs-Mule
、EUC-JP
、EUC-KR
、EUC-TW
、GB2312
、GB18030
、GBK
、ISO-8859-1
、ISO-8859-2
、ISO-8859-3
、ISO-8859-4
、ISO-8859-5
、ISO-8859-6
、ISO-8859-7
、ISO-8859-8
、ISO-8859-9
、ISO-8859-10
、ISO-8859-11
、ISO-8859-13
、ISO-8859-14
、ISO-8859-15
、ISO-8859-16
、KOI8-R
、KOI8-U
、Shift_JIS
、UTF-16BE
、UTF-16LE
、UTF-32BE
、UTF-32LE
、Windows-31J
、Windows-1250
、Windows-1251
、Windows-1252
、IBM437
、IBM737
、IBM775
、CP850
、IBM852
、CP852
、IBM855
、CP855
、IBM857
、IBM860
、IBM861
、IBM862
、IBM863
、IBM864
、IBM865
、IBM866
、IBM869
、Windows-1258
、GB1988
、macCentEuro
、macCroatian
、macCyrillic
、macGreek
、macIceland
、macRoman
、macRomania
、macThai
、macTurkish
、macUkraine
、CP950
、CP951
、IBM037
、stateless-ISO-2022-JP
、eucJP-ms
、CP51932
、EUC-JIS-2004
、GB12345
、ISO-2022-JP
、ISO-2022-JP-2
、CP50220
、CP50221
、Windows-1256
、Windows-1253
、Windows-1255
、Windows-1254
、TIS-620
、Windows-874
、Windows-1257
、MacJapanese
、UTF-7
、UTF8-MAC
、UTF-16
、UTF-32
、UTF8-DoCoMo
、SJIS-DoCoMo
、UTF8-KDDI
、SJIS-KDDI
、ISO-2022-JP-KDDI
、stateless-ISO-2022-JP-KDDI
、UTF8-SoftBank
、SJIS-SoftBank
、BINARY
、CP437
、CP737
、CP775
、IBM850
、CP857
、CP860
、CP861
、CP862
、CP863
、CP864
、CP865
、CP866
、CP869
、CP1258
、Big5-HKSCS:2008
、ebcdic-cp-us
、eucJP
、euc-jp-ms
、EUC-JISX0213
、eucKR
、eucTW
、EUC-CN
、eucCN
、CP936
、ISO2022-JP
、ISO2022-JP2
、ISO8859-1
、ISO8859-2
、ISO8859-3
、ISO8859-4
、ISO8859-5
、ISO8859-6
、CP1256
、ISO8859-7
、CP1253
、ISO8859-8
、CP1255
、ISO8859-9
、CP1254
、ISO8859-10
、ISO8859-11
、CP874
、ISO8859-13
、CP1257
、ISO8859-14
、ISO8859-15
、ISO8859-16
、CP878
、MacJapan
、ASCII
、ANSI_X3.4-1968
、646
、CP65000
、CP65001
、UTF-8-MAC
、UTF-8-HFS
、UCS-2BE
、UCS-4BE
、UCS-4LE
、CP932
、csWindows31J
、SJIS
、PCK
、CP1250
、CP1251
、CP1252
、external
、locale
- 默认值为
"UTF-8"
此输入中使用的字符编码。例如 UTF-8
和 cp1252
。
如果您的日志文件为 Latin-1
(也称为 cp1252
)或其他非 UTF-8
字符集,则此设置非常有用。
由于 JSON 本身就是 UTF-8
,因此这仅影响“纯文本”格式的日志。
ecs_compatibility
编辑- 值类型为 字符串
-
支持的值为
-
disabled
:插件仅设置message
字段 -
v1
、v8
:Elastic Common Schema 兼容行为(也添加了[event][original]
)
-
-
默认值取决于正在运行的 Logstash 版本
- 当 Logstash 提供
pipeline.ecs_compatibility
设置时,其值将用作默认值 - 否则,默认值为
disabled
- 当 Logstash 提供
控制此插件与 Elastic Common Schema (ECS) 的兼容性。
max_bytes
编辑- 值类型为 字节
- 默认值为
"10 MiB"
如果事件边界未正确定义,事件的累积可能会导致 Logstash 因内存不足而退出。此设置确保在达到一定字节数后刷新多行事件,它与 max_lines 结合使用。
max_lines
编辑- 值类型为 数字
- 默认值为
500
如果事件边界未正确定义,事件的累积可能会导致 Logstash 因内存不足而退出。此设置确保在达到一定行数后刷新多行事件,它与 max_bytes 结合使用。