Fanout Drivers
NetXMS can forward collected data to external time-series databases using fanout drivers. This allows you to maintain NetXMS as the primary monitoring and alerting system while sending a copy of collected metrics to external storage for long-term retention, advanced analytics, or integration with other tools.
Overview
Fanout drivers operate at the data collection level. When a DCI value is collected, it is stored in the NetXMS database and simultaneously forwarded to all configured external databases.
Supported Backends
| Backend | Description |
|---|---|
InfluxDB |
InfluxData InfluxDB time-series database |
ClickHouse |
ClickHouse columnar database (available since version 5.2) |
InfluxDB Integration
Enabling the Driver
Add the following line to the server configuration file (netxmsd.conf):
PerfDataStorageDriver=influxdb
Driver parameters are specified in the [InfluxDB] section of the same file.
Configuration Parameters
| Parameter | Description |
|---|---|
|
InfluxDB server hostname. Default: |
|
InfluxDB port number. Default: |
|
Connection protocol: |
|
Database name (v1). Default: |
|
Bucket name (v2). |
|
Organization name (v2). |
|
Authentication token (v2). |
|
User name (v1). |
|
Password (v1). |
|
Also read tag/ignore custom attributes from the DCI’s template. Default: |
|
Enable unsigned data type. If disabled, unsigned values are sent as signed. Default: |
|
Maximum time in ms before cache is flushed. Default: |
|
Cache will be flushed when reaching this size in bytes. Default: |
|
Number of queues for parallel operation (1-32). Default: |
|
Upper limit on queue size in bytes; data is dropped if exceeded. Default: |
|
Validate values according to DCI data type, drop invalid values. Default: |
|
If both ValidateValues and CorrectValues are true, correct invalid values instead of dropping them. Default: |
Configuration Example
PerfDataStorageDriver=influxdb
[InfluxDB]
Protocol=api-v2
Organization=netxms
Bucket=netxms
Token=your-influxdb-token
Details of Operation
The measurement name is derived from the DCI metric name (except for SNMP, Modbus, and internal "Dummy" DCIs where description is used); the field key is always the literal value.
The name is lowercased and trimmed, everything from the first ( is cut off, space characters are removed, :-.,# characters are replaced with _, and \\ is replaced with /.
Empty DCI values are not sent.
If a custom attribute named ignore_influxdb or pds:ignore (with any value) exists on the node or the DCI’s related object, the data is excluded from export.
With UseTemplateAttributes enabled, the same attributes on the DCI’s template are honored as well.
Custom attributes with names starting with tag: or tag_ are used as InfluxDB tags (the prefix is stripped from the name).
ClickHouse Integration
Enabling the Driver
Add the following line to netxmsd.conf:
PerfDataStorageDriver=clickhouse
Driver parameters are specified in the [ClickHouse] section.
Connection Parameters
| Parameter | Description |
|---|---|
|
ClickHouse server hostname or IP. Default: |
|
ClickHouse HTTP API port. Default: |
|
Use HTTPS instead of HTTP. Default: |
|
Target database name. Default: |
|
Target table name. Default: |
|
ClickHouse username. Empty by default. |
|
ClickHouse password. Empty by default. |
Queue Parameters
| Parameter | Description |
|---|---|
|
Number of parallel sender threads (1-32). Default: |
|
Number of messages to accumulate before flushing. Default: |
|
Maximum time in ms before flushing partial queue. Default: |
|
Maximum messages per queue; excess is dropped. Default: |
Data Processing Parameters
| Parameter | Description |
|---|---|
|
Do not send string-type metrics. Default: |
|
Enable unsigned integer types. Default: |
|
Validate values by DCI data type; drop invalid. Default: |
|
Correct invalid values instead of dropping. Default: |
|
Extract tags from template object custom attributes. Default: |
Column Configuration
Column names in the target table can be customized.
Setting a column name to none disables it (except mandatory columns: timestamp, host, name).
Default columns: timestamp (DateTime), host (String), name (String), ivalue (Int64), fvalue (Float64), instance (String), data_type (String), data_source (String), delta_type (String), tags (Map(String, String)).
User-defined columns can be added using Column.AdditionalData parameter (up to 16).
Configuration Example
PerfDataStorageDriver=clickhouse
[ClickHouse]
Hostname=clickhouse.example.com
Port=8123
Database=netxms
Table=metrics
User=netxms
Password=your-clickhouse-password
Queues=4
QueueFlushThreshold=500
Column.AdditionalData=environment:String
Column.AdditionalData=region:String
Example Table Schema
CREATE DATABASE IF NOT EXISTS netxms;
CREATE TABLE netxms.metrics
(
timestamp DateTime,
host String,
name String,
ivalue Int64,
fvalue Float64,
instance String,
data_type String,
data_source String,
delta_type String,
tags Map(String, String),
environment String,
region String
) ENGINE = MergeTree()
ORDER BY (host, name, timestamp);
Details of Operation
Metric name is taken from DCI metric name, except for SNMP, Modbus, and internal "Dummy" DCIs where description is used.
Tags and column values are extracted from custom attributes on: template objects (if UseTemplateAttributes is true), host (node) objects, and related objects.
Custom attributes with names starting with tag: or tag_ are added as tags.
Custom attributes starting with column: populate corresponding user-defined columns.
If a custom attribute named pds:ignore or ch:ignore exists on any of these objects, the metric is not sent.
Driver statistics are available on the management server node via the internal metric Server.PDS.DriverStat(ClickHouse, <metric>), where <metric> is one of senders, overflowQueues, messageDrops, queueSize.
Troubleshooting
No Data in External Database
-
Verify
PerfDataStorageDriveris set innetxmsd.confand the server was restarted -
Check server logs for driver initialization and connection errors
-
Verify network connectivity from NetXMS server to the external database
-
Check authentication credentials
-
Verify the target database/table exists
Next Steps
-
Data Collection Concepts — how data is collected and stored
-
Grafana Integration — visualizing data from InfluxDB or ClickHouse in Grafana
-
External Tools Integration — other ways to use NetXMS data externally