插件 〉Rabbitmq


开发者

maormil

注册接收不定期产品新闻和更新



数据源
社区

Rabbitmq

  • 概览
  • 安装
  • 更新日志
  • 相关内容

RabbitMQ Grafana 数据源插件

用于 Grafana 仪表盘中实时数据更新的 RabbitMQ Streaming 数据源插件。

什么是 RabbitMQ Stream?

如果您不熟悉 RabbitMQ Stream 插件,这里有一些不错的资源供您阅读

入门

要求

  • RabbitMQ v3.12.10+ 且启用 rabbitmq_stream 插件(应可在 RabbitMQ v3.9+ 上运行,但未经测试)
  • Grafana v9.4.3+

注意:这是一个后端插件,因此 Grafana 服务器应能访问 RabbitMQ Broker。

配置编辑器 - 配置您的 RabbitMQ Stream

New RabbitMQ Datasource

填写以下字段以添加数据源(提示:如果您不确定某个字段的含义,请保留默认值)。

连接

连接 RabbitMQ 的基本连接部分。

Connection Section

字段类型是否必须默认值描述
主机字符串"localhost"RabbitMQ 服务器的主机名(或 IP)
AMQP 端口整数5672RabbitMQ 服务器的 AMQP 端口
Stream 端口整数5552RabbitMQ 服务器的 Stream 端口
VHost字符串"/"RabbitMQ 服务器的虚拟主机

身份验证

连接 RabbitMQ 的基本身份验证部分。

Authentication Section

字段类型是否必须默认值描述
TLS 连接布尔值false是否使用 TLS 连接到 RabbitMQ 服务器
用户名字符串"guest"连接 RabbitMQ 服务器的用户名
密码字符串"guest"连接 RabbitMQ 服务器的密码

Stream 设置

Stream 声明设置部分,您可以在此定义所需的 RabbitMQ Stream 设置及其消费者设置。

Stream Settings Section

字段类型是否必须默认值描述
是否丢弃 Stream布尔值true当 RabbitMQ 数据源被删除时,是否删除此 Stream(在 RabbitMQ 中)
Stream 名称字符串"rabbitmq.stream"将要创建的 Stream 名称
消费者名称字符串""将要创建的消费者名称
起始偏移布尔值true消费者应从 Stream 中存储消息的起始位置还是末尾位置消费消息
最大存留时间整数3,600,000,000,000Stream 中消息的最大存留时间(纳秒)(设为 0 表示禁用最大存留时间限制)
最大长度(字节)整数2,000,000,000Stream 中消息的最大长度(字节)(设为 0 表示禁用最大长度限制)
最大分段大小(字节)整数500,000,000Stream 中最大分段大小(字节)
CRC布尔值false禁用 CRC 控制时,性能会提高

交换器

可选部分。用于在 RabbitMQ 中创建多个交换器的数组部分(在与 RabbitMQ 连接丢失 / RabbitMQ 中 Stream 被删除的情况下,它们也会被重新创建)。如果交换器已存在于 RabbitMQ 中,插件将不会重新创建该交换器,但如果 RabbitMQ 中已存在同名交换器且设置与您提供的不同,您可能会遇到创建 RabbitMQ 数据源连接的问题。

Exchanges Section

字段类型是否必须默认值描述
是否丢弃交换器布尔值true当 RabbitMQ 数据源被删除时,是否删除此交换器
如果未使用则丢弃布尔值true仅当此交换器没有绑定时才删除它(并且设置了“是否丢弃交换器”为 ON)
交换器名称字符串"rabbitmq.exchange"应存在于 RabbitMQ 中的交换器名称
交换器类型字符串"fanout"交换器类型
是否持久布尔值true交换器是否应持久
是否自动删除布尔值false交换器是否应自动删除
是否内部布尔值false交换器是否应内部
是否 NoWait布尔值false交换器是否应 noWait

绑定

可选部分。用于在 RabbitMQ 中创建多个绑定的数组部分(在与 RabbitMQ 连接丢失 / RabbitMQ 中 Stream 被删除的情况下,它们也会被重新创建)。如果绑定已存在于 RabbitMQ 中,插件将不会重新创建该绑定。支持交换器到队列(或 Stream)类型的绑定以及交换器到交换器的绑定。

Bindings Section

