Reporting

NetXMS includes a reporting engine that generates scheduled or on-demand reports from monitoring data. Reports are rendered as PDF or Excel files and can be automatically distributed via email.

Architecture

The reporting subsystem consists of:

  • Reporting server (nxreportd) — a Java-based service, based on JasperReports, that processes report definitions and generates output

  • Report definitions — report packages that define report layout and data queries; most are JasperReports templates, but a definition may instead use the Carbone renderer (see below)

  • NetXMS server integration — the NetXMS server connects to nxreportd on port 4710 and pushes its configuration (database credentials, email settings); report scheduling and execution requests are relayed over this connection

The reporting server connects directly to the NetXMS database to query monitoring data, using the database credentials pushed by the NetXMS server.

Installation

On Linux, nxreportd is not part of the server package — install the separate netxms-reporting package (deb/rpm).

Prerequisites

  • Java Runtime Environment (JRE) 11 or later

  • Access to the NetXMS database from the host running nxreportd

Enabling the Reporting Server

  1. Set the server configuration variable ReportingServer.Enable to true (requires server restart). The NetXMS server connects to the reporting server at the address defined by ReportingServer.Hostname (default 127.0.0.1) and ReportingServer.Port (default 4710). Related server configuration variables: ReportingServer.ResultsRetentionTime sets how long generated report results are kept (90 days by default), and ReportingServer.JDBC.Properties passes additional JDBC driver properties for the reporting server’s database connection.

  2. Start the netxms-reporting service:

systemctl enable netxms-reporting
systemctl start netxms-reporting

The systemd unit is netxms-reporting.service; nxreportd exists only as an alias created when the service is enabled.

Configuration

The reporting server loads nxreportd.properties (Java properties format) from the classpath. JVM system properties override values from the file; the service launcher passes -Dnxreportd.workspace and -Dnxreportd.bindir.

Parameter Description

netxms.server.hostname

Hostname of the NetXMS server to connect to as a client

netxms.server.login

Login for the NetXMS server connection

netxms.server.password

Password for the NetXMS server connection

nxreportd.workspace

Directory for report definitions, output, and temporary files. Default: nxreportd folder in the state directory

nxreportd.bindAddress

Address the reporting server listens on for connections from the NetXMS server (default: localhost)

nxreportd.logfile

Log file location

nxreportd.resultsRetentionTime

How long generated report results are kept, in days; overrides the value pushed by the NetXMS server

nxreportd.carbone.launcher

Path to the external launcher executable used to render Carbone reports

nxreportd.bindir

Directory where the Carbone launcher is looked up when nxreportd.carbone.launcher is not set (set by the service launcher)

The listener port is fixed at 4710 and cannot be changed. Database credentials do not need to be configured — they are pushed by the NetXMS server when it connects.

Managing Reports

Report Library

Reports are executed and scheduled through the Reporting perspective in the management console, which lists all reports deployed on the reporting server.

Uploading Report Definitions

Report definitions are deployed as report packages (.jar or .zip files) containing the compiled report and its metadata:

  1. Open the Report Definitions view in the Configuration perspective

  2. Select Upload…​ and choose the report package file

The report name and parameters are read from the package — no additional metadata needs to be entered.

Running a Report

  1. Open the Reporting perspective

  2. Select a report from the library

  3. Configure report parameters (date range, objects, filters)

  4. Execute the report

  5. The generated result appears in the Results section of the report view

The available parameter types are described in Reports in the User Guide.

Scheduling Reports

Reports can be scheduled for automatic generation:

  1. Select a report in the Reporting perspective

  2. Fill in the report parameters in the report form — scheduled executions use the parameter values as they are set at the moment of scheduling

  3. Select Schedule report execution…​

  4. On the General page, choose One time or Recurrent execution; recurrence presets include every N minutes, hourly, daily, weekly, monthly, and a custom cron expression

  5. On the Notifications page, configure email recipients for completed reports

  6. Save the schedule

Scheduled reports are processed by the reporting server and results are stored for download or emailed to configured recipients.

Report Definitions

NetXMS does not ship with any report definitions. Report bundles are provided separately and are uploaded through the management console as described above.

Custom Reports

Creating Custom Report Definitions

Custom reports are built using JasperReports:

  1. Design the report in Jaspersoft Studio or a compatible IDE

  2. Use SQL queries against the NetXMS database schema

  3. Use the NetXMS database schema documentation for table and column references

  4. Package the compiled report as a report package and upload it through the management console

Carbone Reports

A report definition may use the Carbone renderer instead of the standard JasperReports renderer: setting the org.netxms.reporting.useCarbone property in the report definition marks it as Carbone-based. Carbone reports are rendered as XLSX only, by an external launcher process: its path is set with the nxreportd.carbone.launcher property, or the launcher is located automatically in the directory given by nxreportd.bindir.

Common Database Tables for Reports

Table Content

nodes

Node objects and properties

interfaces

Interface objects

idata_*

Historical DCI values (one table per node in the classic storage layout; TimescaleDB uses one hypertable per storage class: idata_sc_default, idata_sc_7, idata_sc_30, idata_sc_90, idata_sc_180)

alarms

Alarm records

event_log

Event history

snmp_trap_log

SNMP trap history

Report Design Tips

  • Use parameterized queries to limit data by date range and object scope

  • Include the report generation timestamp and parameter values in the header

  • Use subreports for complex layouts with multiple data sections

  • Test queries against the NetXMS database before embedding in report definitions

Email Distribution

Reports can be automatically emailed to recipients when generation completes. Email settings are not configured on the reporting server: the NetXMS server reads the configuration of its SMTP notification channel (the channel named by the DefaultNotificationChannel.SMTP.Text server configuration variable, SMTP-Text by default) and pushes it to nxreportd.

  1. Ensure the SMTP notification channel is configured on the NetXMS server

  2. When scheduling a report, add email recipients in the notification settings

  3. Generated reports are attached as PDF or Excel files

Troubleshooting

Reporting Server Not Connecting

  • Verify the reporting server is running: systemctl status netxms-reporting

  • Verify ReportingServer.Enable is set to true and the server was restarted afterwards

  • Check ReportingServer.Hostname and ReportingServer.Port — they must point to the host running nxreportd

  • If nxreportd runs on a different host, set nxreportd.bindAddress so the listener accepts remote connections (default is localhost)

  • Check the reporting server log for connection errors

Report Generation Fails

  • Check the reporting server logs for detailed error messages

  • Verify the report package is valid

  • Test database queries independently

  • Check disk space in the workspace directory

Empty Reports

  • Verify query parameters match existing data (correct date range, valid object IDs)

  • Check that DCIs are collecting data for the specified time period

  • Test the SQL query directly against the database

Next Steps