Rabbitmq 输入插件

编辑

其他版本,请参见 版本化插件文档

获取帮助

编辑

如有关于插件的问题,请在 Discuss 论坛中发起主题讨论。如发现错误或有功能请求,请在 Github 上提交 issue。Elastic 支持的插件列表,请参考 Elastic 支持矩阵

描述

编辑

RabbitMQ 队列中拉取事件。

默认设置将创建一个完全临时的队列,并默认侦听所有消息。如果您需要持久性或任何其他高级设置,请设置相应的选项。

此插件使用 March Hare 库与 RabbitMQ 服务器进行交互。大多数配置选项直接映射到标准 RabbitMQ 和 AMQP 概念。AMQP 0-9-1 参考指南 和 RabbitMQ 文档的其他部分有助于更深入的理解。

如果启用了 @metadata_enabled 设置,则接收到的消息属性将存储在 [@metadata][rabbitmq_properties] 字段中。请注意,存储元数据可能会降低性能。以下属性可能可用(在大多数情况下取决于发送者是否设置了它们):

  • app-id
  • cluster-id
  • consumer-tag
  • content-encoding
  • content-type
  • correlation-id
  • delivery-mode
  • exchange
  • expiration
  • message-id
  • priority
  • redeliver
  • reply-to
  • routing-key
  • timestamp
  • type
  • user-id

例如,要将 RabbitMQ 消息的时间戳属性放入 Logstash 事件的 @timestamp 字段中,请使用日期过滤器解析 [@metadata][rabbitmq_properties][timestamp] 字段。

    filter {
      if [@metadata][rabbitmq_properties][timestamp] {
        date {
          match => ["[@metadata][rabbitmq_properties][timestamp]", "UNIX"]
        }
      }
    }

此外,任何消息头都将保存在 [@metadata][rabbitmq_headers] 字段中。

Rabbitmq 输入配置选项

编辑

此插件支持以下配置选项以及稍后描述的 常用选项

另请参见 常用选项,了解所有输入插件支持的选项列表。

 

启用消息确认。使用确认,如果 Logstash 关闭,则由 Logstash 获取但尚未发送到 Logstash 管道的消息将由服务器重新排队。但是,确认会影响消息吞吐量。

这只会每 prefetch_count 条消息发送一次确认。批量处理在这里提供了性能提升。

arguments

编辑
  • 值类型为 数组
  • 默认值为 {}

作为数组的可选队列参数。

相关的 RabbitMQ 文档指南

auto_delete

编辑

当最后一个消费者断开连接时,是否应删除代理上的队列?如果要使队列保留在代理上,直到有消费者来消费它们为止,请将此选项设置为 false

automatic_recovery

编辑

将其设置为 自动从断开的连接中恢复。您几乎肯定不想覆盖此设置!

connect_retry_interval

编辑
  • 值类型为 数字
  • 默认值为 1

重试连接之前等待的时间(秒)

connection_timeout

编辑
  • 值类型为 数字
  • 此设置没有默认值。

以毫秒为单位的默认连接超时时间。如果未指定,则超时时间为无限大。

durable

编辑

此队列是否持久?(又名;它应该在代理重启后继续存在吗?) 如果直接从队列中消费,则必须将此值设置为与现有队列设置匹配,否则由于参数不一致错误,连接将失败。

exchange

编辑
  • 值类型为 字符串
  • 此设置没有默认值。

将队列绑定到的交换机的名称。也请指定 exchange_type 以声明交换机(如果它不存在)。

exchange_type

编辑
  • 值类型为 字符串
  • 此设置没有默认值。

要绑定到的交换机的类型。指定此项将导致此插件声明交换机(如果它不存在)。

exclusive

编辑

队列是否独占?独占队列只能由声明它们的连接使用,并在连接关闭时(例如,由于 Logstash 重启)被删除。

heartbeat

编辑
  • 值类型为 数字
  • 此设置没有默认值。

心跳超时(秒)。如果未指定,则使用 60 秒的心跳超时。

host

编辑
  • 这是必需的设置。
  • 值类型为 字符串
  • 此设置没有默认值。

rabbitmq 输入/输出的常用功能 RabbitMQ 服务器地址(s) host 可以是单个主机,也可以是主机列表,即 host ⇒ "localhost" 或 host ⇒ ["host01", "host02"]

如果在初始连接和任何后续的恢复尝试中提供多个主机,则会随机选择并连接到主机。请注意,一次只有一个主机连接处于活动状态。

  • 值类型为 字符串
  • 默认值为 "logstash"

将队列绑定到交换机时要使用的路由键。这仅与直接交换机或主题交换机相关。

  • 扇出交换机忽略路由键。
  • 直接交换机上无效的通配符。

metadata_enabled

编辑
  • 值类型为 字符串
  • 接受的值为:

    • none:不添加元数据
    • basic:添加标题和属性
    • extended:添加标题、属性和原始有效负载
    • falsenone 的已弃用别名
    • truebasic 的已弃用别名
  • 默认值为 none