字段类型是否必须默认值描述
是否丢弃绑定布尔值true当 RabbitMQ 数据源被删除时,是否解除绑定
是否为队列绑定布尔值true绑定是否应从交换器到队列/Stream(如果禁用,绑定将从交换器到交换器)
发送者名称字符串"rabbitmq.exchange"进行绑定的源交换器
路由键字符串"/"发送者交换器和接收者之间进行绑定的路由键
接收者名称字符串"rabbitmq.stream"进行绑定的目标 Stream/队列/交换器
是否 No Wait布尔值false绑定是否应 noWait

查询编辑器

Bindings Section

请注意,RabbitMQ 插件中没有真正的查询编辑器。一旦您设置了数据源设置,就可以开始使用了。您仍然可以在默认的 Grafana 查询编辑器中更改时间范围查询,这将影响显示的数据以及查询间隔的速度。此插件计划和设计用于与 Plotly by nline 面板插件配合使用。欢迎查看这个很棒的插件(如果您不想使用 plotly,仍然可以使用转换与此 RabbitMQ 插件配合使用)。

重新连接到 RabbitMQ

插件自动处理大多数混沌场景

  • 如果在 RabbitMQ 本身中删除了 Stream - 该 Stream、其消费者以及预配置的交换器和绑定将被重新创建。
  • 如果 Grafana 关闭后再次启动,消费者将被重新创建。
  • 如果 RabbitMQ 关闭,插件将尝试保持重新连接到 RabbitMQ(仅当用户删除数据源时才会停止)。

关于删除 RabbitMQ 数据源的重要说明

一旦用户创建了 RabbitMQ 数据源的面板,就会创建该 Stream 的消费者。如果用户在消费者创建之前决定删除 RabbitMQ 数据源,即使您将它们设置为丢弃,从 RabbitMQ 数据源创建的 Stream、交换器和绑定仍将存在于 RabbitMQ 中。因此,如果您希望删除它们,必须手动进行。如果消费者已创建,Stream、交换器和绑定将根据您设置的 RabbitMQ 数据源设置进行丢弃(删除)。

已知限制

  • 此插件不支持 RabbitMQ 连接的高级 TLS 配置。
  • 此插件仅支持基于 JSON 的消息,并会丢弃任何非 JSON 消息。JSON 可以包含数字、字符串、布尔值和 JSON 格式的值。可以使用 Extract Fields 转换(或由 Plotly by nline 面板插件处理)提取嵌套对象值。
  • 此插件在收到消息时自动附加时间戳。消息体中包含的时间戳可以使用 Convert field type 转换进行解析。添加的时间戳的键名为:RmqMsgConsumedTimestamp
  • 目前只支持 First 和 Last 偏移(从 RabbitMQ Stream 消费消息时,不支持特定的偏移或时间戳)。

连接 RabbitMQ 时已知的错误和原因

  • 拨号 tcp <ip/hostname>:<port>: 连接:连接被拒绝
    • 给定 <ip/hostname> 没有运行的 RabbitMQ。
    • 错误的 Stream Port

Exchanges Section

  • 超时 10000 ms - 等待 Code, operation: commandPeerProperties
    • RabbitMQ 中未启用 Stream 插件。
    • 错误的 AMQP Port
    • 错误的 VHost

Exchanges Section

  • 可能还有更多错误,但其余的都很直观。

致谢

创建实际的 Streaming 后端插件

Grafana 中的流式传输功能仍处于实验阶段,关于如何创建流式传输后端数据源的文档不足。目前支持此功能的插件不多,因此为了创建这个 RabbitMQ 数据源插件,我阅读并使用了所有现有 Grafana 流式传输数据源的一些部分

特别感谢 framer.go,它复制自 MQTT 数据源并稍作修改。

与 RabbitMQ 的通信

该插件使用 2 个主要核心包与 RabbitMQ 通信,均由 RabbitMQ 核心团队开发

贡献

感谢您考虑贡献!如果您发现问题或有更好的解决方法,请随时提交 Issue 或 PR。

许可

此仓库是根据 Apache License 2.0 许可的开源软件。

在 Grafana Cloud 上安装 Rabbitmq

有关更多信息,请访问插件安装文档。

更新日志

1.0.0

  • Grafana Labs 批准为签名插件的初始版本。