概览

Neuron Monitor 插件是一款开源的北向插件。 顾名思义,Monitor 插件用于监控运行的 Neuron 实例。 Monitor 插件有点特殊,用户不能直接使用该插件创建或删除节点,而是由 Neuron 进程在启动时创建一个 monitor 单例节点。 您可以在仪表板的北向应用页签中看到 monitor 节点。

Neuron monitor 节点

Fig.1 - Neuron monitor 节点

参数

以下是配置 monitor 节点时可用的参数:

ParameterDescription
客户端 IDMQTT 通信的客户端 ID,必填。
事件主题前缀事件消息发布的主题的前缀。
心跳主题心跳消息发布的主题。
心跳间隔心跳消息之间的间隔时间(秒),设置为0将禁用心跳消息。
服务器地址MQTT 服务器地址,必填。
服务器端口MQTT 服务器端口号,必填。
用户名MQTT 用户名,选填。
密码MQTT 用户密码,选填。
SSL是否启用 SSL,选填,默认不启用。
CA 证书CA 证书,启用 SSL 且使用自签发证书时必填。
客户端证书客户端证书,使用 SSL 双向认证时必填。
客户端私钥客户端密钥,使用 SSL 双向认证时必填。
客户端私钥密码客户端密钥密码,使用 SSL 双向认证并且提供了加密的客户端私钥时必填。

提示

这些参数用于心跳事件上报功能,如果你不需要这些功能就不用配置 monitor 节点。

服务器地址服务器端口用户名密码SSLCA 证书客户端证书客户端私钥,和客户端私钥密码参数用于创建 MQTT数据统计与监控 - 图2 (opens new window) 连接,与 MQTT 插件的配置类似。 我们将这九个参数称为 MQTT 连接参数。

数据统计

Neuron Monitor 插件提供了一个兼容 Prometheus数据统计与监控 - 图3 (opens new window)数据统计 HTTP API 。 Neuron 仪板表的关于页面和数据统计页签使用这个 API 显示信息。

可以通过点击系统信息 -> 关于打开关于页面。

Neuron dashboard 关于页面

Fig.2 - Neuron 仪板表关于页面

点击节点上的数据统计图标,可以显示数据统计页签。

Neuron 仪板表数据统计图标

Fig.3 - Neuron 仪板表数据统计图标

如下,展示了一个样例 file 节点的数据统计。

Neuron dashboard Data Statistics tab example

Fig.4 - Neuron 仪板表数据统计页签

注意

数据统计 API 在 Neuron 进程的整个生命周期中都是启用的。 启动或者停止 monitor 节点只会停止心跳事件上报功能。

心跳消息

Monitor 插件可以向 MQTT 服务器发送心跳消息,用于检查 Neuron 进程的存活或者节点的状态。 除了 MQTT 连接参数,心跳消息功能由心跳主题心跳间隔两个参数控制。 心跳主题参数指定心跳上报的 MQTT 主题,心跳间隔参数指定每条心跳消息之间间隔的秒数。

提示

心跳间隔设为 0 ,将停止心跳上报功能。

心跳消息具有以下字段:

  • timestamp : 消息生成时的 Unix 时间撮。
  • version : Neuron 的版本信息。
  • states : 节点状态信息的数组,类似 节点状态 HTTP API 响应的数据.

以下是一个心跳消息样例。

  1. {
  2. "timestamp": 1658134132237,
  3. "version": "2.4.0",
  4. "states": [
  5. {
  6. "node": "mqtt-client",
  7. "link": 2,
  8. "running": 3
  9. },
  10. {
  11. "node": "fx5u-client",
  12. "link": 2,
  13. "running": 3
  14. }
  15. ]
  16. }

事件消息

事件代表 Neuron 进程中的内部状态变化,比如节点的创建,删除或者配置。 系统管理员或者运维工程师通常比较关注这些事件。

Monitor 插件可以向 MQTT 服务器发送事件消息,使用的主题由事件主题前缀参数决定。 下文中我们用 {event-topic-prefix} 表示配置的事件主题前缀参数的实际值。

节点事件

节点创建事件

上报主题: {event-topic-prefix}/node/add

消息示例:

  1. {
  2. "name": "file",
  3. "plugin": "File"
  4. }

节点删除事件

上报主题: {event-topic-prefix}/node/delete

消息示例:

  1. {
  2. "name": "file"
  3. }

节点配置事件

上报主题: {event-topic-prefix}/node/setting

消息示例:

  1. {
  2. "node": "file",
  3. "params": {
  4. "file_length": 512
  5. }
  6. }

节点控制事件

上报主题: {event-topic-prefix}/node/ctl

消息示例:

  1. {
  2. "node": "file",
  3. "cmd": 1
  4. }

组事件

组创建事件

上报主题: {event-topic-prefix}/group/add

消息示例:

  1. {
  2. "node": "file",
  3. "group": "grp",
  4. "interval": 1000
  5. }

组更新事件

上报主题: {event-topic-prefix}/group/update

消息示例:

  1. {
  2. "node": "file",
  3. "group": "grp",
  4. "interval": 2000
  5. }

组删除事件

上报主题: {event-topic-prefix}/group/delete

消息示例:

  1. {
  2. "node": "file",
  3. "group": "grp"
  4. }

点位事件

点位创建事件

上报主题: {event-topic-prefix}/tag/add

消息示例:

  1. {
  2. "node": "file",
  3. "group": "grp",
  4. "tags": [
  5. {
  6. "name": "tag0",
  7. "type": 13,
  8. "attribute": 1,
  9. "address": "hello.txt",
  10. "precision": 0,
  11. "decimal": 0.0,
  12. "description": ""
  13. }
  14. ]
  15. }

点位更新事件

上报主题: {event-topic-prefix}/tag/update

消息示例:

  1. {
  2. "node": "file",
  3. "group": "grp",
  4. "tags": [
  5. {
  6. "name": "tag0",
  7. "type": 13,
  8. "attribute": 3,
  9. "address": "hello.txt",
  10. "precision": 0,
  11. "decimal": 0.0,
  12. "description": ""
  13. }
  14. ]
  15. }

点位删除事件

上报主题: {event-topic-prefix}/tag/delete

消息示例:

  1. {
  2. "node": "file",
  3. "group": "grp",
  4. "tags": [
  5. "tag0"
  6. ]
  7. }