处理细节编辑

了解 Logstash 的工作原理以及组件之间的相互关系,可以帮助您在设置或调整 Logstash 环境时做出更好的决策。本节旨在提升概念,以帮助您达到这种知识水平。

这是一个新部分。我们仍在完善它。

事件排序编辑

根据设计和默认设置,Logstash 不保证事件顺序。重新排序可能发生在两个地方

  • 批次中的事件在过滤器处理期间可能会被重新排序。
  • 当一个或多个批次比其他批次处理得更快时,正在处理的批次可能会被重新排序。

当维护事件顺序很重要时,请使用单个工作进程并将 pipeline.ordered ⇒ true。这种方法确保批次按顺序计算,并且事件在批次中保持其顺序。

pipeline.ordered 设置编辑

logstash.yml 中的 pipeline.ordered 设置使您可以更好地控制单个工作进程管道的事件排序。

auto 如果 pipeline.workers 设置也设置为 1,则会自动启用排序。 true 将在管道上强制排序,并防止 logstash 在有多个工作进程的情况下启动。 false 将禁用保留顺序所需的处理。排序将无法保证,但您可以节省保留顺序所需的处理成本。

Java 管道初始化时间编辑

Java 管道初始化时间出现在 INFO 级别的启动日志中。初始化时间是编译管道配置并为所有工作进程实例化已编译执行所需的时间。

Logstash 事件中的保留字段编辑

Logstash 事件中的一些字段是保留的,或者需要遵守一定的形状。使用这些字段可能会导致运行时异常,因为事件 API 或插件遇到不兼容的值。

@metadata

键值映射。

基于 Ruby 的插件 API:值是 org.jruby.RubyHash

基于 Java 的插件 API:值是 org.logstash.ConvertedMap

在序列化形式(例如 JSON)中:键值映射,其中键必须是字符串,而值不受限于特定类型。

@timestamp

一个对象,保存特定时刻的表示。

基于 Ruby 的插件 API:值是 org.jruby.RubyTime

基于 Java 的插件 API:值是 java.time.Instant

在序列化形式(例如 JSON)中或使用 Event#set 设置时:ISO8601 兼容的字符串值是可以接受的。

@version

一个字符串,保存一个整数值。

tags

一个包含不同字符串的数组