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.

MQTT Engine

The tags automatically created form MQTT Engine are documented here

Engine Info - Edge Nodes


Use the tags below to verify the expected number of Edge Nodes have come online and remain online:

NodesOfflineIntegerThe number of Sparkplug Edge Nodes offline. This is determined by whether the last lifecycle message was an NBIRTH or NDEATH
NodesOnlineIntegerThe number of Sparkplug Edge Nodes online. This is determined by whether the last lifecycle message was an NBIRTH or NDEATH
NodeUnitCountIntegerThe 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 NodesDatasetA dataset containing the Sparkplug ID and timestamp for all offline Sparkplug edge nodes
Online NodesDatasetA 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

onlineEdgeNodes = system.dataset.toPyDataSet(system.tag.readBlocking("[MQTT Engine]Engine Info/Edge Nodes/Online Nodes")[0].value)     
print "Online Sparkplug EdgeNodes: " + str(system.tag.readBlocking("[MQTT Engine]Engine Info/Edge Nodes/NodesOnline")[0].value)
if system.tag.readBlocking("[MQTT Engine]Engine Info/Edge Nodes/NodesOnline")[0].value > 0:
    for row in onlineEdgeNodes:
        data = []
        data.append(["Sparkplug EdgeNode Descriptor", row[0]])
        data.append(["Last Connect Date", row["Date"]])
        print data
         
offlineEdgeNodes = system.dataset.toPyDataSet(system.tag.readBlocking("[MQTT Engine]Engine Info/Edge Nodes/Offline Nodes")[0].value)     
print "Offline Sparkplug EdgeNodes: " + str(system.tag.readBlocking("[MQTT Engine]Engine Info/Edge Nodes/NodesOffline")[0].value)
if system.tag.readBlocking("[MQTT Engine]Engine Info/Edge Nodes/NodesOffline")[0].value > 0:
    for row in offlineEdgeNodes:
        data = []
        data.append(["Sparkplug EdgeNode Descriptor", row[0]])
        data.append(["Last Connect Date", row["Date"]])
        print data



Edge Node - Node Info Tags

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. The tags created in these folders are documented here



Data Latency (ms)Long

The time in milliseconds between MQTT Engine receiving of the last message and the payload's reported time. 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 CountLongThe number of NDEATH messages since the last time the info metrics were reset via the Node Info/Reset Info tag


Offline DateTimeDateTimeThe time at which the last NDEATH message was received by MQTT Engine


OnlineBooleanWhether or not the Edge Node is online. This is determined by whether the last lifecycle message was an NBIRTH or NDEATH


Online DateTimeDateTimeThe time at which the first NBIRTH message for a connection was received by MQTT Engine


Rebirth (Last) CauseString

The reason for the last NBIRTH message received by MQTT Engine (available 4.0.22 onward)

Options are:

  • Triggered by User
  • Message sequence number error
  • Received a message for edge node that is offline


Rebirth (Last DateTime)DateTimeThe time at which the last NBIRTH message received by MQTT Engine (available 4.0.22 onward)


Rebirth CountIntegerThe count of NBIRTH messages received by MQTT Engine (available 4.0.22 onward)


Expose Rebirth request count per edge node under MQTT Engine Info tags. A high rebirth count in a small time window is a clear indicator of issues at the Edge.