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 字段,请使用 date 过滤器解析 [@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

编辑

此队列是否持久?(又名;它是否应在代理重新启动后保留?)如果直接从队列中消费,则必须将此值设置为与现有队列设置匹配,否则连接将因不相等的 arg 错误而失败。

exchange

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

要将队列绑定到的交换机的名称。指定 exchange_type 以便在交换机不存在时声明它

exchange_type

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

要绑定到的交换机的类型。指定此值将导致此插件在交换机不存在时声明它。

exclusive

编辑

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

heartbeat

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

以秒为单位的心跳超时。如果未指定,则将使用 60 秒的心跳超时。

host

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

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

如果初始连接上提供了多个主机,并且任何后续恢复尝试的主机都是随机选择并连接的。请注意,一次只有一个主机连接处于活动状态。

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

将队列绑定到交换机时使用的路由密钥。这仅与 direct 或 topic 交换机相关。

  • 路由密钥在 fanout 交换机上被忽略。
  • 通配符在 direct 交换机上无效。

metadata_enabled

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

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

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

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

标头

[@metadata][rabbitmq_headers]

键/值映射

属性

[@metadata][rabbitmq_properties]

键/值映射

原始有效负载

[@metadata][rabbitmq_payload]

字节序列

passive

编辑

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

password

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

RabbitMQ 密码

port

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

RabbitMQ 连接端口

prefetch_count

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

预取计数。如果通过 ack 选项启用了确认,则指定允许的最大未确认消息数。

queue

编辑

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

从技术上讲,交换机、重新传递和路由密钥属性属于信封而不是消息,但我们在此忽略了这种区别。但是,我们通过 get_headers 单独提取标头,即使标头表在技术上是消息属性。

冻结所有字符串,以便修改事件 @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

编辑

RabbitMQ 用户名

vhost

编辑

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

通用选项

编辑

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

设置 输入类型 必需

add_field

hash

codec

codec

enable_metric

布尔值

id

字符串

tags

数组

type

字符串

add_field

编辑
  • 值类型是 哈希
  • 默认值为 {}

向事件添加一个字段

codec

编辑

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

enable_metric

编辑

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

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

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

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

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

tags

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

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

这有助于以后的处理。

type

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

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

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

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

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