The MQTT modules (MQTT Transmission, MQTT Distributor and MQTT Engine) all provide status tags within Ignition that can be used to monitor the overall health of the MQTT pipeline.
The tags automatically created for MQTT Engine are documented here
Use the tags below to verify the expected number of Edge Nodes have come online and remain online:
NodesOffline | Integer | The number of Sparkplug Edge Nodes offline. This is determined by whether the last lifecycle message was an NBIRTH or NDEATH |
NodesOnline | Integer | The number of Sparkplug Edge Nodes online. This is determined by whether the last lifecycle message was an NBIRTH or NDEATH |
NodeUnitCount | Integer | The total number of Sparkplug Edge Nodes as determined by the received NBIRTH messages |
Use the tags below to identify the Sparkplug ID and last timestamp for the Offline and Online nodes
Offline Nodes | Dataset | A dataset containing the Sparkplug ID and timestamp for all offline Sparkplug edge nodes |
Online Nodes | Dataset | A dataset containing the Sparkplug ID and timestamp for all online Sparkplug edge nodes |
Use the script below to easily parse the Offline and Online datasets
|
Server Latency (ms) | Integer | The amount of time that it takes for a test MQTT message to be sent and received back by MQTT Engine |
For each connected Edge Node, a Node Control and Node Info folder containing tags is created along with a Device Info folder for each connected device.
Using these tags we can look into the health of each Edge Node connection:
Data Latency (ms) | Long | The time in milliseconds between MQTT Engine receiving of the last message and the payload's reported time. A long latency time can indicate network issues. Note: For this to be very accurate the edge node's clock and the system clock running MQTT Engine should be synced |
Birth Count | Long | The number of NBIRTH messages since the last time the info metrics were reset via the Node Info/Reset Info tag |
Death Count | Long | The number of NDEATH messages since the last time the info metrics were reset via the Node Info/Reset Info tag |
Offline DateTime | DateTime | The time at which the last NDEATH message was received by MQTT Engine |
Online | Boolean | Whether or not the Edge Node is online. This is determined by whether the last lifecycle message was an NBIRTH or NDEATH |
Online DateTime | DateTime | The time at which the first NBIRTH message for a connection was received by MQTT Engine |
Rebirth Count | Integer | The count of rebirth requests issued by MQTT Engine (available 4.0.22 onward) |
A high rebirth count in a small time window is a clear indicator of issues at the Edge(s) |
Rebirth (Last DateTime) | DateTime | The time of the last rebirth request issued by MQTT Engine (available 4.0.22 onward) |
Rebirth (Last) Cause | String | The reason for the last rebirth request (available 4.0.22 onward) |
Reasons for rebirth requests are:
The message sequence number received was not in order
In a Sparkplug compliant system, the combination of Group ID and Edge Node ID (the Sparkplug Edge Node Descriptor) that identifies the Edge Node must be unique. If there are two or more Transmitters with the same Sparkplug Edge Node Descriptor, data from these two transmitters will sent with the same topic resulting in the next message sequence number expected by the MQTT client being incorrect. As a result, the MQTT Client will mark the data as stale and request a rebirth from the transmitter. If you have multiple MQTT Clients subscribing to the namespace, this will also likely create a firestorm of rebirth requests across the system. |