Telemetry via Sink MQTT

The Netify MQTT Plugin enables the publishing of real-time network telemetry and metadata from the DPI engine to a message broker. Using MQTT's publish/subscribe (Pub/Sub) architecture, the plugin efficiently distributes telemetry streams to multiple subscribers without requiring persistent, resource-intensive point-to-point connections.

For alternative methods of accessing network telemetry, see the related Netify Sink options.


License

Netify Message Queue (MQTT) Plugin is a proprietary plugin requiring a license. Please contact us for details.


Installation

Netify plugins are distributed through the same packaging workflow as the Netify Agent, allowing for a consistent installation experience using standard package manager syntax. While pre-compiled binaries are readily available for x86_64 architectures via our public mirrors, support for ARM, MIPS, and other specialized architectures is available upon request. Please contact us for details.

Step 1 - Select your installation target:

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
curl -fsSL https://download.netify.ai/5/debian/apt-gpg-key-netify.asc | sudo apt-key add -
echo 'deb http://download.netify.ai/5/debian/12/ /' | sudo tee /etc/apt/sources.list.d/netify.list > /dev/null

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
sudo apt update
sudo apt install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
curl -fsSL https://download.netify.ai/5/debian/apt-gpg-key-netify.asc | sudo apt-key add -
echo 'deb http://download.netify.ai/5/debian/11/ /' | sudo tee /etc/apt/sources.list.d/netify.list > /dev/null

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
sudo apt update
sudo apt install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
curl -fsSL https://download.netify.ai/5/debian/apt-gpg-key-netify.asc | sudo apt-key add -
echo 'deb http://download.netify.ai/5/debian/10/ /' | sudo tee /etc/apt/sources.list.d/netify.list > /dev/null

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
sudo apt update
sudo apt install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
curl -fsSL https://download.netify.ai/5/ubuntu/apt-gpg-key-netify.asc | sudo apt-key add -
echo 'deb http://download.netify.ai/5/ubuntu/noble/ /' | sudo tee /etc/apt/sources.list.d/netify.list > /dev/null

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
sudo apt update
sudo apt install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
curl -fsSL https://download.netify.ai/5/ubuntu/apt-gpg-key-netify.asc | sudo apt-key add -
echo 'deb http://download.netify.ai/5/ubuntu/jammy/ /' | sudo tee /etc/apt/sources.list.d/netify.list > /dev/null

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
sudo apt update
sudo apt install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
curl -fsSL https://download.netify.ai/5/ubuntu/apt-gpg-key-netify.asc | sudo apt-key add -
echo 'deb http://download.netify.ai/5/ubuntu/focal/ /' | sudo tee /etc/apt/sources.list.d/netify.list > /dev/null

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
sudo apt update
sudo apt install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
wget https://download.netify.ai/5/openwrt/key-build.pub -O /etc/opkg/keys/b18c240cb821dad2
echo 'src/gz netify https://download.netify.ai/5/openwrt/24.10/x86' >> /etc/opkg/customfeeds.conf

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
opkg update
opkg install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
wget https://download.netify.ai/5/openwrt/key-build.pub -O /etc/opkg/keys/b18c240cb821dad2
echo 'src/gz netify https://download.netify.ai/5/openwrt/23.05/x86' >> /etc/opkg/customfeeds.conf

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
opkg update
opkg install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
wget https://download.netify.ai/5/openwrt/key-build.pub -O /etc/opkg/keys/b18c240cb821dad2
echo 'src/gz netify https://download.netify.ai/5/openwrt/22.03/x86' >> /etc/opkg/customfeeds.conf

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
opkg update
opkg install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
wget https://download.netify.ai/5/openwrt/key-build.pub -O /etc/opkg/keys/b18c240cb821dad2
echo 'src/gz netify https://download.netify.ai/5/openwrt/21.02/x86' >> /etc/opkg/customfeeds.conf

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
opkg update
opkg install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
wget https://download.netify.ai/5/openwrt/key-build.pub -O /etc/opkg/keys/b18c240cb821dad2
echo 'src/gz netify https://download.netify.ai/5/openwrt/19.07/x86' >> /etc/opkg/customfeeds.conf

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
opkg update
opkg install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
sudo rpm --import https://download.netify.ai/5/opensuse/15.5/stable/RPM-GPG-KEY-netify
sudo curl https://download.netify.ai/5/opensuse/netify.repo -o /etc/zypp/repos.d/repo-netify.repo

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
sudo zypper update
sudo zypper install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
sudo rpm --import https://download.netify.ai/5/almalinux/9/stable/RPM-GPG-KEY-netify
sudo curl https://download.netify.ai/5/almalinux/9/netify.repo -o /etc/yum.repos.d/netify.repo

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
sudo apt update
sudo apt install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
sudo rpm --import https://download.netify.ai/5/almalinux/8/stable/RPM-GPG-KEY-netify
sudo curl https://download.netify.ai/5/almalinux/8/netify.repo -o /etc/yum.repos.d/netify.repo

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
sudo apt update
sudo apt install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
sudo rpm --import http://download.netify.ai/5/rockylinux/9/stable/RPM-GPG-KEY-netify
sudo curl https://download.netify.ai/5/rockylinux/9/netify.repo -o /etc/yum.repos.d/netify.repo

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
sudo yum update
sudo yum install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
sudo rpm --import http://download.netify.ai/5/rockylinux/8/stable/RPM-GPG-KEY-netify
sudo curl https://download.netify.ai/5/rockylinux/8/netify.repo -o /etc/yum.repos.d/netify.repo

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
sudo yum update
sudo yum install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
mkdir -p /usr/local/etc/pkg/fingerprints/Netify/trusted
curl https://download.netify.ai/5/opnsense/fingerprint -o /usr/local/etc/pkg/fingerprints/Netify/trusted/fingerprint
cat << EOF >  /usr/local/etc/pkg/repos/Netify.conf
Netify: {
  fingerprints: "/usr/local/etc/pkg/fingerprints/Netify",
  url: "https://download.netify.ai/5/opnsense/25.7",
  signature_type: "fingerprints",
  mirror_type: "http",
  priority: 11,
  enabled: yes
}
EOF

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
pkg update
pkg install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
mkdir -p /usr/local/etc/pkg/fingerprints/Netify/trusted
curl https://download.netify.ai/5/opnsense/fingerprint -o /usr/local/etc/pkg/fingerprints/Netify/trusted/fingerprint
cat << EOF >  /usr/local/etc/pkg/repos/Netify.conf
Netify: {
  fingerprints: "/usr/local/etc/pkg/fingerprints/Netify",
  url: "https://download.netify.ai/5/opnsense/24.7",
  signature_type: "fingerprints",
  mirror_type: "http",
  priority: 11,
  enabled: yes
}
EOF

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
pkg update
pkg install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
mkdir -p /usr/local/etc/pkg/fingerprints/Netify/trusted
curl https://download.netify.ai/5/freebsd/fingerprint -o /usr/local/etc/pkg/fingerprints/Netify/trusted/fingerprint
cat << EOF >  /usr/local/etc/pkg/repos/Netify.conf
Netify: {
  fingerprints: "/usr/local/etc/pkg/fingerprints/Netify",
  url: "https://download.netify.ai/5/freebsd/15.0",
  signature_type: "fingerprints",
  mirror_type: "http",
  priority: 11,
  enabled: yes
}
EOF

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
pkg update
pkg install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
mkdir -p /usr/local/etc/pkg/fingerprints/Netify/trusted
curl https://download.netify.ai/5/freebsd/fingerprint -o /usr/local/etc/pkg/fingerprints/Netify/trusted/fingerprint
cat << EOF >  /usr/local/etc/pkg/repos/Netify.conf
Netify: {
  fingerprints: "/usr/local/etc/pkg/fingerprints/Netify",
  url: "https://download.netify.ai/5/freebsd/14.0",
  signature_type: "fingerprints",
  mirror_type: "http",
  priority: 11,
  enabled: yes
}
EOF

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
pkg update
pkg install netify-sink-mqtt

