Logstash 中的 ECS

编辑

Elastic 通用架构 (Elastic Common Schema (ECS)) 是一个开源规范,由 Elastic 用户社区支持开发。ECS 定义了一组用于存储事件数据的通用字段,例如 Elasticsearch 中的日志和指标。借助 ECS,用户可以规范化事件数据,以便更好地分析、可视化和关联事件中表示的数据。

ECS 兼容性

编辑

许多插件实现了 ECS 兼容模式,这会导致它们以与 Elastic 通用架构 (ECS) 兼容的方式生成和处理事件。

任何支持此模式的插件也将具有一个 ecs_compatibility 选项,允许您配置单个插件实例应在其中运行的模式。如果未为单个插件指定,则将观察管道的 pipeline.ecs_compatibility 设置。这允许您配置插件以使用特定版本的 ECS 或使用其旧版非 ECS 行为。

ECS 兼容模式不会阻止您以与 ECS 冲突的方式显式配置插件。相反,它们确保 *隐式* 配置避免冲突。

配置 ECS

编辑

在 Logstash 8 中,默认情况下所有插件都在 ECS 兼容 v8 模式下运行,但您可以在插件、管道或系统级别选择退出以保持旧版行为。如果您有非常复杂的管道是在 ECS 之前定义的,这可能很有帮助,以便您可以独立于 Logstash 8.x 升级来升级它们或避免升级它们。

特定插件实例
编辑

使用插件的 ecs_compatibility 选项覆盖插件实例上的默认值。

例如,如果您希望 GeoIP 过滤器的特定实例在没有 ECS 兼容性的情况下运行,则可以在管道中调整其定义,而不会影响任何其他插件实例。

filter {
  geoip {
    source => "[host][ip]"
    ecs_compatibility => disabled
  }
}

或者,如果您有一个带有 CEF 编解码器的 UDP 输入,并且希望两者都使用 ECS 模式,同时仍然运行 Logstash 7,则可以调整它们的定义以指定要使用的 ECS 主版本。

input {
  udp {
    port => 1234
    ecs_compatibility => v8
    codec => cef {
      ecs_compatibility => v8
    }
  }
}
给定管道中的所有插件
编辑

如果您希望为管道中 *所有* 插件提供 ecs_compatibility 的特定默认值,则可以使用 config/pipelines.yml 或中央管理中的管道定义中的 pipeline.ecs_compatibility 设置。除非被特定插件实例覆盖,否则将使用此设置。如果未为单个管道指定,则将使用全局值。

例如,为管道设置 pipeline.ecs_compatibility: disabled 会 *锁定* 该管道在 Logstash 8 之前的行为。

- pipeline.id: my-legacy-pipeline
  path.config: "/etc/path/to/legacy-pipeline.config"
  pipeline.ecs_compatibility: disabled
- pipeline.id: my-ecs-pipeline
  path.config: "/etc/path/to/ecs-pipeline.config"
  pipeline.ecs_compatibility: v8
所有管道中的所有插件
编辑

类似地,您可以通过在 config/logstash.yml 中设置 pipeline.ecs_compatibility 值来设置整个 Logstash 进程的默认值。

pipeline.ecs_compatibility: disabled