Netify Agent Plugins

Netify plugins extend the agent pipeline with processing and output capabilities. This page outlines plugin types, compatibility guidance, installation considerations, and loader/configuration fundamentals.

Installation

Plugin installation steps depend on environment, packaging source, and licensing. Every plugin has a dedicated installation section with specific instructions. This document provides a high-level view of plugin configurations as well as the advanced topic of running more than one instance of a plugin.

Plugin Types

There are two types of Netify plugins:

Processor Plugins
Processor plugins can access Netify Agent internal flow state and execute processing actions that generate specific telemetry structures. Processor plugins are often linked to a sink plugin so those structures can be delivered locally or remotely.
Sink Plugins
Sink plugins act as output mechanisms that transport or store telemetry produced by processor plugins.

Agent Version Compatibility

Netify plugins must adhere to version compatibility (similar to an Application Binary Interface, ABI). To avoid ABI issues:

  • Use versions from the same source (for example: repository or private download)
  • If building from source, use the latest tagged stable release across agent and plugin projects
  • Follow guidance from the Netify project and developer teams

Incompatible plugins usually become apparent after upgrades when expected functionality stops working. To confirm, use the -V flag. Any plugin version showing ?.?.? is incompatible with the running agent and should be upgraded or downgraded.

Terminal - Netify
×
$ sudo netifyd -V
...
Sink plugins:

 sink-http: 1.0.35
    /etc/netifyd/netify-sink-http.json
    /usr/lib64/libnetify-sink-http.so.0.0.0
 sink-log: 1.0.33
    /etc/netifyd/netify-sink-log.json
    /usr/lib64/libnetify-sink-log.so.?.?.?

Plugin Loader

Every plugin has a loader configuration file in /etc/netifyd/plugins.d . Removing the loader file disables loading completely, but this is usually too heavy-handed. A better approach is setting the plugin to disabled in the file, or renaming the file extension to something other than .conf so the agent does not initialize it.

Loader filenames are prefixed with a two-digit numeric order value, for example: 10-netify-sink-log.conf . This prefix determines plugin load order. The loader structure is consistent across plugins. Example Netify Sink Log loader:

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

Line 1, [sink-log] , defines the section (tag) name. This tag must be unique and can be used to chain plugins. For example, the Netify Core processor references sink tags in plugin configuration to route telemetry structures.

Failure to define unique tags will cause the agent to fail to start.

Line 2, enable , controls whether the plugin is loaded. You can toggle this from the command line:

Terminal - Netify
×
netifyd --enable-plugin netify-sink-log       # Enables plugin
netifyd --disable-plugin netify-sink-log      # Disables plugin

Line 3, plugin_library , defines the shared object library path. In most deployments this remains unchanged.

Line 4, conf_filename , tells the loader which plugin configuration file to use for that specific tag.

You can instantiate multiple instances of the same plugin in two ways. First, create separate loader files with unique tags:

Filename: /etc/netifyd/plugins.d/10-netify-sink-log.conf

[sink-log-temp-dir]
enable = yes
plugin_library = /usr/lib64/libnetify-sink-log.so.0.0.0
conf_filename = ${path_state_persistent}/netify-sink-temp-log.json

Filename: /etc/netifyd/plugins.d/20-netify-sink-log.conf

[sink-log-root-dir]
enable = yes
plugin_library = /usr/lib64/libnetify-sink-log.so.0.0.0
conf_filename = ${path_state_persistent}/netify-sink-root-log.json

Note that the tag names are unique and each one points to a different configuration file.

Alternatively, place multiple tag sections in one loader file:

Filename: /etc/netifyd/plugins.d/00-netify-sink-log.conf

[sink-log-temp-dir]
enable = yes
plugin_library = /usr/lib64/libnetify-sink-log.so.0.0.0
conf_filename = ${path_state_persistent}/netify-sink-temp-log.json

[sink-log-root-dir]
enable = yes
plugin_library = /usr/lib64/libnetify-sink-log.so.0.0.0
conf_filename = ${path_state_persistent}/netify-sink-root-log.json

Every loader instance uses its own configuration file via conf_filename . For plugin-specific options, refer to each plugin’s configuration section, for example: Sink Log configuration.