处理细节

编辑

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

这是一个新章节。我们仍在完善中。

事件排序

编辑

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

  • 在过滤器处理过程中,批次内的事件可能会重新排序。
  • 当一个或多个批次处理速度快于其他批次时,正在处理的批次可能会重新排序。

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

pipeline.ordered 设置
编辑

pipeline.ordered 设置位于 logstash.yml 中,可让您更好地控制单工作线程管道中的事件排序。

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

唯一字符串的数组