External Tools Integration
NetXMS data can be consumed by external tools, dashboards, and analytics platforms. This page describes methods for making NetXMS monitoring data available to third-party applications.
Data Access Methods
| Method | Best For |
|---|---|
Programmatic access from scripts and applications |
|
Visualization in Grafana dashboards |
|
Continuous data replication to InfluxDB or ClickHouse |
|
Ad-hoc queries and bulk operations via Python |
|
Direct Database Access |
Custom SQL queries against the NetXMS database |
Direct Database Access
For advanced analytics and custom reporting, you can query the NetXMS database directly.
| Direct database access is read-only. Never modify data in the NetXMS database directly — use the API or management console instead. |
Common Database Tables
| Table | Content |
|---|---|
|
Node objects and their properties (IP, platform, agent version, status) |
|
Network interface configuration |
|
General properties for all object types (name, status, comments) |
|
Custom attributes assigned to objects |
|
Historical DCI data. The layout depends on the installation: a single |
|
Historical table DCI data (same layout variants) |
|
Active and historical alarm records |
|
Event history with parameters |
|
SNMP trap history |
|
Summary table definitions |
Example Queries
Node inventory:
SELECT n.id, op.name, n.primary_ip,
n.platform_name, n.agent_version
FROM nodes n
JOIN object_properties op ON n.id = op.object_id
WHERE op.is_deleted = 0
ORDER BY op.name;
Active alarms summary by severity:
SELECT
CASE current_severity
WHEN 0 THEN 'Normal'
WHEN 1 THEN 'Warning'
WHEN 2 THEN 'Minor'
WHEN 3 THEN 'Major'
WHEN 4 THEN 'Critical'
END AS severity,
COUNT(*) AS count
FROM alarms
WHERE (alarm_state & 15) < 2
GROUP BY current_severity
ORDER BY current_severity DESC;
The mask is needed because sticky acknowledgement sets an extra bit in alarm_state (a sticky-acknowledged alarm has state 17); comparing the raw value would miss such alarms.
Connection Examples
PostgreSQL:
psql -h db-host -U netxms -d netxms_db \
-c "SELECT op.name, primary_ip FROM nodes n JOIN object_properties op ON n.id = op.object_id"
MySQL:
mysql -h db-host -u netxms -p netxms_db \
-e "SELECT op.name, primary_ip FROM nodes n JOIN object_properties op ON n.id = op.object_id"
Push Data into NetXMS
External tools can push data into NetXMS through several mechanisms.
Push DCIs via nxapush
The nxapush command-line tool sends data to NetXMS DCIs via the local agent:
nxapush DCI_Name=value
Multiple values can be pushed at once:
nxapush DCI_One=42 DCI_Two=100
This requires:
-
A DCI configured with the Push origin type on the target node
-
The
nxapushtool installed (part of the NetXMS agent distribution) -
A running NetXMS agent on the same host
Push DCIs via nxpush
The nxpush command-line tool sends values directly to the server, without requiring a local agent:
nxpush -H server_address -u user -P password node_name:DCI_Name=value
Node and DCI can be specified by ID or object name; to specify the node by DNS name or IP address, prefix it with @.
Generate External Events
External tools can send events to NetXMS using nxevent:
nxevent -u admin -P password server_address EVENT_NAME "param1"
The built-in web API has no endpoints for pushing DCI values or injecting events — use the command-line tools above. Other integration needs (querying objects, alarms, and collected data) are covered by the web API with Bearer token authentication; see REST API.
Webhook Integration
NetXMS can send webhook notifications to external systems when alarms or events occur. This is configured through notification channels:
-
Create a notification channel with the Webhook driver
-
Configure the driver:
URL,Method(POST, PUT, or PATCH),ContentType,TemplateFile(path to a file containing the request body template), optional[Headers]section, and success/retry criteria (SuccessHttpCodes,RetryHttpCodes,SuccessJsonPathtogether withSuccessValue—SuccessValueis mandatory wheneverSuccessJsonPathis set, otherwise the channel fails to start) -
Use the channel in EPP rules via notification actions
The body template file supports only the ${recipient}, ${subject}, and ${body} placeholders; %-style event macros are not expanded in the template and appear verbatim.
Macro expansion happens in the EPP action’s message text, which is delivered to the template as ${body}:
{"recipient": "${recipient}", "subject": "${subject}", "message": "${body}"}
See Notifications and Notification Drivers Reference for details.
See Notifications for notification channel configuration.
Integration Patterns
CMDB Synchronization
Synchronize NetXMS object data with a Configuration Management Database:
-
Use the REST API or NXShell to export node inventory data
-
Map NetXMS object properties to CMDB fields
-
Schedule periodic synchronization via cron or a scheduled task
-
Use custom attributes in NetXMS to store CMDB references (CI ID)
ChatOps (Slack, Teams, Telegram)
Integrate NetXMS alarms with chat platforms:
-
Configure a notification channel with the appropriate driver (Telegram, Slack webhook)
-
Create EPP rules that send alarm notifications to chat channels
-
Use the REST API to build a chatbot that queries NetXMS data
NetXMS includes built-in notification channel drivers for Telegram and Slack.
Next Steps
-
REST API — detailed API reference
-
NXShell — Python scripting for NetXMS
-
Fanout Drivers — continuous data replication
-
Notifications — notification channels for external systems