启用有关 RabbitMQ 主题的元数据,将其添加到事件的 @metadata 字段中,以便在管道处理期间可用。通常,大多数输出插件和编解码器不包含 @metadata 字段。这可能会影响内存使用和性能。

元数据映射
编辑
类别 位置 type

headers

[@metadata][rabbitmq_headers]

键/值映射

properties

[@metadata][rabbitmq_properties]

键/值映射

原始有效负载

[@metadata][rabbitmq_payload]

字节序列

passive

编辑

如果为 true,则队列将被被动声明,这意味着它必须已存在于服务器上。要使 Logstash 创建必要的队列,请将此选项保留为 false。如果主动声明一个已经存在的队列,则此插件的队列选项(持久性等)必须与现有队列的选项匹配。

password

编辑
  • 值类型为 密码
  • 默认值为 "guest"

RabbitMQ 密码

port

编辑
  • 值类型为 数字
  • 默认值为 5672

要连接的 RabbitMQ 端口

prefetch_count

编辑
  • 值类型为 数字
  • 默认值为 256

预取计数。如果使用 ack 选项启用确认,则指定允许的未确认消息的未完成数量。

queue

编辑

要从每条消息中提取并存储在 @metadata 字段中的属性。

从技术上讲,exchange、redeliver 和 routing-key 属性属于信封而不是消息,但我们在这里忽略了这种区别。但是,即使 header 表从技术上讲是一个消息属性,我们也通过 get_headers 单独提取 header。

冻结所有字符串,以便修改事件 @metadata 字段的代码无法修改它们。

如果更新此列表,请记住也要更新上面的文档。此插件的默认编解码器为 JSON。但是,您可以根据您的特定需求覆盖它。Logstash 将从中消费事件的队列名称。如果留空,将创建一个名称随机选择的临时队列。

  • 值类型为 布尔值
  • 此设置没有默认值。

启用或禁用 SSL。请注意,默认情况下远程证书验证是关闭的。如果您需要证书验证,请指定 ssl_certificate_path 和 ssl_certificate_password

ssl_certificate_password

编辑
  • 值类型为 字符串
  • 此设置没有默认值。

在 ssl_certificate_path 中指定的加密 PKCS12 (.p12) 证书文件的密码

ssl_certificate_path

编辑
  • 值类型为 路径
  • 此设置没有默认值。

用于验证远程主机的 PKCS12 (.p12) 格式的 SSL 证书的路径

ssl_version

编辑
  • 值类型为 字符串
  • 默认值为 "TLSv1.2"

要使用的 SSL 协议版本。

subscription_retry_interval_seconds

编辑
  • 这是必需的设置。
  • 值类型为 数字
  • 默认值为 5

订阅请求失败后等待重试的时间(秒)。如果服务器断开连接然后重新连接,则订阅可能会失败。

threads

编辑
  • 值类型为 数字
  • 默认值为 1

user

编辑
  • 值类型为 字符串
  • 默认值为 "guest"

RabbitMQ 用户名

vhost

编辑

要使用的虚拟主机 (vhost)。如果您不知道这是什么,请保留默认值。除默认虚拟主机 (“/”) 外,虚拟主机的名称不应以正斜杠开头。

常用选项

编辑

所有输入插件都支持这些配置选项

设置 输入类型 必需

add_field

hash

codec

codec

enable_metric

布尔值

id

字符串

tags

数组

type

字符串

add_field

编辑

向事件添加字段

codec

编辑

用于输入数据的编解码器。输入编解码器是在数据进入输入之前对其进行解码的一种便捷方法,无需在 Logstash 管道中使用单独的过滤器。

enable_metric

编辑

禁用或启用此特定插件实例的指标日志记录,默认情况下我们会记录所有可能的指标,但您可以禁用特定插件的指标收集。

  • 值类型为 字符串
  • 此设置没有默认值。

向插件配置添加唯一的 ID。如果没有指定 ID,Logstash 将生成一个。强烈建议您在配置中设置此 ID。当您有两个或多个相同类型的插件时,这尤其有用,例如,如果您有两个 rabbitmq 输入。在这种情况下,添加命名 ID 将有助于在使用监控 API 时监控 Logstash。

input {
  rabbitmq {
    id => "my_plugin_id"
  }
}

id 字段中的变量替换仅支持环境变量,不支持使用密钥存储中的值。

tags

编辑
  • 值类型为 数组
  • 此设置没有默认值。

向您的事件添加任意数量的标签。

这可以帮助以后的处理。

type

编辑
  • 值类型为 字符串
  • 此设置没有默认值。

向此输入处理的所有事件添加 type 字段。

类型主要用于过滤器激活。

类型存储为事件本身的一部分,因此您也可以使用类型在 Kibana 中搜索它。

如果您尝试在一个已经拥有类型的事件上设置类型(例如,当您从发送方将事件发送到索引器时),那么新的输入将不会覆盖现有的类型。即使发送到另一个 Logstash 服务器,在发送方设置的类型也会一直保留在该事件中。