Logstash 中的 ECS
编辑Logstash 中的 ECS
编辑Elastic Common Schema (ECS) 是一个开源规范,由 Elastic 用户社区的支持下开发。ECS 定义了一组用于在 Elasticsearch 中存储事件数据(如日志和指标)的通用字段。借助 ECS,用户可以规范化事件数据,以便更好地分析、可视化和关联事件中表示的数据。
ECS 兼容性
编辑许多插件实现了 ECS 兼容模式,这使得它们能够以与 Elastic Common Schema (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
或 Central Management 中管道定义中的 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