- Logstash 参考文档其他版本
- Logstash 简介
- Logstash 入门
- Logstash 的工作原理
- 设置和运行 Logstash
- 升级 Logstash
- 创建 Logstash 管道
- 保护您的连接
- 高级 Logstash 配置
- Logstash 到 Logstash 通信
- 管理 Logstash
- 将 Logstash 与 Elastic Integrations 一起使用
- 使用 Logstash 模块
- 使用 Filebeat 模块
- 使用 Winlogbeat 模块
- 队列和数据弹性
- 转换数据
- 部署和扩展 Logstash
- 管理 GeoIP 数据库
- 性能调优
- 使用 Elastic Agent 监控 Logstash
- 监控 Logstash(旧版)
- 使用 API 监控 Logstash
- 使用插件
- 集成插件
- 输入插件
- azure_event_hubs
- beats
- cloudwatch
- couchdb_changes
- dead_letter_queue
- elastic_agent
- elastic_serverless_forwarder
- elasticsearch
- exec
- file
- ganglia
- gelf
- generator
- github
- google_cloud_storage
- google_pubsub
- graphite
- heartbeat
- http
- http_poller
- imap
- irc
- java_generator
- java_stdin
- jdbc
- jms
- jmx
- kafka
- kinesis
- logstash
- log4j
- lumberjack
- meetup
- pipe
- puppet_facter
- rabbitmq
- redis
- relp
- rss
- s3
- s3-sns-sqs
- salesforce
- snmp
- snmptrap
- sqlite
- sqs
- stdin
- stomp
- syslog
- tcp
- udp
- unix
- varnishlog
- websocket
- wmi
- xmpp
- 输出插件
- boundary
- circonus
- cloudwatch
- csv
- datadog
- datadog_metrics
- dynatrace
- elastic_app_search
- elastic_workplace_search
- elasticsearch
- exec
- file
- ganglia
- gelf
- google_bigquery
- google_cloud_storage
- google_pubsub
- graphite
- graphtastic
- http
- influxdb
- irc
- java_stdout
- juggernaut
- kafka
- librato
- logstash
- loggly
- lumberjack
- metriccatcher
- mongodb
- nagios
- nagios_nsca
- opentsdb
- pagerduty
- pipe
- rabbitmq
- redis
- redmine
- riak
- riemann
- s3
- sink
- sns
- solr_http
- sqs
- statsd
- stdout
- stomp
- syslog
- tcp
- timber
- udp
- webhdfs
- websocket
- xmpp
- zabbix
- 过滤器插件
- age
- aggregate
- alter
- bytes
- cidr
- cipher
- clone
- csv
- date
- de_dot
- dissect
- dns
- drop
- elapsed
- elastic_integration
- elasticsearch
- environment
- extractnumbers
- fingerprint
- geoip
- grok
- http
- i18n
- java_uuid
- jdbc_static
- jdbc_streaming
- json
- json_encode
- kv
- memcached
- metricize
- metrics
- mutate
- prune
- range
- ruby
- sleep
- split
- syslog_pri
- threats_classifier
- throttle
- tld
- translate
- truncate
- urldecode
- useragent
- uuid
- wurfl_device_detection
- xml
- 编解码器插件
- 技巧和最佳实践
- 故障排除
- 为 Logstash 做贡献
- 贡献 Java 插件
- 重大变更
- 发行说明
- Logstash 8.17.0 发行说明
- Logstash 8.16.1 发行说明
- Logstash 8.16.0 发行说明
- Logstash 8.15.4 发行说明
- Logstash 8.15.3 发行说明
- Logstash 8.15.2 发行说明
- Logstash 8.15.1 发行说明
- Logstash 8.15.0 发行说明
- Logstash 8.14.3 发行说明
- Logstash 8.14.2 发行说明
- Logstash 8.14.1 发行说明
- Logstash 8.14.0 发行说明
- Logstash 8.13.4 发行说明
- Logstash 8.13.3 发行说明
- Logstash 8.13.2 发行说明
- Logstash 8.13.1 发行说明
- Logstash 8.13.0 发行说明
- Logstash 8.12.2 发行说明
- Logstash 8.12.1 发行说明
- Logstash 8.12.0 发行说明
- Logstash 8.11.4 发行说明
- Logstash 8.11.3 发行说明
- Logstash 8.11.2 发行说明
- Logstash 8.11.1 发行说明
- Logstash 8.11.0 发行说明
- Logstash 8.10.4 发行说明
- Logstash 8.10.3 发行说明
- Logstash 8.10.2 发行说明
- Logstash 8.10.1 发行说明
- Logstash 8.10.0 发行说明
- Logstash 8.9.2 发行说明
- Logstash 8.9.1 发行说明
- Logstash 8.9.0 发行说明
- Logstash 8.8.2 发行说明
- Logstash 8.8.1 发行说明
- Logstash 8.8.0 发行说明
- Logstash 8.7.1 发行说明
- Logstash 8.7.0 发行说明
- Logstash 8.6.2 发行说明
- Logstash 8.6.1 发行说明
- Logstash 8.6.0 发行说明
- Logstash 8.5.3 发行说明
- Logstash 8.5.2 发行说明
- Logstash 8.5.1 发行说明
- Logstash 8.5.0 发行说明
- Logstash 8.4.2 发行说明
- Logstash 8.4.1 发行说明
- Logstash 8.4.0 发行说明
- Logstash 8.3.3 发行说明
- Logstash 8.3.2 发行说明
- Logstash 8.3.1 发行说明
- Logstash 8.3.0 发行说明
- Logstash 8.2.3 发行说明
- Logstash 8.2.2 发行说明
- Logstash 8.2.1 发行说明
- Logstash 8.2.0 发行说明
- Logstash 8.1.3 发行说明
- Logstash 8.1.2 发行说明
- Logstash 8.1.1 发行说明
- Logstash 8.1.0 发行说明
- Logstash 8.0.1 发行说明
- Logstash 8.0.0 发行说明
- Logstash 8.0.0-rc2 发行说明
- Logstash 8.0.0-rc1 发行说明
- Logstash 8.0.0-beta1 发行说明
- Logstash 8.0.0-alpha2 发行说明
- Logstash 8.0.0-alpha1 发行说明
多行编解码器插件
编辑多行编解码器插件
编辑- 插件版本:v3.1.2
- 发布于:2024-04-25
- 变更日志
对于其他版本,请参阅版本化插件文档。
获取帮助
编辑有关插件的问题,请在Discuss论坛中开启一个主题。对于错误或功能请求,请在Github中开启一个 issue。有关 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 结合使用。
On this page