概览
Neuron Monitor 插件是一款开源的北向插件。 顾名思义,Monitor 插件用于监控运行的 Neuron 实例。 Monitor 插件有点特殊,用户不能直接使用该插件创建或删除节点,而是由 Neuron 进程在启动时创建一个 monitor 单例节点。 您可以在仪表板的北向应用页签中看到 monitor 节点。
Fig.1 - Neuron monitor 节点
参数
以下是配置 monitor 节点时可用的参数:
Parameter | Description |
---|---|
客户端 ID | MQTT 通信的客户端 ID,必填。 |
事件主题前缀 | 事件消息发布的主题的前缀。 |
心跳主题 | 心跳消息发布的主题。 |
心跳间隔 | 心跳消息之间的间隔时间(秒),设置为0将禁用心跳消息。 |
服务器地址 | MQTT 服务器地址,必填。 |
服务器端口 | MQTT 服务器端口号,必填。 |
用户名 | MQTT 用户名,选填。 |
密码 | MQTT 用户密码,选填。 |
SSL | 是否启用 SSL,选填,默认不启用。 |
CA 证书 | CA 证书,启用 SSL 且使用自签发证书时必填。 |
客户端证书 | 客户端证书,使用 SSL 双向认证时必填。 |
客户端私钥 | 客户端密钥,使用 SSL 双向认证时必填。 |
客户端私钥密码 | 客户端密钥密码,使用 SSL 双向认证并且提供了加密的客户端私钥时必填。 |
提示
这些参数用于心跳和事件上报功能,如果你不需要这些功能就不用配置 monitor 节点。
服务器地址,服务器端口,用户名,密码,SSL,CA 证书,客户端证书,客户端私钥,和客户端私钥密码参数用于创建 MQTT (opens new window) 连接,与 MQTT 插件的配置类似。 我们将这九个参数称为 MQTT 连接参数。
数据统计
Neuron Monitor 插件提供了一个兼容 Prometheus (opens new window) 的数据统计 HTTP API 。 Neuron 仪板表的关于页面和数据统计页签使用这个 API 显示信息。
可以通过点击系统信息 -> 关于打开关于页面。
Fig.2 - Neuron 仪板表关于页面
点击节点上的数据统计图标,可以显示数据统计页签。
Fig.3 - Neuron 仪板表数据统计图标
如下,展示了一个样例 file 节点的数据统计。
Fig.4 - Neuron 仪板表数据统计页签
注意
数据统计 API 在 Neuron 进程的整个生命周期中都是启用的。 启动或者停止 monitor 节点只会停止心跳和事件上报功能。
心跳消息
Monitor 插件可以向 MQTT 服务器发送心跳消息,用于检查 Neuron 进程的存活或者节点的状态。 除了 MQTT 连接参数,心跳消息功能由心跳主题和心跳间隔两个参数控制。 心跳主题参数指定心跳上报的 MQTT 主题,心跳间隔参数指定每条心跳消息之间间隔的秒数。
提示
将心跳间隔设为 0 ,将停止心跳上报功能。
心跳消息具有以下字段:
timestamp
: 消息生成时的 Unix 时间撮。version
: Neuron 的版本信息。states
: 节点状态信息的数组,类似 节点状态 HTTP API 响应的数据.
以下是一个心跳消息样例。
{
"timestamp": 1658134132237,
"version": "2.4.0",
"states": [
{
"node": "mqtt-client",
"link": 2,
"running": 3
},
{
"node": "fx5u-client",
"link": 2,
"running": 3
}
]
}
事件消息
事件代表 Neuron 进程中的内部状态变化,比如节点的创建,删除或者配置。 系统管理员或者运维工程师通常比较关注这些事件。
Monitor 插件可以向 MQTT 服务器发送事件消息,使用的主题由事件主题前缀参数决定。 下文中我们用 {event-topic-prefix} 表示配置的事件主题前缀参数的实际值。
节点事件
节点创建事件
上报主题: {event-topic-prefix}/node/add
消息示例:
{
"name": "file",
"plugin": "File"
}
节点删除事件
上报主题: {event-topic-prefix}/node/delete
消息示例:
{
"name": "file"
}
节点配置事件
上报主题: {event-topic-prefix}/node/setting
消息示例:
{
"node": "file",
"params": {
"file_length": 512
}
}
节点控制事件
上报主题: {event-topic-prefix}/node/ctl
消息示例:
{
"node": "file",
"cmd": 1
}
组事件
组创建事件
上报主题: {event-topic-prefix}/group/add
消息示例:
{
"node": "file",
"group": "grp",
"interval": 1000
}
组更新事件
上报主题: {event-topic-prefix}/group/update
消息示例:
{
"node": "file",
"group": "grp",
"interval": 2000
}
组删除事件
上报主题: {event-topic-prefix}/group/delete
消息示例:
{
"node": "file",
"group": "grp"
}
点位事件
点位创建事件
上报主题: {event-topic-prefix}/tag/add
消息示例:
{
"node": "file",
"group": "grp",
"tags": [
{
"name": "tag0",
"type": 13,
"attribute": 1,
"address": "hello.txt",
"precision": 0,
"decimal": 0.0,
"description": ""
}
]
}
点位更新事件
上报主题: {event-topic-prefix}/tag/update
消息示例:
{
"node": "file",
"group": "grp",
"tags": [
{
"name": "tag0",
"type": 13,
"attribute": 3,
"address": "hello.txt",
"precision": 0,
"decimal": 0.0,
"description": ""
}
]
}
点位删除事件
上报主题: {event-topic-prefix}/tag/delete
消息示例:
{
"node": "file",
"group": "grp",
"tags": [
"tag0"
]
}