插件 〉Rabbitmq
Rabbitmq
RabbitMQ Grafana 数据源插件
用于 Grafana 仪表盘中实时数据更新的 RabbitMQ Streaming 数据源插件。
什么是 RabbitMQ Stream?
如果您不熟悉 RabbitMQ Stream 插件,这里有一些不错的资源供您阅读
- RabbitMQ 关于 Streams 的官方页面
- RabbitMQ Stream Core 与 Stream Plugin 对比
- RabbitMQ Stream 实践指南 第 1 部分
- RabbitMQ Stream 实践指南 第 2 部分
- RabbitMQ Stream 实践指南 第 3 部分
入门
要求
- RabbitMQ v3.12.10+ 且启用
rabbitmq_stream
插件(应可在 RabbitMQ v3.9+ 上运行,但未经测试) - Grafana v9.4.3+
注意:这是一个后端插件,因此 Grafana 服务器应能访问 RabbitMQ Broker。
配置编辑器 - 配置您的 RabbitMQ Stream
填写以下字段以添加数据源(提示:如果您不确定某个字段的含义,请保留默认值)。
连接
连接 RabbitMQ 的基本连接部分。
字段 | 类型 | 是否必须 | 默认值 | 描述 |
---|---|---|---|---|
主机 | 字符串 | 是 | "localhost" | RabbitMQ 服务器的主机名(或 IP) |
AMQP 端口 | 整数 | 是 | 5672 | RabbitMQ 服务器的 AMQP 端口 |
Stream 端口 | 整数 | 是 | 5552 | RabbitMQ 服务器的 Stream 端口 |
VHost | 字符串 | 是 | "/" | RabbitMQ 服务器的虚拟主机 |
身份验证
连接 RabbitMQ 的基本身份验证部分。
字段 | 类型 | 是否必须 | 默认值 | 描述 |
---|---|---|---|---|
TLS 连接 | 布尔值 | 是 | false | 是否使用 TLS 连接到 RabbitMQ 服务器 |
用户名 | 字符串 | 是 | "guest" | 连接 RabbitMQ 服务器的用户名 |
密码 | 字符串 | 是 | "guest" | 连接 RabbitMQ 服务器的密码 |
Stream 设置
Stream 声明设置部分,您可以在此定义所需的 RabbitMQ Stream 设置及其消费者设置。
字段 | 类型 | 是否必须 | 默认值 | 描述 |
---|---|---|---|---|
是否丢弃 Stream | 布尔值 | 是 | true | 当 RabbitMQ 数据源被删除时,是否删除此 Stream(在 RabbitMQ 中) |
Stream 名称 | 字符串 | 是 | "rabbitmq.stream" | 将要创建的 Stream 名称 |
消费者名称 | 字符串 | 否 | "" | 将要创建的消费者名称 |
起始偏移 | 布尔值 | 是 | true | 消费者应从 Stream 中存储消息的起始位置还是末尾位置消费消息 |
最大存留时间 | 整数 | 是 | 3,600,000,000,000 | Stream 中消息的最大存留时间(纳秒)(设为 0 表示禁用最大存留时间限制) |
最大长度(字节) | 整数 | 是 | 2,000,000,000 | Stream 中消息的最大长度(字节)(设为 0 表示禁用最大长度限制) |
最大分段大小(字节) | 整数 | 是 | 500,000,000 | Stream 中最大分段大小(字节) |
CRC | 布尔值 | 是 | false | 禁用 CRC 控制时,性能会提高 |
交换器
可选部分。用于在 RabbitMQ 中创建多个交换器的数组部分(在与 RabbitMQ 连接丢失 / RabbitMQ 中 Stream 被删除的情况下,它们也会被重新创建)。如果交换器已存在于 RabbitMQ 中,插件将不会重新创建该交换器,但如果 RabbitMQ 中已存在同名交换器且设置与您提供的不同,您可能会遇到创建 RabbitMQ 数据源连接的问题。
字段 | 类型 | 是否必须 | 默认值 | 描述 |
---|---|---|---|---|
是否丢弃交换器 | 布尔值 | 是 | true | 当 RabbitMQ 数据源被删除时,是否删除此交换器 |
如果未使用则丢弃 | 布尔值 | 是 | true | 仅当此交换器没有绑定时才删除它(并且设置了“是否丢弃交换器”为 ON) |
交换器名称 | 字符串 | 是 | "rabbitmq.exchange" | 应存在于 RabbitMQ 中的交换器名称 |
交换器类型 | 字符串 | 是 | "fanout" | 交换器类型 |
是否持久 | 布尔值 | 是 | true | 交换器是否应持久 |
是否自动删除 | 布尔值 | 是 | false | 交换器是否应自动删除 |
是否内部 | 布尔值 | 是 | false | 交换器是否应内部 |
是否 NoWait | 布尔值 | 是 | false | 交换器是否应 noWait |
绑定
可选部分。用于在 RabbitMQ 中创建多个绑定的数组部分(在与 RabbitMQ 连接丢失 / RabbitMQ 中 Stream 被删除的情况下,它们也会被重新创建)。如果绑定已存在于 RabbitMQ 中,插件将不会重新创建该绑定。支持交换器到队列(或 Stream)类型的绑定以及交换器到交换器的绑定。
字段 | 类型 | 是否必须 | 默认值 | 描述 |
---|---|---|---|---|
是否丢弃绑定 | 布尔值 | 是 | true | 当 RabbitMQ 数据源被删除时,是否解除绑定 |
是否为队列绑定 | 布尔值 | 是 | true | 绑定是否应从交换器到队列/Stream(如果禁用,绑定将从交换器到交换器) |
发送者名称 | 字符串 | 是 | "rabbitmq.exchange" | 进行绑定的源交换器 |
路由键 | 字符串 | 是 | "/" | 发送者交换器和接收者之间进行绑定的路由键 |
接收者名称 | 字符串 | 是 | "rabbitmq.stream" | 进行绑定的目标 Stream/队列/交换器 |
是否 No Wait | 布尔值 | 是 | false | 绑定是否应 noWait |
查询编辑器
请注意,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
。
- 给定
超时 10000 ms - 等待 Code, operation: commandPeerProperties
- RabbitMQ 中未启用 Stream 插件。
- 错误的
AMQP Port
。 - 错误的
VHost
。
- 可能还有更多错误,但其余的都很直观。
致谢
创建实际的 Streaming 后端插件
Grafana 中的流式传输功能仍处于实验阶段,关于如何创建流式传输后端数据源的文档不足。目前支持此功能的插件不多,因此为了创建这个 RabbitMQ 数据源插件,我阅读并使用了所有现有 Grafana 流式传输数据源的一些部分
- MQTT 数据源 (由 GrafanaLabs)
- Kafka 数据源 (由 hamedkarbasi93)
- Websocket 后端数据源示例 (由 GrafanaLabs)
- Websocket 数据源 (由 Golioth)
特别感谢 framer.go,它复制自 MQTT 数据源并稍作修改。
与 RabbitMQ 的通信
该插件使用 2 个主要核心包与 RabbitMQ 通信,均由 RabbitMQ 核心团队开发
贡献
感谢您考虑贡献!如果您发现问题或有更好的解决方法,请随时提交 Issue 或 PR。
许可
此仓库是根据 Apache License 2.0 许可的开源软件。
在 Grafana Cloud 上安装 Rabbitmq
在 Grafana Cloud 实例上安装插件只需一次点击;更新也是如此。很酷,对吧?
请注意,插件可能需要最多 1 分钟才能在您的 Grafana 中显示出来。
在 Grafana Cloud 实例上安装插件只需一次点击;更新也是如此。很酷,对吧?
请注意,插件可能需要最多 1 分钟才能在您的 Grafana 中显示出来。
在 Grafana Cloud 实例上安装插件只需一次点击;更新也是如此。很酷,对吧?
请注意,插件可能需要最多 1 分钟才能在您的 Grafana 中显示出来。
在 Grafana Cloud 实例上安装插件只需一次点击;更新也是如此。很酷,对吧?
请注意,插件可能需要最多 1 分钟才能在您的 Grafana 中显示出来。
在 Grafana Cloud 实例上安装插件只需一次点击;更新也是如此。很酷,对吧?
请注意,插件可能需要最多 1 分钟才能在您的 Grafana 中显示出来。
在 Grafana Cloud 实例上安装插件只需一次点击;更新也是如此。很酷,对吧?
请注意,插件可能需要最多 1 分钟才能在您的 Grafana 中显示出来。
在 Grafana Cloud 实例上安装插件只需一次点击;更新也是如此。很酷,对吧?
请注意,插件可能需要最多 1 分钟才能在您的 Grafana 中显示出来。
有关更多信息,请访问插件安装文档。
在本地 Grafana 上安装
对于本地实例,插件通过简单的 CLI 命令安装和更新。插件不会自动更新,但您的 Grafana 内会通知您何时有更新可用。
1. 安装数据源
使用 grafana-cli 工具从命令行安装 Rabbitmq
grafana-cli plugins install
插件将安装到您的 grafana 插件目录;默认路径为 /var/lib/grafana/plugins。有关 cli 工具的更多信息。
2. 配置数据源
从 Grafana 主菜单访问,“数据源”部分中可以立即添加新安装的数据源。
接下来,点击右上角的“添加数据源”按钮。数据源将在“类型”选择框中可用。
要查看已安装的数据源列表,请点击主菜单中的“插件”项。核心数据源和已安装的数据源都会显示。
更新日志
1.0.0
- Grafana Labs 批准为签名插件的初始版本。