Step 2 - Add Netify's package signing key and repository:

Terminal - Netify
×
mkdir -p /usr/local/etc/pkg/fingerprints/Netify/trusted
curl https://download.netify.ai/5/freebsd/fingerprint -o /usr/local/etc/pkg/fingerprints/Netify/trusted/fingerprint
cat << EOF >  /usr/local/etc/pkg/repos/Netify.conf
Netify: {
  fingerprints: "/usr/local/etc/pkg/fingerprints/Netify",
  url: "https://download.netify.ai/5/freebsd/14.0",
  signature_type: "fingerprints",
  mirror_type: "http",
  priority: 11,
  enabled: yes
}
EOF

Step 3 - Install Netify Sink MQTT:

Terminal - Netify
×
pkg update
pkg install netify-sink-mqtt

Setup

All plugins are disabled by default, and the Netify Sink MQTT plugin is no different. Use the --enable-plugin and --disable-plugin parameters to enable/disable the plugin:

Terminal - Netify
×
netifyd --enable-plugin sink-mqtt
netifyd --disable-plugin sink-mqtt

Alternatively, you can edit /etc/netifyd/plugins.d/10-netify-sink-mqtt.conf and set enable to yes.

Terminal - Netify
×
[sink-mqtt]
enable = yes
plugin_library = /usr/lib64/libnetify-sink-mqtt.so.0.0.0
conf_filename = ${path_state_persistent}/netify-sink-mqtt.json

Configuration

Once the plugin has been enabled, it can be configured using the defined JSON configuration file specified in the plugin loader configuration. Let's look at a configuration sample to review the syntax and parts of the file.

host

string

MQTT server hostname or IP.

port

integer

Port used to establish communication with the MQTT server.

Default
1883

user

string

Username to authenticate with to the MQTT server.

pass

string

Password to authenticate with to the MQTT server.

topic

string

Topic to publish messages to the queue.

message_qos

integer

An agreement between the message sender and receiver that defines the level of delivery guarantee for a specific message.

Default
1
Options
0, 1, 2

message_retain

boolean

Sending retained messages mitigates uncertainty regarding message publication. By setting this value to true, subscribers can stay informed about the current state, even during periods of inactivity.

Default
false

Example MQTT Plugin Configuration

{
    "host": "mq.example.com",
    "port": 1883,
    "user": "nobody",
    "pass": "secret",
    "topic": "netify/${channel}/${uuid_agent}",
    "message_qos": 1,
    "message_retain": false
}

Telemetry

With one or more sink outputs configured to receive data, the final step is to configure the agent to send telemetry.

Get Telemetry