Netxms Admin
Netxms Admin
Netxms Admin
Release 3.8.267
1 Introduction 1
2 Concepts 3
3 Installation 11
4 Upgrade 31
5 Quick start 37
6 Agent management 49
7 Server management 67
8 SNMP 75
9 User management 85
10 Object management 97
i
23 Database monitoring 265
36 Reporting 335
41 Scripting 377
42 Appendix 381
43 Glossary 457
Index 461
ii
CHAPTER
ONE
INTRODUCTION
1.2 Conventions
Sample Description
Button Any GUI element: Button, Menu item
Another Guide Reference to external manual or man page
Control-M Keyboard shortcut
DCI Term which could be found in glossary
File → Exit Menu selection path, you must click on File, then Exit
1
NetXMS Administrator Guide, Release 3.8.267
1.2.1 Changelog
2 Chapter 1. Introduction
CHAPTER
TWO
CONCEPTS
The system has three-tier architecture: the information is collected by monitoring agents (either our own high-
performance agents or SNMP agents) and delivered to monitoring server for processing and storage. Network ad-
ministrator can access collected data using cross-platform Management Console (Rich Console), Web Interface (Web
console) or Management Console for Android. Rich and Web console have almost the same functionality and the
same user interface.
3
NetXMS Administrator Guide, Release 3.8.267
2.2 Objects
All monitored network infrastructure is represented as a set of objects in NetXMS monitoring system. Each object
represents one physical or logical entity (e.g. host or network interface), or group of them (e.g. subnet, container).
Objects are organized into hierarchical structure. Each object has it’s own access rights. Access rights are applied
hierarchically on all children of object. For example if Read access right is granted to a user on a Container, then
user has Read right on all objects that this Container contains. Every object has set of attributes; some of them exist
for all objects (like id and name or status), while other depend on object class – for example, only Node objects have
attribute SNMP community string. There are default attributes and custom attributes defined either by user or external
application via NetXMS API.
NetXMS has six top level objects – Entire Network, Service Root (named “Infrastructure Services” after
system installation), Template Root, Network Map Root, Dashboard Root and Business Service
Root. These objects serve as an abstract root for an appropriate object tree. All top level objects have only one
editable attribute – name.
4 Chapter 2. Concepts
NetXMS Administrator Guide, Release 3.8.267
2.2. Objects 5
NetXMS Administrator Guide, Release 3.8.267
Network Map Root Abstract object representing root of your network map
tree. • Network Map
• Network Map Group
Node Link Link between node object and business service. Used to
simplify creation of node-related service checks. • Service Check
Service Check Object used to check business service state. One busi-
ness service can contain multiple checks.
6 Chapter 2. Concepts
NetXMS Administrator Guide, Release 3.8.267
Objects can be unmanaged. In this status object is not polled, DCIs are not collected, no data is updated about object.
This status can be used to store data about an object that is temporary or permanently unavailable or not managed.
This is special status, that’s why it is not included in above status list. This status prevents event processing for specific
node. While this node in maintenance mode is still polled and DCI data is still collected, but no event is generated.
2.2. Objects 7
NetXMS Administrator Guide, Release 3.8.267
NetXMS is event based monitoring system. Events can come from different sources (polling processes (status, con-
figuration, discovery, and data collection), SNMP traps, and directly from external applications via client library). All
events all are forwarded to NetXMS Event Queue.
NetXMS Event Processor can process events from Event Queue in either sequential or parallel mode. In sequential
mode events are processed one-by-one. Parallel processing mode allows to process events in several parallel threads,
thus increasing processing performance. See Event processing for more information.
Events in the Event Queue are processed according to rules defined in Event Processing Policy. As a result of event
processing, preconfigured actions can be executed, and/or event can be shown up as alarm.
Usually alarm represents something that needs attention of network administrators or network control center operators,
for example low free disk space on a server. NetXMS provides one centralized location, the Alarm Browser, where
alarms are visible. It can be configured which events should be considered important enough to show up as alarm.
2.4 Polling
For some type of objects NetXMS server start gathering status and configuration information as soon as they are added
to the system. These object types are: nodes, access points, conditions, clusters, business services, zones (if a zone has
more then one proxy, proxy health check is being performed). This process called polling. There are multiple polling
types, usually performed with different intervals:
8 Chapter 2. Concepts
NetXMS Administrator Guide, Release 3.8.267
Type Purpose
Status Determine current status of an object
ICMP Ping nodes and gather response time statistics
Configuration Determine current configuration of an object (list of interfaces, supported protocols, etc.)
Topology Gather information related to network topology
Routing Gather information about IP routing
Instance Discovery Verify all DCIs created by instance discovery process
Network Discov- Searches for new nodes by polling information about neighbor IP addresses from known
ery nodes
From each node NetXMS can collect one or more metrics which can be either single-value (e.g. “CPU.Usage”),
list (e.g. “FileSystem.MountPoints”) or table (e.g. “FileSystem.Volumes”). When new data sample is collected, it’s
value is checked against configured thresholds. This documentation use term Data Collection Item (DCI) to describe
configuration of metric collection schedule, retention, and thresholds.
Metrics can be collected from multiple data sources:
Source Description
Internal Data generated inside NetXMS server process (server statistics, etc.)
NetXMS Agent Data is collected from NetXMS agent, which should be installed on target node.
Server collect data from agent based on schedule.
SNMP SNMP transport will be used. Server collect data based on schedule.
Web service Data is objained from JSON, XML, or plain text retrieved via HTTP
Push Values are pushed by external system (using nxpush or API) or from NXSL
script.
Windows Performance counters Data is collected via NetXMS agent running on Windows machine.
Script Value is generated by NXSL script. Script should be stored in Script Library.
SSH Data is obtained from output of ssh command executed through SSH connec-
tion.
MQTT Data is obtained by subcribing to MQTT broker topics.
Network Device Driver Some SNMP drivers (NET-SNMP, RITTAL as of NetXMS v. 3.8) provide pa-
rameters for data collection. E.g. NET-SNMP provides information about stor-
age this way.
2.6 Discovery
NetXMS can detect new devices and servers on the network and automatically create node objects for them. Two
modes are available – passive and active.
In passive mode server will use only non-intrusive methods by querying ARP and routing tables from known nodes.
Tables from the server running NetXMS are used as seed for passive discovery.
In active mode in addition to passive scan methods configured address ranges are periodically scanned using ICMP
echo requests.
NetXMS can also use SNMP trap and syslog messages as seed for discovery.
NetXMS can create parameters for Data Collection Item automatically. Instance discovery collects information about
node instances like disk mountpoints, device list, etc. and automatically creates or removes DCIs with obtained data.
2.7 Security
All communications are encrypted using either AES-256, AES-128, or Blowfish and authenticated. As additional
security measure, administrator can restrict list of allowed ciphers.
Agent authenticate incoming connections using IP white list and optional preshared key.
User passwords (if internal database is used) as hashed with salt with SHA-256.
All shared secrets and passwords stored in the system can be obfuscated to prevent snooping.
10 Chapter 2. Concepts
CHAPTER
THREE
INSTALLATION
3.1.1 3.0
Notification channels introduced as new functionality. SMS configuration automatically moved from server configu-
ration to notification channel depending on old driver with one of next names: AnySMS, DBTable, Dummy, GSM,
Kannel, MyMobile, Nexmo, NXAgent, Portech, Slack, SMSEagle, Text2Reach, WebSMS. No manual actions re-
quired.
Flags and dynamic flags moved to NetObject class. Separated node flags set by user and capability flags set by system
to flags and capabilities. Numeric values for flags, capabilities and dynamic flags were changed. Will affect only
NXSL scripts that checked those flags directly.
32 bit version of management console is not available any more.
Agent always requires encryption unless RequireEncryption parameter explicitly set to off. Might be required to
manually add “RequireEncryption” configuration parameter where required to disable encryption.
Agent policies were merged with templates. Each policy was converted to template. No changes required.
3.1.2 3.1
Regexp matching operation in NXSL returns array with capture groups or NULL as result. NXSL objects and arrays
in logical expressions are evaluated to TRUE. Might be require some NXSL script adjustments.
3.1.3 3.5
External Metrics (ExternalParameter, etc. . . ) expect UTF-8 encoding on Windows. Might need to adjust scripts called
by external metrics if non-ASCII characters are returned.
11
NetXMS Administrator Guide, Release 3.8.267
3.1.4 3.6
In this version “Certificate manager” was removed from server. All CA certificates configuration should be manually
moved to “TrustedCertificate” configuration parameter in server configuration file.
3.1.5 3.7
Introduced boolean type in NXSL. Comparisons like “func() == 1”, where ‘func’ is a function that returns boolean
type, will always result as false as boolean value ‘true’ is not equal to 1. Might require fixes in some NXSL scripts.
Regexp matching operation in NXSL returns array with capture groups or false as a result.
Clusters now have configuration poll. If you have configuration poll hook script that is referring to $node object,
this will produce error message in server log each time a configuration poll runs on a cluster. Replace $node with
$object or use condition if (classof($object) == "Node") or if ($node != null) prior to ac-
cessing attributes or methods of $node.
3.1.6 3.8
3.2 Planing
Both NetXMS server and agent works fine on most operating systems, including Windows, Linux, and commercial
UNIXes. However, we test and officially support only some of them.
Supported platforms for NetXMS server and agent:
• Debian 9 (Stretch), 10 (Buster)
• Ubuntu 16.04 LTS (Xenial), 18.04 LTS (Bionic), 20.04 LTS (Focal Fossa)
• Linux Mint 19.3 (Tricia), Linux Mint Debian Edition 4
• Devuan ASCII
• Red Hat Enterprise Linux 8
• CentOS 8
• Windows 10, Windows Server 2016, 2019
• FreeBSD 12
• ArchLinux (Latest)
• AlpineLinux 3.8+
• Raspbian Buster
Support for the following platforms provided only to customers with active support contract:
• Debian 8 (Jessie)
• Ubuntu 14.04 LTS
• Devuan Jessie
12 Chapter 3. Installation
NetXMS Administrator Guide, Release 3.8.267
Minimal requirements: Core 2 duo 1GHz, 1024MB RAM, 1GB disk space.
3.2.3 Database
3.2.4 Java
Java Runtime Environment (JRE) is needed for Desktop Management Console (nxmc) and for Web Management
Console. Supported Java version are 11 and 15.
Since version 3.8 Desktop Management Console with bundled JRE is provided for Windows.
3.2. Planing 13
NetXMS Administrator Guide, Release 3.8.267
3.2.5 Agent
We host public APT repository http://packages.netxms.org/ for all deb-based distributions (Debian, Ubuntu, Mint,
Raspbian, etc.). Packages are signed, and you’ll need to install additional encryption key for signature verification.
Two components are supported - “main” and “unstable”.
Supported URLs (CODENAME should be replaced with output of lsb_release -sc):
• Debian, LMDE - “deb http://packages.netxms.org/debian CODENAME main”
• Ubuntu, Mint - “deb http://packages.netxms.org/ubuntu CODENAME main”
• Devuan - “deb http://packages.netxms.org/devuan CODENAME main”
• Raspbian - “deb http://packages.netxms.org/raspbian CODENAME main”
There are two options to add APT repository: by hand or using netxms-release package. Use of the release package
is strongly encouraged because it allow easy change in repository configuration and encryption keys updated in the
feature.
Download and install netxms-release-latest.deb package, which contain source list file of the repository as well as
signing key.
wget http://packages.netxms.org/netxms-release-latest.deb
sudo dpkg -i netxms-release-latest.deb
sudo apt-get update
Manually
14 Chapter 3. Installation
NetXMS Administrator Guide, Release 3.8.267
Server
Server require two components to function - server itself (package “netxms-server”) and at least one database abstrac-
tion layer driver (multiple can be installed at the same time, e.g. for migration purposes). These database drivers are
also used by agent for database monitoring (performing queries to databases).
Provided driver packages:
• netxms-dbdrv-pgsql - PostgreSQL driver
• netxms-dbdrv-mariadb - Mariadb driver
• netxms-dbdrv-mysql - MySQL driver (not built for Ubuntu 20 / Mint 20)
• netxms-dbdrv-odbc - unixODBC driver (can be used with DB/2 and Microsoft SQL)
• netxms-dbdrv-oracle - Oracle driver
1. Instal required packages (adjust command to match your environment):
nxdbmgr init
1. Start server:
Agent
Install core agent package (“netxms-agent”) and optional subagent packages, if required:
Start agent
Management console
Due to limitation of Eclipse platform used to build the Management Console, only x64 build is provided.
1. Make sure you have 64-bit Java version 11 or 15 installed you your system.
2. Download the latest version from http://www.netxms.org/download. You will need Linux installer (named
nxmc-VERSION-linux-gtk-x64.tar.gz, for example nxmc-3.4.178-linux-gtk-x64.tar.gz).
3. Expand package to your preferred directory using command:
tar zxvf nxmc-VERSION-linux-gtk-x86.tar.gz -C /DESTINATION_DIRECTORY
4. Run nxmc file from “/DESTINATION_DIRECTORY”.
Desktop management console produces log file .nxmc/data/.metadata/.log in home folder of currently
logged user. Inspect this log file if you encounter errors when running the console.
NetXMS web interface is java based and should be deployed into servlet container to run. Minimal supported versions:
Jetty 9.3.28, Tomcat 8.5. Supported Java version is 11 or 15.
1. Install one of servlet containers that support servlet-api version 3.
2. Download latest version of WAR file from Web Interface Binaries section http://www.netxms.org/download/
(named nxmc-VERSION.war, for example nxmc-3.4.178.war).
3. Copy nxmc.war to webapps directory, in a few seconds it will be autodeployed and available at http://SERVER_
IP:SERVER_PORT/nxmc/
Tomcat default folder: /var/lib/tomcat9/webapps
Jetty default folder: $JETTY_HOME/webapps/
Web management console produces log file. For Tomcat it’s located at /var/lib/tomcat9/work/Catalina/
localhost/nxmc/eclipse/workspace/.metadata/.log. Inspect this log file if you encounter errors
when running the web console.
RPM packages are not released at the moment. Please refer to section Installing from source.
3.5.1 Server
1. Download the latest version from http://www.netxms.org/download. You will need Windows in-
staller (named netxms-VERSION-x64.exe, e.g. netxms-server-3.4.178-x64.exe). Please note that in
following steps VERSION will be used as a substitution for an actual version number.
2. Run the installer package on your server machine. Installation wizard will be shown. Follow the
prompts until the Select Components window opens.
16 Chapter 3. Installation
NetXMS Administrator Guide, Release 3.8.267
3. On the Select Components window, select NetXMS Server option and an appropriate database client
library. You do not have to install database client library from NetXMS package, if it is already
installed on the machine (however, it might be required to add folder where the client library is
installed to system path).
4. For a typical installation keep default settings on Select Additional Tasks window. Set hardened file
system permissions makes installation folder accessible only to members of Administrators group
and SYSTEM user.
• Select the desired database engine and driver. For most databases, you will have two drivers available
– native and ODBC. Please note that if you select ODBC, you will have to manually configure ODBC
source.
• Enter the name of database server or ODBC source.
• In DBA login name and DBA password fields, enter database administrator’s login name and pass-
word. You have to fill these fields only if you have chosen Create new database option.
• Enter the desired database name, database user name and password. If you are not using ODBC,
the wizard will create database and a user for you. If ODBC is used, database and user should be
created beforehand.
18 Chapter 3. Installation
NetXMS Administrator Guide, Release 3.8.267
MySQL note Bundled MySQL database drive does not support caching_sha2_password authenti-
cation which is default for MySQL starting from version 8. Either select Legacy Authentication
Method when installing MySQL, or use database driver installed along with MySQL. Database
driver gets installed when installing MySQL with Server-only option, however these two folders
should be included into system path: C:\Program Files\MySQL\MySQL Server 8.0\
lib C:\Program Files\MySQL\MySQL Server 8.0\bin.
Microsoft SQL note:
If you wish to use Windows authentication for database connectivity, use * (asterisk) as a login name
and leave the password field blank. If you specify asterisk as DBA login, user with which you are
logged in to Windows should have administrative rights to the database server. If you use asterisk as
DB login, you should run NetXMS Server service as a user with appropriate rights to the database.
Oracle note:
We recommend to use native database driver (oracle.ddr).
9. On the next window, enter address of your SMTP server. NetXMS will use it to send notification
e-mails.
10. Then next window will prompt you for logging method. Either check Event Log or select file, and
press the Next button.
11. Windows service configuration window will appear:
In most situations, you can run NetXMS server under Local System account. You may need to
run it under specific account if you are using Microsoft SQL database and Windows authenti-
cation, or for security reasons.
12. Windows service dependency window will appear:
If you have database engine running on same server, you can find it in service list and mark,
so NetXMS server’s service will depend on database service and service startup order will be
correct.
13. Follow the prompts until server configuration will be complete. After successful server configuration,
installation will be finished, and you will have NetXMS server up and running.
Server default credentials:
Login: admin
Password: netxms
3.5.2 Agent
1. Download the latest version from http://www.netxms.org/download, if you don’t have it. You will need Win-
dows Agent installer (named nxagent-VERSION.exe or nxagent-VERSION-x64.exe, for example nxagent-
3.4.178.exe).
2. Run the installer package on target server. Installation wizard will be shown. Follow the prompts until the
NetXMS Server window opens:
20 Chapter 3. Installation
NetXMS Administrator Guide, Release 3.8.267
Enter IP address or host name of your NetXMS server. You can specify multiple management servers, separating
them by commas. Press the Next button to continue.
3. Subagent selection window will open:
In this window, you can select which subagents you wish to load. Each subagent extends agent’s functionality,
e.g.:
Subagent Description
filemgr.nsm Provides access to specified folders on monitored host from NetXMS Management Console
File Manager. Is also being used for distributing Agent Policy configuration files (see Agent
Policies.)
logwatch Allows monitoring log files and Windows Event Log and sending matched events to
NetXMS server.
ping.nsm Adds possibility to send ICMP pings from monitored host. Ping round-trip times can be
collected by management server.
netsvc.nsm, Adds possibility to check network services (like FTP or HTTP) from monitored host.
portcheck.nsm
winperf.nsm Provides access to Windows performance counters. This subagent is required if you need
to collect CPU utilization from monitored host.
wmi.nsm Provides access to WMI data.
ups.nsm Adds support for UPS monitoring. UPS can be attached to host via serial cable or USB.
22 Chapter 3. Installation
NetXMS Administrator Guide, Release 3.8.267
Windows Agent installer (named nxagent-VERSION.exe, for example nxagent-3.4.178.exe), has various command
line options for unattended installation. Installation will ignore any configuration file options (/CONFIGENTRY,
/NOSUBAGENT, /SERVER, /SUBAGENT, etc) if config file already exists or if /CENTRALCONFIG option is used.
However, it’s possible to delete and recreate the configuration file with /FORCECREATECONFIG command line
option.
The options are following:
Option Description
/CENTRALCONFIG Enable read configuration from server on startup. See Agent configuration files
on server for more information.
/CONFIGENTRY=value It can be used to add any parameter to configuration file during initial install. You
can specify it multiple times to add multiple lines. Section names can be added
as well.
/CONFIGINCLUDEDIR=path Set folder containing additional configuration files (will be set in configuration
file as ConfigIncludeDir).
/DIR=path Set installation directory (default is C:\NetXMS).
/FILESTORE=path Sets directory to be used for storing files uploaded by management server(s) (will
be set in configuration file as FileStore).
/FORCECREATECONFIG Delete existing agent configuration file and recreate it. However, settings stored
by installer in Windows registry will be used, if not explicitly specified by com-
mand line parameters. See /IGNOREPREVIOUSDATA.
/IGNOREPREVIOUSDATA Ignore any settings from previous install that are not explicitly specified in current
run. This is related to settings that can be changed when installer is run in GUI
mode, e.g. list of selected sub-agents. These settings are stored in Windows
registry.
/LOCALCONFIG Use local configuration file (it is the default).
/LOG Causes Setup to create a log file in the user’s TEMP directory detailing file instal-
lation and [Run] actions taken during the installation process.
/LOG=filename Same as /LOG, except it allows to specify a fixed path/filename to use for the log
file. If a file with the specified name already exists it will be overwritten. If the
file cannot be created, Setup will abort with an error message.
/LOGFILE=filename Set agent log file (will be set in configuration file as LogFile).
/MERGETASKS=”tasknames” Comma-separated list of tasks for installation. If a task is specified with ! charac-
ter prior to it’s name, it will be deselected. Possible values are fspermissions
- set hardened file system permissions, sessionagent - Install session agent,
useragent - Install user support application. e.g. /MERGETASKS="!
fspermissions,useragent"
/NOSUBAGENT=name Disable subagent name
/NOTUNNEL Disable tunnel operation (it is the default)
/REINSTALLSERVICE Reinstalls Windows service
/SERVER=IP Set server IP address or host name (will be set in configuration file as
MasterServers).
/SILENT Don’t show installation wizard, only a progress bar
/SUBAGENT=name Add sub-agent loading directive to configuration file. You can specify this param-
eter multiple times to add more than one sub-agent. List of possible subagents:
Subagents.
/SUPPRESSMSGBOXES Don’t ask user anything. Only has an effect when combined with /SILENT and
/VERYSILENT.
/TUNNEL Enable tunnel operation to IP address specified with /SERVER=.
/VERYSILENT Don’t show anything
Example:
nxagent-3.4.178.exe /VERYSILENT /SUPPRESSMSGBOXES /SERVER=10.0.0.1 /
SUBAGENT=UPS /SUBAGENT=FILEMGR /CONFIGENTRY=ZoneUIN=15 /CONFIGENTRY=[FILEMGR]
/CONFIGENTRY=RootFolder=C:\
This command will add 3 lines at the end of generated config file:
ZoneUIN=15
[FILEMGR]
RootFolder=C:\
3.6.1 Console
Note: User that is used for connection should have Login as mobile device user right.
3.6.2 Agent
Note: User that is used for connection should have Login as mobile device user right.
Mobile device should be manually added to server. Find more information see: Monitoring mobile devices.
3.7.1 Server
24 Chapter 3. Installation
NetXMS Administrator Guide, Release 3.8.267
3. Since version 3.8 reporting server is being built along with the sources. This requires maven to be installed on
the system. You need Oracle and MS SQL JDBC drivers in your local maven repository.
Oracle JDBC driver library can be obtained here: https://download.oracle.com/otn-pub/otn_
software/jdbc/199/ojdbc8.jar
Microsoft SQL JDBC driver library can be obtaine here: https://www.microsoft.com/en-us/
download/details.aspx?id=54671 You will need sqljdbc_4.2/enu/jre8/sqljdbc42.jar file from this
archive.
To install these libraries: mvn install:install-file -DgroupId=com.microsoft.
sqlserver -DartifactId=sqljdbc4 -Dversion=4.2 -Dpackaging=jar
-Dfile=sqljdbc42.jar mvn install:install-file -DgroupId=com.
oracle -DartifactId=ojdbc8 -Dversion=12.2.0.1 -Dpackaging=jar
-Dfile=ojdbc8.jar
4. Change directory to netxms-VERSION and run configure script:
cd netxms-VERSION
./configure --with-server --with-pgsql --with-agent
Most commonly used options (check full list with ./configure --help):
Name Description
--prefix=DIRECTORY Installation prefix, all files go to the specified directory (e.g.
--prefix=/opt/netxms)
--with-server Build server binaries. You will need to select at least one DB driver
as well
--with-agent Build monitoring agent. It is strongly recommended to install agent
on a server box
--with-pgsql Build PostgresSQL DB Driver (if you plan to use PostgreSQL as
backend database)
--with-mysql Build MySQL DB Driver (if you plan to use MySQL as backend
database)
--with-odbc Build ODBC DB driver (if you plan to connect to your backend
database via unixODBC)
--with-sqlite Build SQLite DB driver (if you plan to use embedded SQLite
database as backend database)
5. Run build binaries and install them into /usr/local (unless changed with configure flag –prefix)
make
make install
6. Copy sample config file:
cp contrib/netxmsd.conf-dist /usr/local/etc/netxmsd.conf
By default, server load configuration file PREFIX/etc/netxmsd.conf (where PREFIX is installation
prefix set by configure), unless different file is specified with command line switch “-c”.
7. Create database user and adjust configuration file (netxmsd.conf) accordingly. Database creation examples can
be found there.
8. Further adjust server configuration file if required.
Detailed information about each configuration parameter can be found in section Server configuration file
(netxmsd.conf).
9. Create required tables and load initial configuration using nxdbmgr utility:
/usr/local/bin/nxdbmgr init
/usr/local/bin/netxmsd -d
3.7.2 Agent
Name Description
--prefix=DIRECTORY Installation prefix, all files go to the specified directory
--with-agent Build monitoring agent. It is strongly recommended to install agent
on a server box
4. Run build binaries and install them into /usr/local (unless changed with configure flag --prefix)
make
make install
5. Copy sample config file:
cp contrib/nxagentd.conf-dist /usr/local/etc/nxagentd.conf
By default, agent load configuration file PREFIX/etc/netxmsd.conf (where PREFIX is installation
prefix set by configure), unless different file is specified with command line switch “-c”.
6. Adjust agent configuration file if required.
Detailed information about each configuration parameter can be found in section Agent configuration file (nxa-
gentd.conf).
Minimal required configuration:
LogFile = /var/log/nxagentd
7. Run agent:
/usr/local/bin/nxagentd -d
26 Chapter 3. Installation
NetXMS Administrator Guide, Release 3.8.267
server = 127.0.0.1
Default locations:
Jetty
Tomcat
Debian default is /usr/share/tomcat9/lib. Other versions and Linux distribution may have dif-
ferent location.
Oracle Weblogic
$WEBLOGIC_HOME/user_projects/domains/YOURDOMAIN
3. jvm parameter in format -Dnxmc.NAME=VALUE. For example: -Dnxmc.server=127.0.0.1
4. Environment variable NXMC_NAME=VALUE. For example NXMC_server=127.0.0.1
5. If non of above configuration exists, Web UI tries to resolve “NETXMS_SERVER” DNS name for
server connection.
6. If none of above configuration exists, Web UI uses “127.0.0.1” as a server address.
It is possible to change default logo on login screen to custom image by setting loginFormImage property in
nxmc.properties file. Image file must be located within application server’s class path and file name must be given
relative to class path root with leading slash. For example, if custom image is in file logo.jpg located in the same
directory as nxmc.properties, correct entry will be:
loginFormImage = /logo.jpg
Default login is “admin” with password “netxms”. On first login, user will be requested to change it immediately.
If required, password can be reset back to default using nxdbmgr utility.
3.11.1 PostgreSQL
createuser -P netxms
createdb -O netxms netxms
If TimescaleDB extension is about to be used, it should be added to the newly created database:
psql netxms
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
\q
DBDriver = pgsql.ddr
DBServer = localhost
DBName = netxms
DBLogin = netxms
DBPassword = PaSsWd
3.11.2 MySQL
DBDriver = mysql.ddr
DBServer = localhost
DBName = netxms
(continues on next page)
28 Chapter 3. Installation
NetXMS Administrator Guide, Release 3.8.267
3.11.3 Oracle
-- USER SQL
CREATE USER netxms IDENTIFIED BY PaSwD
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
-- QUOTAS
ALTER USER netxms QUOTA UNLIMITED ON USERS;
-- ROLES
GRANT CREATE SESSION, CREATE TABLE, CREATE PROCEDURE TO netxms;
DBDriver = oracle.ddr
DBServer = //127.0.0.1/XE # instant client compatible connection string
DBLogin = netxms
DBPassword = PaSsWd
30 Chapter 3. Installation
CHAPTER
FOUR
UPGRADE
Management console
4.2.2 Upgrading
Server
1. Download the latest version from http://www.netxms.org/download, if you don’t have it. You will
need source archive (named netxms-VERSION.tar.gz, for example netxms-1.2.15.tar.gz). Please
note that in the following steps VERSION will be used as a substitution for an actual version number.
31
NetXMS Administrator Guide, Release 3.8.267
Agent
1. Download the latest version from http://www.netxms.org/download, if you don’t have it. You will
need source archive (named netxms-VERSION.tar.gz, for example netxms-1.2.15.tar.gz). Please
note that in the following steps VERSION will be used as a substitution for an actual version number.
2. Unpack the archive:
tar zxvf netxms-1.2.15.tar.gz
3. Change directory to netxms-version and run configure script:
cd netxms-1.2.15
sh ./configure --with-agent
Be sure to include all options that were used at installation time.
4. Run make and make install:
make
5. Stop NetXMS agent.
6. Run make install:
make install
7. Run agent:
$ /usr/local/bin/nxagentd -d
32 Chapter 4. Upgrade
NetXMS Administrator Guide, Release 3.8.267
Management console
4.3.1 Upgrade
Server
1. Download the latest version from http://www.netxms.org/download, if you don’t have it. You will need Windows
installer (named netxms-VERSION.exe, for example netxms-1.2.15.exe).
2. Stop NetXMS server.
3. Check database for possible inconsistencies:
Proceed to the next step only if database checker does not report any errors!
4. Run NetXMS installer and follow the prompts. Normally, you will not need to change any settings on installation
wizard windows. Alternatively, you can run the installer with /SILENT option to disable any prompts:
5. Check whether NetXMS Server service is running again. If it’s not, most likely you have to upgrade your
database to newer version. To upgrade database, use nxdbmgr utility:
Agent
We highly recommend using centralized agent upgrade feature for agent upgrades. However, if you decide to upgrade
agent manually, it can be done in just a few steps:
1. Download the latest version from http://www.netxms.org/download, if you don’t have it. You will need Windows
Agent installer (named nxagent-VERSION.exe or nxagent-VERSION-x64.exe, for example nxagent-1.2.0.exe).
2. Run NetXMS agent installer and follow the prompts. Normally, you will not need to change any settings on
installation wizard dialog windows. Alternatively, you can run installer with /SILENT option to disable any
prompts:
C:Download> nxagent-1.2.0.exe /SILENT
Management console
4.4.1 Server
1. Download the latest version from http://www.netxms.org/download, if you don’t have it. You will
need source archive (named netxms-VERSION.tar.gz, for example netxms-1.2.15.tar.gz). Please
note that in the following steps VERSION will be used as a substitution for an actual version number.
2. Unpack the archive:
$ tar zxvf netxms-1.2.15.tar.gz
3. Change directory to netxms-version and run configure script:
$ cd netxms-1.2.15
$ sh ./configure --with-server --with-mysql
Be sure to include all options that were used at installation time.
4. Run make:
$ make
5. Stop NetXMS server.
6. Stop NetXMS agent.
7. Check database for possible inconsistencies:
34 Chapter 4. Upgrade
NetXMS Administrator Guide, Release 3.8.267
$ nxdbmgr check
Proceed to the next step only if database checker does not report any errors!
8. Run make install:
$ make install
9. Upgrade database:
$ nxdbmgr upgrade
10. Start NetXMS agent.
11. Start NetXMS server.
4.4.2 Agent
1. Download the latest version from http://www.netxms.org/download, if you don’t have it. You will
need source archive (named netxms-VERSION.tar.gz, for example netxms-1.2.15.tar.gz). Please
note that in the following steps VERSION will be used as a substitution for an actual version number.
2. Unpack the archive:
tar zxvf netxms-1.2.15.tar.gz
3. Change directory to netxms-version and run configure script:
cd netxms-1.2.15
sh ./configure --with-agent
Be sure to include all options that were used at installation time.
4. Run make and make install:
make
5. Stop NetXMS agent.
6. Run make install:
make install
7. Run agent:
$ /usr/local/bin/nxagentd -d
36 Chapter 4. Upgrade
CHAPTER
FIVE
QUICK START
In this section will be described basic configuration that should be done after server and agent clean install. Also will
be shown monitoring configuration for some common metrics like CPU of FS.
Minimal configuration that should be set for agent is server address and path to log file. Action differ depending on
a platform where agent is installed. On Windows systems configuration file is automatically generated and populated
by installer, on UNIX systems it should be created/edited manually.
Minimal required configuration is done for agent.
5.2.1 Windows
In case if while installation MasterServer was set correctly no action is required from user.
Automatically generated configuration file can be found there: installation directory\etc\nxagentd.
conf.
Configuration file for Windows should look like this:
#
# Sample agent’s configuration file
#
MasterServers = 127.0.0.1
LogFile = {syslog}
37
NetXMS Administrator Guide, Release 3.8.267
5.2.2 UNIX/Linux
After agent is installed on a UNIX/Linux system it is required to create/edit file /etc/nxagentd.conf. This file
should contain at least this information:
#
# Sample agent’s configuration file
#
MasterServers = 127.0.0.1
LogFile = /var/log/nxagentd
Server has 2 types of configuration: configuration file parameters and server configuration variables.
For server configuration file minimal requirements are path to log file, database driver name and all required creden-
tials depending on database. Location and required actions depends on what OS is used. More about OS specific
configuration search in OS subsections of this chapter.
List of possible database drivers:
• mssql.ddr Driver for Microsoft SQL database.
• mysql.ddr Driver for MySQL database.
• odbc.ddr ODBC connectivity driver (you can connect to MySQL, PostgreSQL, MS SQL, and Oracle via ODBC).
• oracle.ddr Driver for Oracle database.
• pgsql.ddr Driver for PostgreSQL database.
• sqlite.ddr Driver for embedded SQLite database.
There are quite a few important server parameters to be set right after installation. These parameters are accessible
through the Server Configuration window in the console. To open it, click on Configuration → Server Configuration.
To edit a setting, double click on the row in the table or right-click and select Edit. The following parameters may
need to be changed:
Parameter Description
PollerThreadPoolMaxSize This parameter represents maximum thread pool size. From this pool
will be taken threads for all types of polls: Status poll, Configuration
poll, etc. In case of big load on a server number of threads will be
increased till this size. When load come back to normal, number of
threads will be automatically decreased to base size. If you plan to
monitor large number of hosts increase this parameter from the default
value to approximately 1/5 of host count.
PollerThreadPoolBaseSize This parameter represents base thread pool size. From this pool will be
taken threads for all types of polls: Status poll, Configuration poll, etc.
This is minimal number of threads that will always run. If you plan to
monitor large number of hosts increase this parameter from the default
value to approximately 1/10 of host count.
NumberOfDataCollectors If you plan to monitor large number of hosts, to approximately 1/10 –
1/5 of host number. Use larger value if you plan to gather many DCIs
from each host.
EnableSyslogDaemon Set this parameter to 1 if you want to enable NetXMS built-in syslog
server.
5.3.1 Windows
For Windows systems this information is added to configuration file while installation procedure. It can be check that
all data was set correctly in this file: 'installation directory'\etc\netxmsd.conf.
Example of sample Windows configuration for mysql:
#
# Sample server configuration file
#
DBDriver = mysql.ddr
DBServer = localhost
DBName = netxms_db
DBLogin = netxms
DBPassword = password
LogFile = {syslog}
5.3.2 UNIX/Linux
DBDriver = oracle.ddr
DBServer = ServerIP/Hostname.DomainName #Here is service (full database name), not SID
DBName = netxms
DBLogin = netxms
DBPassword = PaSwD
LogFile = /var/log/netxmsd
5.4 SMTP
SMTP configuration is done to create actions that will send e-mails on defined events. This configuration is done
through the Server Configuration window in the console. To open it, click on Configuration → Server Configuration.
To edit a setting, double click on the row in the table or right-click and select Edit. The following parameters may
need to be changed:
Parameter Description
SMTPFromAddr Address that will be shown as a sender address when notification from
NetXMS will come.
SMTPFromName Name that will be shown as a sender name when notification from
NetXMS will come.
SMTPRetryCount Number of retries that NetXMS will try to do in case if message send-
ing will fail.
SMTPServer Server IP address or DNS name where NetXMS will send request for
message dispatch.
5.4. SMTP 39
NetXMS Administrator Guide, Release 3.8.267
For SNMP can be configured some default values for authorization. It is required if you will have many SNMP devices
with similar credentials.
This information is set on Network Discovery view.
In this section you can add SNMP community strings to be tested during connection to the SNMP device that requires
authorization.
In this section you can add SNMP version 3 credentials to be tested during connection to the SNMP device that
requires authorization.
In this section will be shown how to configure alarm and email notifications generation on predefined
SYS_THRESHOLD_REACHED event. And alarm resolve on SYS_THRESHOLD_REARMED event.
First it should be created Send E-Mail action in Action Configuration view. There we will set recipient of e-mail,
subject and body of e-mail. In body of e-mail will be used Macros for Event Processing. It means that when message
will be sent, macros “%n” will be substituted with name of the node and “%m” will be substituted with event message.
Value of event message is personal for each event and can be found in event description.
Next step is to add processing policies. It is done in Event Processing Policy view. We will add this rules before all
other rules as it it is planed that this rules will be most commonly used ones.
It should be added rule that will send email and create Alarm on SYS_THRESHOLD_REACHED rule from
any node. In alarm message is added key that will be used in alarm resolve. Key is combined from text id
“SYS_THRESHOLD_REACHED_”, id of DCI and ID of node. This should be enough to resolve correct alarm.
After that should be created one more rule for alarm resolve with the same key as for alarm creation. After all config-
uration is done Event Processing Policy view should be saved.
It is recommended to enable passive discovery when it is required to add all nodes in local network. In case if NetXMS
server has access to switches and routers via SNMP, all devices in network will be added automatically by discovery
process.
To enable passive network discovery open Network Discovery view. There in General section select Passive only
option and check that all default SNMP credentials are set as described in SNMP Defaults section. Other options that
can be set depending on requirements:
• Option to use SNMP trap source for further network discovery
• Option to set filer that will define rules for not adding nodes to NetXMS server
In our configuration we will not use filter to add all node available on our network and turn on option to use SNMP
trap source address for discovery. After all configuration is done remember to save it.
5.7.1 Notes
If you have enabled automatic network discovery, wait for initial network discovery completion. This process can take
time, depending on size and complexity of your network. For large networks, we recommend that you let NetXMS run
over night to gather the majority of network information available. You can watch discovery progress in a real time
using NetXMS Management Console. Go to Object Browser or open default network map and see for new devices
and networks.
Please note that for successful network discovery your network must meet the following requirements:
• NetXMS server must have access to switches and routers via SNMP.
• All your network devices credentials(community string and password for v3) should be added to default creden-
tial list in Network Discovery view.
If the automatic network discovery does not detect all of your hosts or devices, or you decide not to use network
discovery at all, you may need to manually add monitored nodes to the system. The easiest way to accomplish this is
to right-click on Infrastructure Services in the Objects pane and select Create node. You will be presented with the
following dialog window:
Please note that adding a new node object may take some time, especially if a node is down or behind a firewall. After
successful creation, a new node object will be placed into appropriate subnets automatically. As soon as you add a
new node to the system, NetXMS server will start regular polling to determine the node status.
In this section is described how to configure CPU usage monitoring using agent metric and using SNMP metric and
interface incoming traffic. There will be also shown threshold configuration for each DCI. This threshold will generate
SYS_THRESHOLD_REACHED event when defined condition is meet and SYS_THRESHOLD_REARMED when
collected data exists range of condition.
Earlier we already described how to configure email notifications and alarm generation, resolve based on this events.
In this chapter is described data collection and event generation based on collected data.
To add DCI for a node open Data Collection Configuration view from object menu. And select from drop-down menu
New parameter.
Fig. 3: Properties
4. Select System.CPU.Usage
5. Go to Threshold tab
6. Click Add
7. Set that if last one polled value is gather than 85, then generate SYS_THRESHOLD_REACHED
event, when value is back to normal generate SYS_THRESHOLD_REARMED event.
Fig. 4: Threshold
8. Click OK
Add CPU usage metric from SNMP parameters:
1. Check that as origin is selected NetXMS Agent.
2. Click on Select button
3. Type in the input box “.1.3.6.1.4.1.9.9.109.1.1.1.1.4”(this OID can may be not available for some
devices)
4. Click Walk
6. Click OK
Fig. 7: Properties
7. Go to Threshold tab
8. Click Add
9. Set that if last one polled value is gather than 85, then generate SYS_THRESHOLD_REACHED
event, when value is back to normal generate SYS_THRESHOLD_REARMED event.
Fig. 8: Threshold
10. Click OK
Now you configured data collection of metric System.CPU.Usage that will be collected every 60 seconds, data will be
stored for 30 days, with 1 threshold that will be activated when CPU usage is mote than 85%.
There is shortcut to create all required DCIs for interface traffic. Select interfaces for which should be created traffic
collection DCIs and select from drop-down menu Create data collection items. There can be created automatically all
required DCIs by selecting required checkbooks.
SIX
AGENT MANAGEMENT
6.1 Introduction
NetXMS agent is daemon or service that runs on a node to provide additional monitoring options. This is optional for
installation, but it’s installation gives following advantages:
• Centralized configuration - you can change configuration of agent from management console; if needed, you
can even store agent configs on NetXMS server
• More secure: communications between NetXMS server and agent can be encrypted, additional authentication
on agent can be configured
• TCP instead of UDP is used for communications with agent - this can help in case of slow and poor quality links
• Remote command execution - agents can be used to execute commands on managed systems as a reaction to
certain events
• Proxy functionality: agent can be used as a proxy to reach agents on hosts not directly accessible by NetXMS
server
• SNMP proxy: agent can be used as a proxy to reach remote SNMP devices
• SNMP Trap proxy: agent can be used as a proxy to get messages from remote SNMP device
• Extensible: you can add new parameters very easy using configuration option like ExternalParameter or
by writing your own subagents
• Easy upgrade - you can upgrade all agents at once from console
• Provides file management possibilities on agent.
• Provides log file monitoring functionality.
Agent have 3 types of configuration files: master configuration file, additional configuration files and Agent Policy
configuration files. Master configuration file is the only mandatory file. Minimal configuration for master configuration
file is server address. Address should be set as MasterServers to be able to apply other configuration settings from the
server.
After configuration file change agent should be restarted to apply new changes.
Two formats are supported for configuration files and configuration file policies: XML and ‘key = value’ format.
In ‘key = value’ format configuration file can contain one or more parameters in Parameter = Value form, each
parameter should be on its own line. Parameters are grouped into sections. Beginning of a section is denoted by
49
NetXMS Administrator Guide, Release 3.8.267
section name in square brackets (example: “[sectionName]”). Section named “[Core]” contains parameters for agent
itself. It’s the default section, if a configuration file starts from parameter and not from section name, parameters
are treated as belonging to “Core” section. Subagents’ parameters should be placed in separate sections named by
subagent name. Same section name can be present several times in the configuration file. Comments can be inserted
after “#” sign
In XML format general tag should be <config>, second level tags contain section names and third level tags are agent
or subagent configuration parameters.
‘key = value’ format example:
[Core]
MasterServers = 10.0.0.4
SubAgent = winperf.nsm
# Below is a configuration for winperf subagent, in separate section
[WinPerf]
EnableDefaultCounters = yes
<config>
<Core>
<MasterServers>10.0.0.4</MasterServers>
<SubAgent>winperf.nsm</Subagent>
</Core>
<!-- Below is a configuration for winperf subagent, in separate section -->
<WinPerf>
<EnableDefaultCounters>yes</EnableDefaultCounters>
</WinPerf>
</config>
Detailed list of parameters can be found here: Agent configuration file (nxagentd.conf). The following parame-
ters can be specified in master configuration file only (and will be ignored if found in other configuration files):
DataDirectory and ConfigIncludeDir.
File nxagentd.conf is a master configuration file for NetXMS agent. Depending on OS there are different locations,
where agent tries to find master configuration file.
UNIX-like systems
Windows
On Windows location of NetXMS config is stored in the registry. Alternatively, location of configuration file can be
provided to agent with -c command line parameter. If there is no record in the registry and -c parameter is not
specified, then agent tries to find configuration files in the following locations:
1. 'installation directory'\etc\nxagentd.conf
2. C:\nxagentd.conf
To increase maintainability, configuration can be stored in multiple additional configuration files located in a specific
folder. Additional configuration files override (if a parameter supports only one value) or supplement (if parameter
supports multiple values, e.g. list of servers or root folders for filemgr subagent) configuration parameters from master
file. Depending on OS there are different locations, where agent tries to find master configuration file.
UNIX-like systems
On UNIX systems it is searched in the following order (search is performed until first existing folder is found):
1. If $NETXMS_HOME environment variable is set: $NETXMS_HOME/etc/nxagentd.conf.d
2. 'prefix'/etc/nxagentd.conf.d. ‘prefix’ is set during build configuration with
--prefix='prefix' parameter. If that parameter was not specified during build, /usr/local is
used.
3. /Database/etc/nxagentd.conf.d
4. /etc/nxagentd.conf.d
5. /usr/etc/nxagentd.conf.d
A different configuration file folder name can be given by specifying $NXAGENTD_CONFIG_D environment vari-
able. In this cause search in the locations mentioned above is not performed.
Windows
On Windows location of configuration file folder is stored in the registry. If there is no record in the registry, then
agent tries to find configuration file folder in the following locations (search is performed until first existing folder is
found):
1. 'installation directory'\etc\nxagentd.conf.d
2. C:\nxagentd.conf.d
Agent policies allow to store agent configuration on server and deliver it to the agents. More information about Policies
can be read there: Agent Policies.
On agent configuration policy files are stored in a separate folder named config_ap under DataDirectory folder. Every
policy is saved into a separate file named by policy GUID.
Right click on node, select Edit agent’s configuration file from menu. When closing the editor, a dialog will be
presented. New configuration apply is performed on agent restart. So to immediately apply new configuration select
Save and Apply. This option will save configuration file and automatically restart the agent. If just Save is selected,
then agent should be manually restarted to apply new configuration.
Agent master configuration files can be stored on server side and requested by agent, if it is launched with -M
<serverAddress> command line parameter. Each configuration file on server is stored along with filter script.
When server receives configuration request from agent, it goes through available configs and executes filter scripts to
find an appropriate configuration.
If appropriate configuration file is found, it is sent to agent and old nxagentd.conf file is overwritten (or a new
nxagentd.conf file is created, if it did not exist). When agent can’t connect to server or server hasn’t found right
configuration, the agent is started with old configuration file. In case if agent configuration file does not exist and it is
not possible to get new one from the server - agent fails to start.
New in version 1.2.15.
Doesn’t work with tunnel agent connection
Configuration
Each configuration has a name, filter script and the configuration file text.
• Name just identifies the configuration.
• Filter script is executed on configuration request to define which configuration file to send to the agent. Filter is
defined with help of NXSL scripting language. The following parameters are available in the filter script:
– $1 - IP address
– $2 - platform
– $3 - major version number
– $4 - minor version number
– $5 - release number
• Configuration file is the text of returned configuration file.
Another option to store and distribute agent configuration are agent policies. In this case agent configuration is stored
on the server side as a policy belonging to template and deployed to the agent when corresponding template is applied
to a node. More information about policies and their types can be found in Agent Policies chapter.
Agent policies are additional configuration created by user (agent configuration or files) that are uploaded and updated
on agent when template is manually or automatically applied on the node. Agent policies belong to templates, so they
are applied to nodes to which a corresponding template is applied.
To create policy, right click a template and select Agent policies. Click plus icon to create a new policy, give it a name,
choose correct policy type and click OK. Existing policy can be modified by right-clicking it and selecting Edit from
the menu or by double clicking on it.
The following policy types are available:
• Agent configuration policy
• File delivery policy
• Log parser policy
• User support application policy
Policies are automatically deployed to nodes after creation/modification or when a template is applied to a node. When
configuration policy is deleted or template is removed from a node, the policy is automatically undeployed from node.
Policies get deployed / undeployed:
• On node configuration poll.
• When list of Agent Policies is closed in the management console. If a node is down at that moment, next
attempt will happen on configuration poll.
• When template is applied or removed from a node. If a node is down at that moment, next attempt will
happen on configuration poll.
Installed policy configurations are stored as additional files under agent DataDirectory. List of applied policies is
stored in agent local database.
If agent discovers for a record in local database, that policy file is missing, it will delete the record from database.
When performing deployment, server checks information in agent’s database with it’s database and issues necessary
commands.
Agent configuration policy provides option to populate agent configuration with additional parts. Main agent configu-
ration is merged with additional rules from policy. Using policy for configuration file maintenance has advantages that
configuration is edited in centralized way and gives granular control on the configuration that each node gets. More
information about different agent configuration options can be found in above chapters.
It is possible to use the same parameters and format as in any NetXMS agent configuration file (key=value format or
XML format).
Example:
MasterServer=127.0.0.1
SubAgent=netsvc.nsm
SubAgent=dbquery.nsm
SubAgent=filemgr.nsm
[DBQUERY]
Database=id=myDB;driver=mysql.ddr;server=127.0.0.1;login=netxms;password=xxxxx;
˓→dbname=netxms
[filemgr]
RootFolder=/
<config>
<core>
<!-- there can be added comment -->
<MasterServers>127.0.0.1</MasterServers>
<SubAgent>netsvc.nsm</SubAgent>
<SubAgent>dbquery.nsm</SubAgent>
<SubAgent>filemgr.nsm</SubAgent>
</core>
<DBQUERY>
<Database>id=myDB;driver=mysql.ddr;server=127.0.0.1;login=netxms;password=xxxxx;
˓→dbname=netxms</Database>
</DBQUERY>
<filemgr>
<RootFolder>/</RootFolder>
</filemgr>
</config>
Example:
Agent should be manually restarted to apply the configuration after the configuration policy is deployed or undeployed
to node.
Information about log parser format and usage available in Log monitoring chapter.
Log parser configuration is applied right after log parser policy is deployed or undeployed to node - no agent restart is
required.
File delivery policy is created to automatically upload files form server to agents.
First root folder or folders should be created - folders with the full path to place where uploaded file and folder structure
should be placed. After folder structure is created files can be added to this structure. On policy apply folders will be
created if possible and files will be uploaded.
In file and folder names the following macros can be used:
• Environment variables as %{ENV_VAR_NAME}
• strftime(3C) macros
• Text inside ` braces will be executed as a command and first line of output will be taken
Example:
Two ways of agent-server communication are available. Standard one is when server initializes connection to agent,
the second one is when tunnel is used and agent initialize connection to server.
This connection requires certificate configuration on server side. More about required actions can be found in Server
configuration for Agent to Server connection / Tunnel connection. Agent requires ServerConnection parameter set in
agentd.conf file to server DNS or server IP address. It is possible to have several ServerConnection parameters in the
config, in this case agent will establish tunnel connection to multiple servers.
Right after agent start it will try to connect to the server. On first connect node will be shown in Agent Tunnels.
There are few ways to register agent:
1. To enter it manually by creating a node and then binding tunnel to already created node.
2. Create node from Agent Tunnels view by selecting one or more tunnels and selecting Create node and
bind. . . menu item.
Debugging
In case of errors enable server debug for “agent.tunnel” and “crypto.cert” to level 4 and agent log debug for “tunnel”
and “crypto.cert” to level 4. Check for “SYS_TUNNEL_SETUP_ERROR” events on management node.
6.6 Security
Server encryption policy is configured in Server Configuration view by selecting one of 4 options for DefaultEncryp-
tionPolicy parameter. Default Policy is 2.
Policy types:
• 0 - Forbid encryption. Will communicate with agents only using unencrypted messages. If agent force encryp-
tion (RequireEncryption agent configuration parameter is set to yes), server will not accept connection with this
agent.
• 1 - Allow encryption. Will communicate with agents using unencrypted messages if encryption is not enforced
by setting RequireEncryption agent configuration parameter to yes or by selecting Force encryption option in
Communication properties of node object.
• 2 - Encryption preferred. Will communicate with agents using encryption. In case if agent does not support
encryption will use unencrypted communication.
• 3 - Encryption required. Will communicate with agent using encryption. In case if agent does not support
encryption will not establish connection.
Agent to server connection uses TLS protocol to ensure communication security. Server has root certificate, that is
used to issue public certificate for agent. Server issues certificate to node when user manually binds tunnel to a node in
Agent Tunnels, or node is bind automatically (when AgentTunnels.UnboundTunnelTimeoutAction server configuration
parameter is set to Bind tunnel to existing node or Bind tunnel to existing node or create a new node). If required, this
process can also be automated by NXShell. More information: NXShell examples, Latest Javadoc.
Depending on how server’s IP address (or domain) is added to in nxagentd.conf, it will have different access level. It
is preferred to use MasterServers. There are 3 levels of access for an agent:
1. MasterServers - full access.
2. ControlServers - can read data and execute predefined actions, but cannot change config nor install policies.
3. Servers - read only access. (Is default for tunneled agent connection if other server level is not defined)
In case if server IP is not listed in one of this parameters agent will not enable connection with server in server to agent
connection or will set access level to Servers if tunnel connection is used.
6.6. Security 59
NetXMS Administrator Guide, Release 3.8.267
When it is required to write password or Shared Secret in agent configuration file, there is possibility to encrypt it. All
passwords can be encrypted with help of nxencpasswd command line tool and added in configuration file in encrypted
way.
6.7 Subagents
Subagents are used to extend agent functionality. NetXMS subagent are libraries that are loaded by agent. By default
all subagents are included in agent build. Subagent may be not included in build only if on time of the build there
were no required libraries for subagent build. To enable subagent is require just to add line in main agent configuration
file (example: “Subagent=dbquery.nsm”). More about configuration and usage of subagents will be described in
monitoring chapters.
Below is list of available NetXMS subagents:
• Asterisk
• DB2
• Database Query
• DS18x20
• File Manager
• ECS
• Informix
• Java
• lm-sensors
• MongoDB
• MQTT
• MySQL
• Network Service Check
• Oracle
• Ping
• Port Check
• Raspberry Pi
• UPS
• Windows Performance
• WMI
• XEN
This is a special type of subagent, that allows to load Java plugins(subagents written using Java language). Java
subagent does not provide any functionality by itself.
There are several configuration parameters that are supported by Java subagent. None of them is mandatory.
Parameter Description
Jvm Path to JVM. System default is used if not set.
Classpath This parameter is added to java CLASSPATH.
Plugin This parameter defines plugin that should be loaded. Can be used multiple times.
Configuration example:
MasterServers = netxms.demo
SubAgent=java.nsm
[JAVA]
Jvm = /path/to/jvm
Classpath = /path/to/user/classes
Plugin = bind9.jar
Java plugins
Load of subagent as separate process can be used in case it is necessary to load agent and subagent under dif-
ferent users. It can be done by adding ExternalSubagent parameter with unique ID that will represent
connection name between agent and subagent. Create second configuration file for this subagent and add there
ExternalMasterAgent parameter with same ID and run instance of nxagentd with this config. Now exter-
nal subagent will communicate with master agent using Named Pipe. Only master agent will communicate with
server.
In case it is required to monitor nodes behind firewall, it can be configured access to one of subnet nodes and used this
node as a proxy node for others.
Proxy node can be set during node creation or in Communications tab of node properties. To configure proxy node
select node in object selector NetXMS Agent Proxy.
To enable NetXMS Agent proxy “EnableProxy” agent configuration parameter should be set to yes.
Other option to define new Metric that can be collected from node is to use
ExternalParameter/ExternalParameterShellExec, or ExternalList, or
ExternalParametersProvider configuration parameters to define command that will be executed on a
node and it’s output will be provided as a Metric. This functionality provides flexibility to create your own metrics,
lists or table metrics.
New Metrics will be visible in the Available parameters list only after agent restarts (agent reads a configuration file
only once on start) and configuration poll, so to force it’s appearance run Configuration poll manually after agent
restart.
Note: Since v. 3.5. on Windows platforms UTF-8 encoding should be returned in External Metrics.
6.9.1 ExternalParameter/ExternalParameterShellExec
ExternalParameter defines name of the metric and command that is executed synchronously when this metric
is requested by server. There can be provided parameters from DCI configuration, that will be available like $1, $2,
$3. . . , $9 variables. To accept arguments metric name should contain “(*)” symbols after name. Only first line of
script output will be given as a result of execution(metric value).
ExternalParameterShellExec has same meaning as ExternalParameter and behaves identically on
non-Windows systems. On Windows systems ExternalParameter executes specified command using system
process execution API’s CreateProcess() function. It will search in PATH, but the command should be with file ex-
tension, e.g. command.exe. ExternalParameterShellExec will use shell to execute specified command on
Windows.
To add multiple parameters, you should use multiple ExternalParameter/ExternalParameterShellExec
entries.
As this commands are executed synchronously, long commands may cause timeout. In this case
ExecTimeout configuration parameter can be set to change external parameter execution timeout or
ExternalParametersProvider can be used.
# Example
#Real examples
ExternalParameter = Test:echo test
ExternalParameter = LineCount(*):cat $1 | wc -l
6.9.2 ExternalList
ExternalList defines name of the list metric and command that is executed synchronously when this metric is
requested by server. There can be provided parameters from DCI configuration, that will be available like $1, $2,
$3. . . , $9 variables. To accept arguments metric name should contain “(*)” symbols after name. Lines of list are
separated with new line.
# Example
6.9.3 ExternalParametersProvider
ExternalParametersProvider defines command(script) and execution interval in seconds. Defined script will
be executed as per interval and agent will cache parameter list. When server will request one of provided parameters
it’s value will be read from the agent cache. Main purpose is to provide data from long-running processes, or return
multiple values at once.
Script should print one or more “Parameter=Value” pairs to standard output. Multiple pairs should be separated by
new line. If parameter takes argument, it should be included in “Parameter(. . . )”.
Example of the script:
#!/bin/sh
echo 'Parameter1=Value1'
echo 'Parameter2=Value2'
echo 'ParameterWithArgs(AAA)=Value3'
echo 'ParameterWithArgs(BBB)=Value4'
#Example
ExternalParametersProvider=PATH_TO_PROVIDER_SCRIPT:POLL_TIME_IN_SECONDS
6.9.4 ExternalTable
ExternalTable defines name of the table metric, table metric description, column separator, instance column(s)
and command. Instance column(s), descriptions and separator are optional. If separator is not specified, default value
of , is used.
Instance column should contain unique identifier for each table row. If several instance columns are used, then com-
bination of these columns should be unique. This is necessary for building graphs and for threshold violation event
generation.
Command is executed synchronously when this metric is requested by server. Each table line is separated with new
line symbol. First line in returned text used as a name of the columns and all next lines will be used like table data.
Parameters from DCI configuration can be provided, that will be available like $1, $2, $3. . . , $9 variables. To accept
arguments metric name should contain “(*)” symbols after name.
# Example
For security reasons actions that can be executed on agent first are defined in agent configuration file and only then
can be used by users. This excludes that an unauthorized user can access system data through an arbitrary entered
command. Only users with access to the agent configuration file editing can define executed commands.
There are 2 options to define action:
1. Action - usual action definition. On Windows platform system process execution API’s CreateProcess() is used
to run the command, it will search in PATH, but the command should be with file extension, e.g. command.
exe.
2. ActionShellExec - Same as Action, but on the Windows platform agent will use shell to execute command
instead of normal process creation. There is no difference between Action and ActionShellExec on UNIX
platforms.
Both versions accept parameters that will be available like $1, $2, $3. . . , $9 variables.
After action is defined it can be used in the object tools - agent action or in actions - action execution on remote node.
Action should be defined in main section of agent configuration file.
# Example
Action=Name:command
Action=Name:command $1 $2
Action=cleanLogs:rm /opt/netxms/log/*
Action=ping:ping $1
ActionShellExec=listFiles:dir $1
SEVEN
SERVER MANAGEMENT
File netxmsd.conf is a configuration file for NetXMS server. It contains information necessary for establishing
database connection, and some optional server parameters. Default location for this file is /etc/netxmsd.conf
on UNIX systems and InstalationPathetcnetxmsd.conf on Windows.
The file can contain one or more parameters in Parameter = Value form, each parameter should be on its own line.
Comments can be inserted after “#” sign.
Detailed list of parameters can be found there: Server configuration file (netxmsd.conf).
Configuration file example:
#
# Sample server configuration file
#
DBDriver = mysql.ddr
DBServer = localhost
DBName = netxms_db
DBLogin = netxms
DBPassword = password
LogFile = {syslog}
NetXMS provides option to establish connection from agent to server. This requires additional configuration on server
and on agent sides. This chapter describes server side configuration. Agent side configuration can be found in Agent
to server connection. Agent to server connection is a TLS tunnel carrying virtual server to agent connections.
Server configuration can be separated into two parts: initial configuration (certificate generation and configuration)
and node binding.
New in version 2.2.3: Tunnel automatic action options
Server provide option to configure automatic options on new unbound tunnel connection. Once new unbound tun-
nel connection comes to server - idle timeout counter starts for this connection. If nothing done while AgentTun-
nels.UnboundTunnelTimeout time, automatic action selected in AgentTunnels.UnboundTunnelTimeoutAction will be
executed.
There are 4 types of actions, that can be done automatically:
67
NetXMS Administrator Guide, Release 3.8.267
1. Reset tunnel - close tunnel. It will be automatically reopened again by agent. This process will update
information on server in case of change on agent.
2. Generate event - generates event SYS_UNBOUND_TUNNEL, that later can be used for administrator noti-
fication or any other automatic action (see Event processing).
3. Bind tunnel to existing node - will try to find correct node and bind tunnel to it. Node matching rules will
be described further.
4. Bind tunnel to existing node or create new node - will try to find correct node and bind tunnel to it. If node
is not found new node will be created under container mentioned in AgentTunnels.NewNodesContainer
server configuration parameter. Node matching rules will be described further.
Node is matched for binding if:
1. Zone UIN given by agent (is configured in agent configuration under ZoneUIN) match to node zone id
2. IP given by agent match to node’s IP address
3. Hostname or FQDN match with node name
Certificate should be issued and added to the server configuration. This certificate will be used to issue public certifi-
cates for agents. Certificate usage should allow certificate signing. Certificates should be in PEM format. Server key
should be added to the certificate file or should be provided as a separate configuration parameter.
Certificate can be obtained in two ways:
1. By sending CSR request to your CA
2. Create self signed certificate
Possible server file configuration:
This manual describes only simplest option: self signed certificate creation without password. It does not contain any
information about file access right assignment or certificate password configuration.
1. Create private root key: openssl genrsa -out rootCA.key 2048
2. Create self signed root certificate: openssl req -x509 -new -key rootCA.key -days
10000 -out rootCA.crt
3. Create server key openssl genrsa -out server.key 2048
4. Create openssl.conf file. Content of file (dn section should be changed accordingly):
[req]
distinguished_name = dn
req_extensions = v3_ca
prompt = no
[dn]
countryName = LV
stateOrProvinceName = Riga
localityName = Riga
organizationName = netxms.org
commonName = Monitoring Server
[v3_ca]
basicConstraints = CA:TRUE
5. Create server certificate request openssl req -new -key server.key -out server.csr
-config openssl.conf
6. Sign server certificate with root CA certificate openssl x509 -req -in server.csr -CA
rootCA.crt -CAkey rootCA.key -CAcreateserial -out server.crt -days
5000 -extfile openssl.conf -extensions v3_ca
Add newly created certificates to server configuration (netxmsd.conf file).
TrustedCertificate = /opt/netxms/key/rootCA.crt
ServerCertificate = /opt/netxms/key/server.crt
ServerCertificateKey = /opt/netxms/key/server.key
Once server certificates are configured and agent is correctly configured (ServerConnection parameter set in
agentd.conf) requests for agent to server connection will be shown in Agent Tunnel Manager view.
User should manually accept them by binding to existing node Bind. . . or by creating new one Create node and
bind. . . . Once node will be bound - it’s state in Agent Tunnel Manager view will be changed to Bound.
These variables are stored in database and can be changed using Server Configuration Editor view access-
ing it Configuration→Server Configuration or with help of nxdbmgr`(example: :code:`nxdbmgr set
<name> <value>).
Detailed description of each configuration can be found there: Server configuration parameters. Please note that
changes to most of the settings will take effect only after server restart.
NetXMS does not provide horizontal scalability for server. But there is option to exchange with events between
servers. Information about configuration can be found there: Forward event. Event forward does not work with zones.
Command Description
-e Run database check on startup
-c <file> Set non-default configuration file Default is {search}
-d Run as daemon/service
-D <level> Set debug level (valid levels are 0..9)
-h Display help and exit
-p <file> Specify pid file.
-q Disable interactive console
-v Display version and exit
Server debug console can be opened in Java console. It can be found in Tools -> Server Console.
It can be used to check debug messages or to execute one of server commands like “ldap sync”.
Server commands can be executed also through XMPP. To execute server command through XMPP should be fulfill
next requirements:
1. Server connection with XMPP should be configured in server configuration variables: XMPPLogin, XMPPPass-
word, XMPPPort, XMPPServer, EnableXMPPConnector.
2. XMPP user that will send commands should be connected with NetXMS user by pointing it’s XMPP name in
XMPP ID filed of General tab of NetXMS user properties.
3. NetXMS user that will execute this commands should also have Execute commands via XMPP access right.
Execution is done sending server command like a message to the user defined in XMPPLogin server configuration
variable.
Command Description
debug [<level>|off] Set debug level (valid range is 0..9)
down Shutdown NetXMS server
exec <script> [<params>] Executes NXSL script from script library
exit Exit from remote session
kill <session> Kill client session
get <variable> Get value of server configuration variable
help Display this help
ldapsync Synchronize ldap users with local user database
poll <type> <node> Initiate node poll
raise <exception> Raise exception
set <variable> <value> Set value of server configuration variable
show components <node> Show physical components of given node
show dbcp Show active sessions in database connection pool
show fdb <node> Show forwarding database for node
show flags Show internal server flags
show index <index> Show internal index
show modules Show loaded server modules
show objects Dump network objects to screen
show pollers Show poller threads state information
show queues Show internal queues statistics
show routing-table <node> Show cached routing table for node
show sessions Show active client sessions
show stats Show server statistics
show topology <node> Collect and show link layer topology for node
show users Show users
show vlans <node> Show cached VLAN information for node
show watchdog Display watchdog information
trace <node1> <node2> Show network path trace between two nodes
To used ICMP proxy Ping subagent should be loaded for ICMP proxy node.
This proxy is used to check node availability when Zones are used.
EIGHT
SNMP
Various SNMP devices might require special measures to get information, e.g. some devices provide additional in-
formation for interfaces only under vendor OIDs, etc. To address this, NetXMS provides a concept of SNMP drivers.
SNMP driver is detected automatically.
If SNMP driver was not automatically detected, it’s possible to set it manually by specifying driver name in custom
attribute snmp.driver on a node.
Possible SNMP driver names are:
• AT
• BAYSTACK
• CAMBIUM-CNPILOT
• CAMBIUM-EPMP
• CATALYST-2900XL
• CATALYST-GENERIC
• CISCO-ESW
• CISCO-GENERIC
• CISCO-NEXUS
• CISCO-SB
• CISCO-WLC
• DELL-PWC
• DLINK
• ERS8000
• EXTREME
• H3C
• HPSW
• IGNITENET
• JUNIPER
• MIKROTIK
• MOXA-EDR
75
NetXMS Administrator Guide, Release 3.8.267
• NET-SNMP
• NETONIX
• NETSCREEN
• NTWS
• OPTIX
• PING3
• PROCURVE
• QTECH-OLT
• RITTAL
• SAF-INTEGRA-B
• SYMBOL-WS
• TB
• UBNT
• WESTERSTRAND
MIB browser shows all loaded MIB configurations, and allows to run SNMP walk on a selected node nodes. Node can
be selected in browser by selecting Set node object. . . option in view menu or by opening MIB Explorer from node
menu.
76 Chapter 8. SNMP
NetXMS Administrator Guide, Release 3.8.267
To run walk user should select line of tree from were will be requested all data. By walk will be requested all OID
subtree of selected item.
After walk is done it’s results will shown in the table below.
In this view is configured which event will be generated on exact trap OID and which OID data will be used as event
parameter data.
78 Chapter 8. SNMP
NetXMS Administrator Guide, Release 3.8.267
Default SNMP credentials can be set in Configuration → SNMP Credentials. It does not matter if credentials are used
for adding nodes manually, through network discovery or with the help of agent registration - in each case SNMP
Credentials configuration value will be checked.
There are 2 types of subtree that provides information about interfaces: old one ifTable and new one ifXTable. Some-
times usage of new one creates error situations. In this situation ifXTable can be disabled. This can be done in Prop-
erties of node in Polling. Or this configuration can be set globally by changing UseIfXTable server configuration
parameter.
80 Chapter 8. SNMP
NetXMS Administrator Guide, Release 3.8.267
If there is need to monitor nodes behind firewall using SNMP, there is option to install on one of the nodes NetXMS
agent, open all required ports for this node and send SNMP request to other nodes in this subnet through installed
agent.
Proxy configuration can be done wile creation of node of for already created node can be change in Communications
tab of node properties. To configure proxy node select node in object selector SNMP Proxy.
82 Chapter 8. SNMP
NetXMS Administrator Guide, Release 3.8.267
By default traps are accepted only from known nodes. To accept all traps set “LogAllSNMPTraps” server configuration
variable to 1.
To correctly send response for SNMPv3, it should be also configured the proxy node for the sender node. It is done in
sender node properties in “Communications” tab, SNMP section.
MIB files (MIBs) describe structure of information transferred via SNMP. Every device can support multiple MIBs,
some of them are standard and public, other can be proprietary and vendor specific. NetXMS uses compiled MIBs to
allow you to select OID and see its description (for example when selecting SNMP data for DCI collection). You do
not need to compile new MIBs if you are OK with direct input of OID.
Valid options:
-d <dir> : Include all MIB files from given directory to compilation
-o <file> : Set output file name (default is netxms.mib)
-P : Pause before exit
(continues on next page)
8.8.2 Troubleshooting
If nxmibc fails, it may be caused by syntax or import errors in your MIB. Try to check it with smilint (part of net-snmp
package) and correct any errors on level 3.
84 Chapter 8. SNMP
CHAPTER
NINE
USER MANAGEMENT
9.1 Introduction
NetXMS has it’s own user database. All NetXMS user accounts stored in backend SQL database. Each account has
it’s own unique login name and identifier. The account may also have a password.
9.2.1 Users
Superuser
Note: Before version 2.1-M0 there was only 1 default user admin with user ID 0 and access to everything by default.
After version 2.1-M0 admin was made a normal user which can be deleted or disabled. As a default user with access
to everything was created system user, that by default is disabled.
NetXMS has built-in superuser with ID 0, which always has full access to the system. Default login name for superuser
is system. By default user is disabled. Superuser account can be renamed or disabled/enabled, but cannot be deleted.
System user can be used to correct access rights to object, that exists, but none has access to it.
85
NetXMS Administrator Guide, Release 3.8.267
9.2.2 Groups
Each user can be member of several groups. Groups are the preferred way to organize access permissions. You should
always grant permission to groups instead of using individual users. That way you will get a much shorter access
control list which is easier to handle. Access rights from multiple groups are summarized to calculate effective user
access rights.
Other groups can also be added as group members, in this case, the user access rights will be calculated by summarizing
the access rights from all the groups in the path to the user.
Everyone Group
NetXMS has built-in virtual group called Everyone. This group always contains all users in the system. It cannot be
deleted, and it’s members list cannot be edited.
NetXMS has 2 types of access rights access rights per system that are described in this section and per object.
System access rights used to grant access to system-wide configuration (like Event processing) and functions (like
agent registration).
By granting the View all alarms access right, the user (or members of the group) will have access to view all generated
alarms. Should it be required to configure alarm viewing access for specific users or groups, please refer to Alarm
Category Configurator.
This is the default method for user authentication. Password provided by user compared against password stored in
NetXMS database.
Password Policy
Various restrictions can be put on internal passwords to force users to choose stronger passwords. The following server
configuration variables controls password policy:
Value Description
1 Password must contain digits
2 Password must contain uppercase letters
4 Password must contain lowercase letters
8 Password must contain special characters
16 Forbid alphabetical sequences (password considered invalid if it contains alphabetical sequence of 3 or
more letters of same case).
32 Forbid keyboard sequences (password considered invalid if it contains sequence of 3 or more characters
that are located on keyboard next to each other, like ASDF).
Complexity flags can be added together to get desired restrictions. For example, to force passwords to contain upper-
case and lowercase letters, PasswordComplexity variable must be set to 6 (2 + 4).
Changes to these configuration variables becomes effective immediately and does not require NetXMS server restart.
9.3.2 RADIUS
If RADIUS authentication method selected password provided by user sent to RADIUS server for validation. User is
granted access if RADIUS server responds with Access-Accept. Communication between NetXMS server and
RADIUS server controlled by the following server configuration variables:
Changes to these configuration variables becomes effective immediately and does not require NetXMS server restart.
Certificate management
CA certificates are searched in the list configured by “TrustedCertificate” configuration parameter in server configura-
tion file.
In “User Manager” view select user properties for required user. Then go to “Authentication” part.
Central Authentication Service (CAS) single sign-on is supported in web interface only. The following server
configuration parameters control CAS operation: CAS.AllowedProxies, CAS.Host, CAS.Port, CAS.Service,
CAS.TrustedCACert, CAS.ValidateURL. See Server configuration parameters for the expanation of mentioned pa-
rameter meaning.
Changes to these configuration variables becomes effective immediately and does not require NetXMS server restart.
* Required fields
Synchronization also can be done manually with ldapsync or just ldap command in server console.
LDAP users and groups are handled in exactly the same was as users from internal database. Only difference is that
LDAP group membership is refreshed on each synchronisation and any non-LDAP user will be removed from the
group.
Login process is completely transparent for the user - user name should match attribute set by LdapMappingName and
password should be current LDAP password for that user.
If users are not synchronized the reason can be found by running manually ldapsync or just ldap command in server
console on debug lever 4.
Log when LDAP sync passed correctly:
˓→ description: (null)
Search base is set incorrectly or sync user does not have access to it:
[11-Sep-2014 15:54:03.138] [DEBUG] LDAPConnection::initLDAP(): Connecting to LDAP
˓→server
Active Directory
Variable Value
LdapConnectionString ldap://10.5.0.35:389
LdapSyncUser CN=user,CN=Users,CN=Customers,DC=Domain,DC=Extranet
LdapSyncUserPassword xxxxxxxx
LdapSearchBase CN=Customers,DC=Domain,DC=Extranet
LdapSearchFilter (objectClass=*)
LdapUserDeleteAction 1
LdapMappingName sAMAccountName
LdapMappingFullName displayName
LdapMappingDescriptiondescription
LdapGroupClass group
LdapUserClass user
LdapGroupUniqueId objectGUID
LdapUserUniqueId objectGUID
LdapSyncInterval 1440
Open LDAP
Variable Value
LdapConnectionString ldap://10.5.0.35:389
LdapSyncUser cn=admin,dc=nodomain
LdapSyncUserPassword xxxxxxxx
LdapSearchBase dc=nodomain
LdapSearchFilter (objectClass=*)
LdapUserDeleteAction 1
LdapMappingName cn
LdapMappingFullName displayName
LdapMappingDescriptiondescription
LdapGroupClass groupOfNames
LdapUserClass inetOrgPerson
LdapGroupUniqueId entryUUID
LdapUserUniqueId entryUUID
LdapSyncInterval 1440
All NetXMS user accounts can be managed from User Manager view available at Configuration → User Manager in
NetXMS Console. Only users with granted system right Manage users can access User Manager.
• To create new user account, select Create new user from view menu or context menu.
• To create new group, select Create new group from view menu or context menu.
• To delete user account, select it in the list, right-click, and select Delete from pop-up menu. You can delete
multiple accounts at a time.
• To modify properties of user or group, select it in the list, right-click, and select Properties from pop-up menu.
• To reset user’s password, select user account in the list, right-click, and select Change password from pop-up
menu.
9.6 Audit
All important user actions are written to audit log. There are two audit logging modes - internal and external. Internal
audit logging is on by default and writes audit records into table in NetXMS database. External audit logging allows
sending audit records to external system via syslog protocol. External audit logging is off by default. Audit logging
controlled by the following server configuration variables:
TEN
OBJECT MANAGEMENT
Object browser is a view in in Management Console. It presents all existing objects as a hierarchical structure. Overall
description of objects can be found in concepts part: Objects.
Object browser has a number of options that define how object tree is displayed.
Object browser has following options:
• Show filter CTRL+F2, that shows search line that has special syntaxes for search. Syntaxes description
can be found there: Filters.
• Show status indicator CTRL+F3
• Hide unmanaged objects
• Hide check templates. This option will not show Business Services templates.
10.1.2 Filters
Buy default search is done by node name. In this type of search can be used ‘*’ and ‘?’ symbols for pattern search.
But there are few prefix that can be used for other search options:
• ‘/’ - will search in comments
• ‘>’ - will search by IP address
10.2 Objects
Detailed information about objects, it’s usage, parents and children can be found in concept chapter, Objects. In this
section will be described only actions and properties that can be applied on different object classes.
97
NetXMS Administrator Guide, Release 3.8.267
10.2.1 Subnet
Property pages:
Except common properties subnets has Map Appearance and Trusted Nodes tabs. Map Appearance tab defines images
that will be used to display this object on a Network Map and drill-down object (object that will be opened when double
click on this object on Network Map). Trusted Nodes is used to define object list that have access to this object from
the script.
Menu items:
Full subnet can be managed or unmanaged. Management status will be applied to all subnet node. If subnet is deleted
and is the only parent of a node, then node also will be deleted with the subnet. Upload file menu item will upload file
from server to all nodes that have agent and have access to upload directory.
Under Tools menu are available predefined object tools that will be executed on each subnet node. More about object
tool configuration can be found there: Object Tools.
Execute server script will open execute server script view where arbitrary script can be executed. Alarms menu item
will open view with all subnet nodes’ alarms. And 802.1x port state will open table with port authentication states,
that can be exported to CSV.
10.2.2 Node
Property pages:
Except common properties node has Communications tab that is responsible for communication options with this
node(like host name, agent proxy and authentication, SNMP proxy and authentication and ICMP proxy), Polling tab
is responsible for disabling pols for specific node, Location is used to configure location of the node, Map Appearance
tab defines images that will be used to display this object on a Network Map and drill-down object (object that will be
opened when double click on this object on Network Map).
Menu items:
Usually interfaces for nodes are created automatically by Configuration poll results, but they can be also created
manually with help of menu item Create interface. . . This interface is a physical port is used just for information
purposes.
Information about service monitoring and Create network service. . . menu item can be found there: Service monitor-
ing.
When node is unmanaged/managed - all it’s children like interfaces and service monitoring are also unman-
aged/managed. In unmanaged state metrics are not collected and no polls are scheduled.
Node can be deleted from NetXMS by Delete menu item. Node is not deleted synchronously, but it is scheduled node
deletion. While node deletion all data bout this node is also collected(like metrics).
If zones are enabled, then zone can be changed using Change zone. . . item. File manager will open agent file manager
view. By default this view will be empty, to configure it refer to Agent file management chapter. Upload file can be
used to upload file from server to node. This action can be applied simultaneously to all nodes.
Take screenshot for now halfway implemented functionality. For now screenshot can be taken only from Windows
machines.
Description of Edit agent’s configuration functionality can be found in Edit configuration file remotely chapter.
Poll options:
Under Tools menu are available predefined object tools that will be executed on selected node. More about object tool
configuration can be found there: Object Tools.
Execute server script will open execute server script view. Were arbitrary script can be executed. Node can be accessed
with $node variable.
MIB Explorer will open MIB explorer view. If geolocation of the node is set, then with help of Geolocation item can be
opened map with shown on it object location. Software Inventory will show full software list for nodes with Windows
systems or Linux systems(that used rpm or deb packages) and have NetXMS agent installed. Service Dependency will
build tree from this node with all container where this node is included. Alarms will open alarm view with alarms only
for this specific node.
Find switch port will open view with log of searches of switch port to which a node is connected. During search the
interfaces will be checked one by one and first successful result will be shown.
802.1x port state will open table with port authentication states, that can be exported to CSV.
Topology menu item contains all options of predefined network maps for this node and some other options:
Routing table IP route from. . . will build network map with route from selected node to node that was selected in
Object selector window. IP route to. . . will build network map with route to selected node from node that was
selected in Object selector window. IP Neighbors will show all IP neighbors of this node.
Switch forwarding database(MAC address table) VLANs Layer 2 Topology
Radio interface Wireless stations
Last values will open Last Values view. Data Collection Configuration will open Data Collection Configuration view,
that is used to configure collected metrics from node.
10.2. Objects 99
NetXMS Administrator Guide, Release 3.8.267
Mobile device objects are added manually. More information about required configuration to monitor mobile devices
can be found there: Monitoring mobile devices.
Property pages:
Mobile Device object has only default property page configuration.
Menu items:
Each phone object can be managed/unmanaged and deleted. In unmanaged state metrics of this device are not collected
and no pols are scheduled. When mobile object is deleted all it’s data is also deleted. No history data will be left.
Execute server script will open execute server script view where arbitrary script can be executed. Geolocation History
will open view were will be shown history of displacement of this device. From the menu can be selected the period
to show on history map. Geolocation will show last known location of this device. Alarms menu item will open view
with all subnet nodes’ alarms.
Last values will open Last Values view. Data Collection Configuration will open Data Collection Configuration view,
that is used to configure collected metrics from node.
10.2.4 Rack
Rack is an object that visualizes server room organization in NetXMS. Node and chassis objects can be assigned to
a rack in node properties, specifying position in the rack, height (number of occupied rack units), orientation (does
it occupy full depth of the rack, or only present on front or back side of the rack). Front and/or rear images can be
selected from Image library.
Rack visualization is available in Object Detail -> Rack view. Left click on a rack unit display a pop-up with brief
information about the node or chassis. Right click will display node or chassis context menu. Double click on a chassis
will open Chassis View in a separate tab.
Status of rack units is denoted with color rectangle on the left edge of the rack.
10.2.5 Chassis
Chassis is an object visualizing a rack-mount chassis that have plug-in modules. Chassis visualization is available in
Object Detail -> Chassis view.
Each node that represents chassis module can have an image that will be displayed atop of chassis image. Status of
each node is denoted with color rectangle in the upper left corner or it’s image. Left click on node will display a
pop-up with brief information about the node. Right click will display node context menu.
It is possible to configure the size of module’s image and it’s position on chassis image. Vertical size and position
could be specified in mm or rack units (RU), while horizontal - in mm or horizontal pitch units (HP). Size calculation
assumes that 1U chassis has 45mm height and 483mm width (including mounting brackets). Position (0, 0) is in the
upper left corner.
You can use a graphic editor, e.g. Gimp to find position values in mm. Open chassis image in Gimp and set image
width to 483 mm using Image -> Scale image. Now in the bottom left corner you can see current coordinates of mouse
cursor in mm.
Chassis module images should be uploaded using Image Library Image library.
10.2.6 Cluster
Is created to display nodes logical organization in cluster. Cluster nodes may have shared resources and networks, pro-
cesses may move between nodes, so metric collection should be organized accordingly. Cluster object provides option
to aggregate collected data from cluster nodes. More about data aggregation can be found there: Data aggregation.
Besides default property pages cluster has also:
• Cluster Resources - there can be configured IP resources of the cluster. Further on Cluster view of Object
Details will be shown current owner of resources
• Cluster Networks
• Poling
• Dashboards - there dashboard can be associated with object, so on right click associated dashboards will
be displayed in the list
• External Resources
• Location
• Map Appearance
• Trusted Nodes
10.2.7 Interface
10.2.10 Condition
Conditions may represent more complicated status checks because each condition can have a script attached. Interval
for evaluation of condition status is configured in Server Configuration Variables as ConditionPollingInterval with
default value 60 seconds. Input values for the condition script can be set in object properties. Such values are accessible
via $1, $2, . . . variables inside the script. If the script returns 0, an activation event with the defined severity is created.
If the script returns any other value, then a deactivation event is created.
Besides default property pages condition has also:
• Events and Status, were can be set activation and deactivation events, source of this objects and status of
active and inactive condition.
• Data, were can be set DCI’s that’s data will be given to a script for condition status calculation.
• Script tab is used to write script that will calculate if condition should be activated or deactivated.
• Map Appearance tab defines images that will be used to display this object on a Network Map and
drill-down object (object that will be opened when double click on this object on Network Map).
• Trusted Nodes is used to define object list that have access to this object from the script.
Menu items:
Condition can be managed/unmanaged. If condition is unmanaged, evaluation of condition is not run. Condition can
be deleted.
10.2.11 Container
Containers can be created in Infrastructure Services tree. Existing nodes and subnets can be added to containers by
using Bind operation, and removed by using Unbind operation. New nodes, conditions, clusters, containers, mobile
devices and racks can also be created. They can be created using required menu item of container under which this
object should appear. Containers and nodes inside them can be moved by Move to another container menu item or
using drag&drop.
Besides default property pages condition has also:
• Automatic bind about this functionality can be found there
• Location is used to configure location of the node
• Map Appearance tab defines images that will be used to display this object on a Network Map and
drill-down object (object that will be opened when double
click on this object on Network Map).
• Trusted Nodes is used to define object list that have access to this object from the script.
Menu items:
There are special menu item for each object that can be created in container. Objects like rack, container, mobile
device, cluster are manually created objects. Node can be manually created or found by network discovery. In case if
it is required to add already existing object to container use Bind. . . menu item. To remove node from container, but
do not delete it use Unbind. . . menu item.
Using Manage/Unmanage all nodes will be managed/unmanaged under container. Container can be deleted. If deleted
container was the only parent of an object, then this object will be also deleted. Upload file. . . will upload file from
server to all nodes under container, same as each tool under Tools menu item will be executed on each node.
Execute server script will open execute server script view. Where an arbitrary script can be executed. Geolocation
will show location of container on geographic map.
Alarms will open alarm view with all active alarms for all children of this container. 802.1x port state will open table
with port authentication states of all devices that are under this container. This information can be exported to CSV.
For each container can be configured automatic binding rules. This can be done in Automatic Bind Rules tab of
container properties.
There can be defined if script should be used for automatic binding, if script should be used for node unbinding and
can be written script it selves.
This script will be executed each configuration poll of each node.
10.3.1 General
Each object has General tab in properties. There can be checked object class and ID, and changed object name. Each
object has unique ID in the system. Object can be accessed by this ID.
Every object can have custom attributes defined either by user or integrated application via NetXMS API. Custom
attributes distinguished by names (an attribute name can contain up to 127 printable characters), and have string
values of unlimited length. However, if you wish to access custom attributes in NXSL scripts as properties of node
object, you should name them conforming to NXSL identifier naming constraints. To create or change value of custom
attribute manually, right-click an object in NetXMS console, and select Properties → Custom Attributes tab.
Each object has it’s own status calculation properties. Status of an object calculated based on:
• Polling results
• Status of child objects (e.g. interfaces of node, nodes under container)
• Active alarms, associated with the object (after an alarm is resolved or terminated, it no longer affects object
status)
• Value of status DCIs (DCI that has Use this DCI for node status calculation property en-
abled)
There are multiple options for status calculation that can be configured for specific objects or globally.
Status calculation has two configuration parts:
• status propagation - the way how status from object is pushed to upper objects;
• status calculation - the way how object is calculating it’s status based on statuses propagated by children objects.
Once child object status is calculated most critical status is taken from status of underlying objects, associated
alarms and status DCIs.
10.3.4 Comments
Each object in Object Tree can have comment. Comment can be set in Properties of the object.
Object access rights controls access to NetXMS objects. Permissions given to an object inherited by all child objects,
unless specifically blocked by turning off Inherit access rights from parent object(s) option in object’s access control
properties. Permissions given at different levels of the object tree summarize to form effective user rights for the
object.
Object details view provides main information about object. Each object has Overview tab that displays general
information about object (like: ID, GUID, Class, and status of the object) and Comments.
10.4.1 Subnet
It is possible to create tools that will be executed on objects. Configured object tools are listed under Tools in object
browser’s context menu. A tool can ran a command on NetXMS server or node, obtain data from SNMP or NetXMS
agent, etc. . .
Tools can be managed in Configuration → Object Tools. There are some predefined object tools that are available after
installation of the system.
If an object tool is not needed for some time it can be just disabled and then enabled when required. When object tool
is disabled it is not shown under “Tools” item of context menu. If an image (16x16 px) is configured for an object
tool, it will be displayed next to object tool name in “Tools” menu.
Tool can have input fields, filter depending on execution object, macro substitution and personal access control con-
figuration.
Internal
The only operation available for now is wakeup that sends magic packet to wake up a node.
Agent Command
This tool will execute command on an agent node and will show it’s output if Command generates output option is
enabled.
SNMP Table
SNMP Table is used to get SNMP table from node on which it is executed and then show results in the table form.
Agent List
Agent List is used to get agent list from node on which it is executed and then show results in the table form. Regular
expression is used to split received data to columns.
Agent Table
URL
Local Command
Local Command tool will execute command on the node, where Desktop Management Console is running and will
show it’s output if Command generates output option is enabled.
This tool type is not visible from Web Console as it is not possible to execute command on web page receiver’s
machine.
Server Command
Download File
Download file tool can be used to monitor agent logs. This tool will retrieve the content of the file from agent.
Server Script
Server Script tool can be used to execute NXSL script from Script Library. This tool provide full range of capabilities
that are available thought NXSL scripting.
Action, file download, local command, and URL tool types allows macro substitution. Any string starting with percent
sign considered macro name and is expanded. The following macros recognized:
Macro Description
%a IP address of event source object.
%g Globally unique identifier (GUID) of event source object.
%i Unique ID of event source object in hexadecimal form. Always prefixed with 0x and
contains exactly 8 digits (for example 0x000029AC).
%I Unique ID of event source object in decimal form.
%n Name of event source object.
%u IP address of event source object for use in URL. Expands into [addr] for IPv6 and
addr for IPv4.
%U User name of user that launched the object tool from user interface
%v NetXMS server’s version.
%[name] Value returned by script. You should specify name of the script from script library.
%{name} Value of custom attribute.
%(name) Value of input field.
%<name> Parameter with given name.
%% Insert % character.
If object tool called from alarm’s pop-up menu the following additional macros are available:
Macro Description
%A Alarm’s text (can be used only in actions to put text of alarm from the same event
processing policy rule).
%c Event’s code.
%m Event’s message text (meaningless in event template).
%N Event’s name.
%s
Event’s severity code as number. Possible values are:
• 0 - Normal
• 1 - Warning
• 2 - Minor
• 3 - Major
• 4 - Critical
%Y Alarm’s id.
Internal object tool is special case of object tools. Macro expansions not performed for Internal object tools.
For any unknown macro name system will try to read custom attribute with given name (attribute search is case
sensitive). If attribute with given name not found, empty string will be inserted.
10.5.3 Properties
Filter
Filters are used to chose on which nodes to show object tool. There are 5 types of filtering. Show object tool:
1. if agent available on a node
2. if node supports SNMP
3. if node SNMP OID matches with provided string
4. if nodes OS matches provided comma separated regular expression list
5. if provided template name matches provided comma separated regular expression list
Access Control
In Access Control tab can be defined which users or groups can execute this action. If the list is empty, only adminis-
trator will be able to execute this action.
Columns
Columns tab is used only for Agent List and SNMP Table object tool types.
For SNMP Table it describes name and type of matching OID from response message.
Input fields
There is option to add input fields for object tool commands. This fields are defined on the Input fields view and added
to command in %(name) format. More about formats can be found in Macro Substitution chapter.
Input field can be one of this types:
• Text
• Password
• Number
NetXMS is delivered with a number of predefined Object Tools. Here is the list of them:
ELEVEN
NETWORK DISCOVERY
11.1 Introduction
NetXMS is capable of discovering your network automatically. Network discovery module can operate in two modes
- passive and active.
In passive mode, information about new hosts and devices obtained from ARP tables and routing tables of already
known devices. NetXMS starts with it’s own ARP cache and routing table.
In active discovery mode, NetXMS server will send an ICMP echo requests to all IP addresses in given range, and
consider each responding address for adding to database. If zoning is used, server sends echo request only in zone
0, in other zones requests are sent by proxies. For each new device found NetXMS server tries to gather additional
information using SNMP and NetXMS agent, and then adds it to database. By default NetXMS server will add all
discovered devices to database, but you can limit it by using discovery filters. Default SNMP credentials can be set in
Default SNMP credentials.
Default intervals are 2 hours for active discovery and 15 minutes for passive discovery. These values can be changed in
Network Discovery configuration. Number of discovery poller threads changes dynamically and is defined by server
configuration parameters ThreadPool.Discovery.BaseSize and ThreadPool.Discovery.MaxSize.
More information about server configuration parameters can be found here.
To change network discovery settings, go to main menu of management console and choose Configuration → Network
Discovery. Configuration form will open:
127
NetXMS Administrator Guide, Release 3.8.267
11.2.1 General
In this section, you can choose network discovery mode, chose if source node of SNMP Trap or syslog source address
should be used for discovery.
11.2.2 Schedule
For passive discovery interval (in seconds) is selected. For active discovery you cen choose either an interval (in
seconds) or cron format schedule (see here for more details).
11.2.3 Filter
In this section, you can define filter for adding new nodes to NetXMS database. Filtering options are following:
No filtering
Any new device found will be added to database. This is the default setting.
Custom script
You can choose NXSL script from the Script Library to work as discovery filter. Custom filtering script will get object
of class NewNode as first parameter (special variable $1), and should return true to allow node inclusion into database.
Automatically generated script
This option can be used if you need only simple filtering. When selected, additional options controls what nodes will
be added to database:
Accept node if it has NetXMS If checked, only nodes with NetXMS agent detected will pass the filter.
agent
Accept node if it has SNMP If checked, only nodes with SNMP agent detected will pass the filter.
agent
Accept node if it is within given Only accept nodes within given address range or subnet. Address ranges can be
range or subnet configured in Address Filters section.
Please note that first two options (NetXMS agent presence and SNMP agent presence) forms OR condition - if both
are checked, any node with either SNMP agent or NetXMS agent will pass. Address range check and first two options
forms AND condition - so if potential node does pass agent presence check, but is not in allowed IP address range,
it will not be accepted. In other words, if all three options are checked, condition for new node to pass filter can be
written as following:
if (node has NetXMS agent or node has SNMP agent) and node within given range then pass
In this section, you can define address ranges for active discovery. NetXMS server will periodically send ICMP echo
requests to these addresses, and consider for addition to database every responding device. This list has no effect if
active discovery is off.
In this section you can define address ranges for automatically generated discovery filter. This list has no effect if
discovery is off or filter is not set to Automatically generated script.
TWELVE
DATA COLLECTION
Every node can have many data collection items configured (see Data Collection for detailed description). NetXMS
server has a set of threads dedicated to data collection, called Data Collectors, used to gather information from the
nodes according to DCI configuration. You can control how many data collectors will run simultaneously, by changing
server configuration parameter NumberOfDataCollectors.
All configured DCIs are checked for polling requirement every second and if DCI needs to be polled, appropriate
polling request is placed into internal data polling queue. First available data collector will pick up the request and
gather information from the node according to DCI configuration. If a new value was received successfully, it’s being
stored in the database, and thresholds are checked. After threshold checking, data collector is ready for processing
new request. Processing of a newly received parameter value is outlined on the figure below.
It is also possibility to push data to server. If DCI source is set to Push, server just waits for new values instead of
polling from a data source.
New in version 2.0-M5: Agent caching mode
By default DCI data is not collected for the time being while connection between server and agent is broken as poll
request could not get till agent. There is special configuration that allows to collect data and store it on agent till
connection with server is restored and collected data is pushed to the server. This option is available for metrics, table
metrics and proxy SNMP metrics. Not implemented for proxy SNMP table metrics and DCIs with custom schedule.
In case of this configuration agent stores DCI configuration locally and does all metric collection and dispatch on
its own. DCI configuration is synchronized on connect, DCI configuration change or SNMP proxy server change.
Information about configuration options can be found here: Agent caching mode.
131
NetXMS Administrator Guide, Release 3.8.267
Data collection for a node can be configured using management console. To open data collection configuration win-
dow, right-click on node object in Object Browser or on a Network Map, and click Data Collection Configuration.
You will see the list of configured data collection items. From here, you can add new or change existing parameters to
monitor. Right click on the item will open pop-up menu with all possible actions.
Each DCI have multiple attributes which affects the way data is collected. Detailed information about each attribute is
given below.
12.2.1 General
Description
Description is a free-form text string describing DCI. It is not used by the server and is intended for better information
understanding by operators. If you use the Select button to choose a parameter from the list, description field will be
filled automatically.
Parameter
Name of the parameter of interest, used for making a request to target node. For NetXMS agent and internal parameters
it will be parameter name, and for SNMP agent it will be an SNMP OID. You can use the Select button for easier
selection of required parameter name.
Available agent parameter names are obtained during Configuration poll.
Origin
Source Description
Internal Data generated inside NetXMS server process (server statistics, etc.)
NetXMS Agent Data is collected from NetXMS agent, which should be installed on target node.
Server collect data from agent based on schedule.
SNMP SNMP transport will be used. Server collect data based on schedule.
Web service Data is objained from JSON, XML, or plain text retrieved via HTTP
Push Values are pushed by external system (using nxpush or API) or from NXSL
script.
Windows Performance counters Data is collected via NetXMS agent running on Windows machine.
Script Value is generated by NXSL script. Script should be stored in Script Library.
SSH Data is obtained from output of ssh command executed through SSH connec-
tion.
MQTT Data is obtained by subcribing to MQTT broker topics.
Network Device Driver Some SNMP drivers (NET-SNMP, RITTAL as of NetXMS v. 3.8) provide pa-
rameters for data collection. E.g. NET-SNMP provides information about stor-
age this way.
Push Agent origin is different from all others, because it represents DCIs whose values are pushed to server by exter-
nal program (usually via nxapush or nxpush command line tool) instead of being polled by the server based on the
schedule. Values can also be pushed from a NXSL script launced on the server.
Data Type
Data type for the parameter. Can be one of the following: Integer, Unsigned Integer, 64-bit Integer, 64-bit Unsigned
Integer, Float (floating point number), or String. Selected data type affects collected data processing - for example,
you cannot use operations like less than or greater than on strings. If you select parameter from the list
using the Select button, correct data type will be set automatically.
Source node
Source node of metrics collection. This can be used when other node provides information about this node. In this
way collected data can be collected and shown on right nodes.
Other example of usage is virtual nodes (nodes with IP 0.0.0.0). In this case node state can be obtained from the DCI
created on this node but collected from the other one.
Data is collected from the same node if no value set.
Polling
Polling mode and interval describe schedule type and interval between consecutive polls, in seconds. However, col-
lecting too many values for too long will lead to significant increase of your database size and possible performance
degradation.
Can be selected one of options:
• Fixed intervals (default) - default value will be taken from DefaultDCIPollingInterval server configuration pa-
rameter.
• Fixed intervals (custom) - value entered on the DCI properties page will be taken.
• Use advanced scheduling - schedules configured in Advanced Schedule page will be used
Storage
This attribute specifies how long the collected data should be kept in database, in days. Minimum retention time is
1 day and maximum is not limited. However, keeping too many collected values for too long will lead to significant
increase of your database size and possible performance degradation.
Possible options:
• Use default retention time - default value will be taken from DefaultDCIRetentionTime server configuration
parameter.
• Use default retention time - value entered on the DCI properties page will be taken.
• Do not save collected data to database - will not save collected data to database, but will store last value in
memory
Last option is used when it is required to show latest (every 1 second collected) data on Dashboard, but it is too much
data to store in database. So 2 DCI configurations are created. One to store historical data collected once per minute
and the second one, that is not stored in database, but is collected every second and up to date displayed on dashboards.
Status
DCI status can be one of the following: Active, Disabled, Not Supported. Server will collect data only if the status is
Active. If you wish to stop data collection without removing DCI configuration and collected data, the Disabled status
can be set manually. If requested parameter is not supported by target node, the Not Supported status is set by the
server.
If you turn on this flag, NetXMS server will use custom schedule for collecting DCI values instead of fixed intervals.
This schedule can be configured on the Schedule page. Advanced schedule consists of one or more records; each
representing desired data collection time in cron-style format.
See Cron format for supported cron format options.
For DCI Collection schedule it’s possible to specify optional sixth cron field for resolution in seconds. It’s not rec-
ommended to use seconds in custom schedules as your main data collection strategy though. Use seconds only if it is
absolutely necessary.
12.2.3 Cluster
In this field you can specify cluster resource associated with DCI. Data collection and processing will occur only if
node you configured DCI for is current owner of this resource. This field is valid only for cluster member nodes.
Data aggregation
This section is responsible for cluster data aggregation way. Aggregate values from cluster nodes option means, that
DCI from cluster will be collected on each node separately and aggregated on cluster using one of the aggregation
options.
Aggregation options:
• Total
• Average
• Min
• Max
In simplest case, NetXMS server collects values of specified parameters and stores them in the database. However,
you can also specify various transformations for original value. For example, you may be interested in a delta value,
not in a raw value of some parameter. Or, you may want to have parameter value converted from bytes to kilobytes.
All transformations will take place after receiving new value and before threshold processing.
Data transformation consists of two steps. On the first step, delta calculation is performed. You can choose four types
of delta calculation:
Function Description
None No delta calculation performed. This is the default setting for newly created DCI.
Simple Resulting value will be calculated as a difference between current raw value and previous raw value.
By raw value is meant the parameter value originally received from host.
Average Resulting value will be calculated as a difference between current raw value and previous raw value,
per second divided by number of seconds passed between current and previous polls.
Average Resulting value will be calculated as a difference between current raw value and previous raw value,
per minute divided by number of minutes passed between current and previous polls.
On the second step, custom transformation script is executed (if presented). By default, newly created DCI does not
have a transformation script. If transformation script is presented, the resulting value of the first step is passed to
the transformation script as a parameter; and a result of script execution is a final DCI value. Transformation script
gets original value as first argument (available via special variable $1), and also has two predefined global variables:
$node (reference to current node object), and $dci (reference to current DCI object).
In case of table DCIs, $1 special variable is an object of type Table.
For more information about NetXMS scripting language, please consult Scripting chapter in this manual.
Transformation script can be tested in the same view, by clicking Test. . . and entering test input data.
12.2.5 Thresholds
For every DCI you can define one or more thresholds. Each threshold there is a pair of condition and event - if
condition becomes true, associated event is generated. To configure thresholds, open the data collection editor for
node or template. You can add, modify and delete thresholds using buttons below the threshold list. If you need
to change the threshold order, select one threshold and use arrow buttons located on the right to move the selected
threshold up or down.
Threshold Processing
As you can see from this flowchart, threshold order is very important. Let’s consider the following example: you
have DCI representing CPU utilization on the node, and you wish two different events to be generated - one when
CPU utilization exceeds 50%, and another one when it exceeds 90%. What happens when you place threshold > 50
first, and > 90 second? The following table shows values received from host and actions taken by monitoring system
(assuming that all thresholds initially unarmed):
Value Action
10 Nothing will happen.
55 When checking first threshold (> 50), the system will find that it’s not active, but condition evaluates to
true. So, the system will set threshold state to “active” and generate event associated with it.
70 When checking first threshold (> 50), the system will find that it’s already active, and condition evaluates
to true. So, the system will stop threshold checking and will not take any actions.
95 When checking first threshold (> 50), the system will find that it’s already active, and condition evaluates
to true. So, the system will stop threshold checking and will not take any actions.
Please note that second threshold actually is not working, because it’s masked by the first threshold. To achieve desired
results, you should place threshold > 90 first, and threshold > 50 second.
You can disable threshold ordering by checking Always process all thresholds checkbox. If it is marked, system will
always process all thresholds.
Threshold Configuration
When adding or modifying a threshold, you will see the following dialog:
Last Last value will be used. If number of polls set to more then 1, then condition will evaluate to true only
polled if it’s true for each individual value of last N polls.
value
Average An average value for last N polls will be used (you have to configure a desired number of polls).
value
Mean de- A mean absolute deviation for last N polls will be used (you have to configure a desired number of
viation polls). Additional information on how mean absolute deviation calculated can be found here.
Diff with A delta between last and previous values will be used. If DCI data type is string, system will use 0, if
previous last and previous values match; and 1, if they don’t.
value
Data col- An indicator of data collection error. Instead of DCI’s value, system will use 0 if data collection was
lection successful, and 1 if there was a data collection error. You can use this type of thresholds to catch
error situations when DCI’s value cannot be retrieved from agent.
Second, you have to select comparison function. Please note that not all functions can be used for all data types. Below
is a compatibility table:
Third, you have to set a value to check against. If you use like or not like functions, value is a pattern string
where you can use meta characters: asterisk (*), which means “any number of any characters”, and question mark (?),
which means “any character”.
Fourth, you have to select events to be generated when the condition becomes true or returns to false. By default,
system uses SYS_THRESHOLD_REACHED and SYS_THRESHOLD_REARMED events, but in most cases you will
change it to your custom events.
You can also configure threshold to resend activation event if threshold’s condition remain true for specific period of
time. You have three options - default, which will use server-wide settings, never, which will disable resending of
events, or specify interval in seconds between repeated events.
You can choose any event to be generated when threshold becomes active or returns to inactive state. However, you
should avoid using predefined system events (their names usually start with SYS_ or SNMP_). For example, you
set event SYS_NODE_CRITICAL to be generated when CPU utilization exceeds 80%. System will generate this
event, but it will also generate the same event when node status will change to ::guilabel::CRITICAL. In your event
processing configuration, you will be unable to determine actual reason for that event generation, and probably will
get some unexpected results. If you need custom processing for specific threshold, you should create your own event
first, and use this event in the threshold configuration. NetXMS has some preconfigured events that are intended to be
used with thresholds. Their names start with DC_.
The system will pass the following seven parameters to all events generated as a reaction to threshold violation:
1. Parameter name (DCI’s name attribute)
2. DCI description
3. Threshold value
4. Actual value
5. Unique DCI identifier
6. Instance (DCI’s instance attribute)
7. Repeat flag
And those on table threshold violation:
1. Table DCI name
2. Table DCI description
3. Table DCI ID
4. Table row
5. Instance
For example, if you are creating a custom event that is intended to be generated when file system is low on free space,
and wish to include file system name, actual free space, and threshold’s value into event’s message text, you can use
message template like this:
File system %6 has only %4 bytes of free space (threshold: %3 bytes)
For events generated on threshold’s return to inactive state (default event is SYS_THRESHOLD_REARMED), parameter
list is different:
1. Parameter name (DCI’s name attribute)
2. DCI description
3. Unique DCI identifier
12.2.6 Instance
Each DCI has an Instance attribute, which is a free-form text string, passed as a 6th parameter to events associated
with thresholds. You can use this parameter to distinguish between similar events related to different instances of the
same entity. For example, if you have an event generated when file system was low on free space, you can set the
Instance attribute to file system mount point.
Sometimes you may need to monitor multiple instances of some entity, with exact names and number of instances not
known or different from node to node. Typical example is file systems or network interfaces. To automate creation of
DCIs for each instance you can use instance discovery mechanism. First you have to create “master” DCI. Create DCI
as usual, but in places where normally you would put instance name, use the special macro {instance}. Then, go to
Instance Discovery tab in DCI properties, and configure instance discovery method and optionally filter script.
Instance discovery creates 2 macros for substitution:
• {instance} - instance name
• {instance-name} - instance user readable description
Discovery Methods
Instance Filter
You can optionally filter out unneeded instances and transform instance names using filtering script written in NXSL.
Script will be called for each instance and can return either a binary value or an array.
If binary value is returned, it has the following meaning: TRUE (to accept instance), FALSE (to reject instance).
If an array is returned, only first element of the array is obligatory, the rest elements are optional (but to include an
element, all preceding elements should be included). Array structure:
Main information about node(Object Details) can be supplemented with DCI information displayed as text(last value)
on Object Details-> Overview page or in graph way on Object Details->:guilabel:Performance tab.
DCI representation in text way can be configured on Other options. Next will be described only graph DCI represen-
tation configuration on Performance tab of Object Details.
Multiple DCIs can be grouped in one graph. To group them use the same group name in “Group” field.
This page provides access control management option to each DCI. If no user set, then access rights are inherited from
node. So any user that is able to read node is able to see last value of this DCI and user that is able to modify node
is able to change and see DCI configuration. When list is not empty, then both access to node and access to DCI are
check on DCI configuration or value request.
12.2.10 Comments
This configuration part can be used for free for text comments. To make additional notes about DCI configuration or
usage.
NetXMS gives you ability to push DCI values when you need it instead of polling them on specific time intervals. To
be able to push data to the server, you should take the following steps:
1. Set your DCI’s origin to Push Agent and configure other properties as usual, excluding polling interval which is
meaningless in case of pushed data.
2. Create separate user account or pick an existing one and give “Push Data” access right on the DCI owning node
to that user.
3. Use nxapush or nxpush utility or client API for pushing data.
Usually DCIs have scalar values. A list DCI is a special DCI which returns a list of values. List DCIs are mostly
used by NetXMS internally (to get the list of network interfaces during the configuration poll, for example) but can
also be utilized by user in some occasions. NetXMS Management Console does not support list DCIs directly but
their names are used as input parameters for Instance Discovery methods. List DCI values can be also obtained with
nxget command line utility (e.g. for use in scripts).
Agent caching mode allows metric data to be obtained for the time being while connection between server and agent
have been broken. This option is available for metrics, table metrics and proxy SNMP metrics. Not implemented for
proxy SNMP table metrics and DCIs with custom schedule. In the absence of connection to the server collected data
is stored on agent, when connection is restored it is sent to server. Detailed description can be found there: How data
collection works.
Agent side cache is configurable globally, on node level, and on DCI level. By default it’s off.
All collected data goes thought all transformations and thresholds only when it comes to server. To prevent generation
of old events it can be set OffileDataRelivanceTime configuration variable to time period in seconds within which
received offline data still relevant for threshold validation. By default it is set to 1 day.
New in version 2.0-M5: Agent caching mode.
12.5.1 Configuration
It can be configured:
• globally - set configuration parameter DefaultAgentCacheMode to on or off.
• on node level - Agent cache mode can be changed to on, off or default (use global settings) in node
properties on Polling page
• on DCI level - Agent cache mode can be changed to on, off or default (use node level settings) in DCI
properties on General page
Last values view provides information about all data collected on a node: DCI last value, last collection timestamp
and threshold status.
It is possible to check last values or raw last values in textual format or as a chart by right clicking on DCI and selecting
corresponding display format.
12.7 Templates
Often you have a situation when you need to collect same parameters from different nodes. Such configuration
making may easily fall into repeating one action many times. Things may became even worse when you need to
change something in already configured DCIs on all nodes - for example, increase threshold for CPU utilization. To
avoid these problems, you can use data collection templates. Data collection template (or just template for short) is a
special object, which can have configured DCIs similar to nodes.
When you create template and configure DCIs for it, nothing happens - no data collection will occur. Then, you can
apply this template to one or multiple nodes - and as soon as you do this, all DCIs configured in the template object will
appear in the target node objects, and server will start data collection for these DCIs. If you then change something in
the template data collection settings - add new DCI, change DCI’s configuration, or remove DCI - all changes will be
reflected immediately in all nodes associated with the template. You can also choose to remove template from a node.
In this case, you will have two options to deal with DCIs configured on the node through the template - remove all
such DCIs or leave them, but remove relation to the template. If you delete template object itself, all DCIs created on
nodes from this template will be deleted as well.
Please note that you can apply an unlimited number of templates to a node - so you can create individual templates for
each group of parameters (for example, generic performance parameters, MySQL parameters, network counters, etc.)
and combine them, as you need.
To create a template, right-click on Template Root or Template Group object in the Object Browser, and click Create
→ Template. Enter a name for a new template and click OK.
To configure DCIs in the template, right-click on Template object in the Object Browser, and select Data Collection
from the pop-up menu. Data collection editor window will open. Now you can configure DCIs in the same way as the
node objects.
To apply a template to one or more nodes, right-click on template object in Object Browser and select Apply from
pop-up menu. Node selection dialog will open. Select the nodes that you wish to apply template to, and click OK (you
can select multiple nodes in the list by holding Control key). Please note that if data collection editor is open for
any of the target nodes, either by you or another administrator, template applying will be delayed until data collection
editor for that node will be closed.
To remove a link between template and node, right-click on Template object in the Object Browser and select Unbind
from pop-up menu. Node selection dialog will open. Select one or more nodes you wish to unbind from template, and
click OK. The system will ask you how to deal with DCIs configured on node and associated with template:
If you select Unbind DCIs from template, all DCIs related to template will remain configured on a node, but association
between the DCIs and template will be removed. Any further changes to the template will not be reflected in these
DCIs. If you later reapply the template to the node, you will have two copies of each DCI - one standalone (remaining
from unbind operation) and one related to template (from new apply operation). Selecting Remove DCIs from node
will remove all DCIs associated with the template. After you click OK, node will be unbound from template.
You can use various macros in name, description, and instance fields of template DCI. These macros will be expanded
when template applies to node. Macro started with %{ character combination and ends with } character. The following
macros are currently available:
Macro Expands to
node_id Node unique id
node_name Node name
node_primary_ip Node primary IP address
script:name String returned by script name. Script should be stored in script library
(accessible via Configuration → Script Library). Inside the script, you
can access current node’s properties via $node variable.
For example, if you wish to insert node’s IP address into DCI description, you can enter the following in the description
field of template DCI:
My IP address is %{node_primary_ip}
When applying to node with primary IP address 10.0.0.1, on the node will be created DCI with the following descrip-
tion:
My IP address is 10.0.0.1
Please note that if you change something in the node, name for example, these changes will not be reflected automati-
cally in DCI texts generated from macros. However, they will be updated if you reapply template to the node.
Once you setup DCI, data starts collecting in the database. You can access this data and work with it in different ways.
Data can be visualized in three ways: in graphical form, as a historical view(textual format) and as DCI summary
table, this layout types can be combined in Dashboards. More detailed description about visualization and layout can
be found there: Data and Network visualisation.
THIRTEEN
EVENT PROCESSING
13.1 Introduction
NetXMS is event based monitoring system. Events can come from different sources (polling processes (status, con-
figuration, discovery, and data collection), SNMP traps, from NXSL scripts and directly from external applications via
client library). All events all are forwarded to NetXMS Event Queue.
NetXMS Event Processor can process events from Event Queue in either sequential or parallel mode. In sequential
mode events are processed one-by-one which guarantees that events will be processed in the same sequence as they
arrive onto NetXMS server. For installation where a lot of events could be generated in a short period of time this
mode can be a bottleneck.
Parallel processing mode allows to process events in several parallel threads, thus allowing to scale horizontally and to
increase processing performance. Number of threads for parallel processing is set by Events.Processor.PoolSize server
configuration parameter.
Event Processing Rules can read/write persistent storage and custom attributes, create/terminate alarms, can run scripts
that are checking other node statuses and care should be taken to ensure that no race condition would occur when
performing parallel processing.
Correct operation is ensured by properly setting Events.Processor.QueueSelector server configuration parameter. This
parameter contains macros that are expanded when an event is created. Events that have same QueueSelector string
will be processed sequentially by one and the same event processing thread, thus ensuring that there will be no race
condition between these events.
Actions taken by event processor for any specific event are determined by a set of rules called Event Processing Policy
(EPP).
Every rule has two parts - matching part (called Condition in the rule configuration dialog), which determines if the
rule is applicable to an event, and action part, which defines actions to be taken for matched events.
Each event passes through all rules in the policy, so if it matches more than one rule, actions specified in all matched
rules will be executed. You can change this behavior by setting Stop Processing flag on a rule. If this flag is set for a
rule and that rule is matched, subsequent rules (with higher rule number) will not be processed.
Event Processing Policy rules are managed using Event Processing Policy Editor. To access the Event Processing
Policy Editor window, press F4 or select Tools → Event Processing Policy menu.
Only one user of NetXMS server can access Event Processing Policy Editor window at a time. Other users will receive
Component locked error message when attempting to open this window.
Changes made in Event Processing Policy Editor are applied at the moment when Save button is clicked.
151
NetXMS Administrator Guide, Release 3.8.267
To expand or collapse a rule, double click on its title or use Expand/collapse button on the right hand side of rule
title.
Event Processing Policy Editor window toolbar buttons have the following meaning (from left to right): Add new rule,
Save changes, Expand all, Collapse all, Horizontal layout, Vertical layout, Cut rule, Copy rule, Paste rule, Delete rule.
To create event policy rule, right click on entry before or after which new Event Processing Policy should appear and
select Insert before or Insert after. Drag and drop can be used for rule reorganization.
To edit Event Processing Policy’s properties, click edit button in right corner of an entry, or double-click text in Filter
or Action text.
Section Description
Condition Sub-sections of Condition section determine, if the rule is applicable to a par-
ticular event. If checkbox Rule is disabled is set, this rule is ignored.
Condition –> Source Objects One or more event’s source objects. This list can be left empty, which matches
any object, or contain nodes, subnets, containers, clusters, etc. . . If you spec-
ify subnet, container, cluster, rack or chassis, any object within it will also be
matched.
Condition –> Events Event code. This field can be left empty, which matches any event, or contain
list of applicable events.
Condition –> Severity Filter Event’s severity. This field contains selection of event severities to be matched.
Condition –> Filtering Script Optional matching script written in NXSL. If this field is empty (or only
contains comments according to NXSL language specification), no additional
checks are performed. Otherwise, the event will be considered as matched only
if the script returns boolean true (or other value that is considered true in
NXSL language, e.g. non-zero number or array). For more information about
NetXMS scripting language please refer to the chapter Scripting in this manual.
Action Sub-sections of Action section determine what actions are performed if an event
meets all conditions of a rule. If checkbox Stop event processing is set, then
subsequent rules (with higher rule number) will not be processed for a given
event. However, actions of given rule will be performed.
Action –> Alarm Action in regard to alarms. Alarm can be created, resolved or terminated or no
action to alarms is done. See Generating and Terminating Alarms from EPP for
more information.
Action –> Persistent Storage NXLS Persistent Storage action like add/update or delete can be performed.
Action –> Server Actions List of predefined actions to be executed. Action execution could be delayed
with ability to cancel a delayed action later on. Execution of action could be
snoozed for a specified period of time. For action configuration refer to Actions
chapter. Delayed execution and snoozing is controlled using timers which can
be referred to using timer key. This allows cancelling a timer or checking, if its
still running from NXSL script.
Action –> Timer Cancellations List of timers to cancel identified by timer keys. This allows to cancel delayed
actions and snooze/blocking timers.
Comments Rule comment which can be multi-line text. The comment is displayed as a
name of the rule.
After all manipulations are done - save changes by pressing save icon.
13.2.1 Examples
This rule defines that for every major or critical event originated from a node named “IPSO” two e-mail actions will
be executed.
Fig. 4: Example 1
13.3 Events
13.4 Alarms
As a result of event processing some events can be shown up as alarms. Usually alarm represents something that needs
attention of network administrators or network control center operators, for example low free disk space on a server.
All alarm events are logged to alarm log. The number of days the server keeps alarm history can be config-
ured by “AlarmHistoryRetentionTime” server configuration parameter. Alarm log can be viewed in “Alarm Log
View”(Alt+F8). This view gives option to query for required information from alarm log.
Attribute Description
Creation time Time when alarm was created.
Last change time Time when alarm was last changed (for example, acknowledged).
State Current state of the alarm, see table bellow
Message Message text (usually derived from originating event’s message text).
Severity Alarm’s severity - Normal, Warning, Minor, Major, or Critical.
Source Source node (derived from originating event).
Key Text string used to identify duplicate alarms and for automatic alarm termination.
There are 2 types of alarm state flows: strict and not strict. This option can be configured in Preference page of Alarms
or on server configuration page, parameter “StrictAlarmStatusFlow”. The difference between them is that in strict
mode Terminate can be done only after Resolve state.
Fig. 6: Strict
On each severity of alarm can be set melody to play. This melody will be played when new alarm in state outstanding
will occur. Melody that should be played should exist on server in wav format. See instruction there: Upload file on
server. By default there are no sounds on alarms.
To set sound open preferences, there select Alarms → Alarm Sounds tab. There in drop-down will be seen all possible
options. If sound will not be chosen, alarm with this severity will come silently.
To configure sounds, open preferences and select Alarms → Alarm Sounds tab. Drop-downs next to each severity level
have a list of available sounds. If no sound is chosen, alarm for given severity will come silently.
When an alarm is generated it will appear in the Alarm Browser where information about currently active alarms can
be viewed.
Alarm Comments
Comment can be created, edited or deleted. All comments will be deleted after alarm termination.
It is possible to schedule emails which contain a summary of all currently active alarms, similar to what can be seen
in the Alarm Browser.
To enable Alarm Summary Emails it is required to configure the following server parameters:
Name
SMTPFromAddr
SMTPFromName
SMTPPort
SMTPRetryCount
SMTPServer
EnableAlarmSummaryEmails
AlarmSummaryEmailSchedule
AlarmSummaryEmailRecipients
Further information on server configuration parameters can be found in Server configuration parameters.
To generate alarms from events, you should edit Alarm field in appropriate rule of Event Processing Policy. Alarm
configuration dialog will look like this:
You should select Generate new alarm radio button to enable alarm generation from current rule. In the Message field
enter alarm’s text, and in the alarm key enter value which will be used for repeated alarms detection and automatic
alarm termination. In both fields you can use macros described in the Macros for Event Processing section.
You can also configure sending of additional event if alarm will stay in Outstanding state for given period of time.
To enable this, enter desired number of seconds in Seconds field, and select event to be sent. Entering value of 0 for
seconds will disable additional event sending.
Alarms generated by rules can by categorised to limit what alarms can be seen by what users. This can be done
by applying a category in the Alarm Category field, which can be created and configured in the Alarm Category
Configurator.
Alarm categories can be created and configured in the Alarm Category Configurator which can be found in Configu-
ration → Alarm Category Configurator menu:
Alarm categories provide the possibility to configure access rights for viewing generated alarms on a per user or per
group basis. When creating an alarm category, it is possible to set the Category name, Description.
Alarm category access rights can be configured by adding users or groups to the access list of the category in the
Access Control property page.
By default, all alarms can be viewed by all users due to the View all alarms system right being set as default to the
Everyone user group. In order to limit the viewing of alarms, this system right should be removed and the access
rights configured in the categories themselves. When the categories have been configured, they can be applied to the
necessary Event Processing Policy rules.
If an alarm category has been applied to an Event Processing Policy rule, it will appear in the Event Processing Policy
Editor when a rule is expanded under the Action section.
You can terminate or resolve all active alarms with given key as a reaction for the event. To do this, select Terminate
alarm radio button or Resolve alarm radio button in alarm configuration dialog and enter value for alarm key. For that
field you can use macros described in the Macros for Event Processing chapter.
13.4.7 Escalation
As it was described in Generating and Terminating Alarms from EPP chapter there is possibility to generate new event
if alarm stay in Outstanding state for too long. Escalation is built on this option. When alarm was generated, but
no action was done from operator in predefined time, new event can be generated and this time email or notification
(SMS, instant message) can be sent to operator or to it’s manager. This escalation process can have as many steps as
it is required.
13.5 Actions
In addition to alarm generation server can perform various types of actions as a reaction to an event. Action types
available in NetXMS are described in the following sections. Each action can be separately disabled in action config-
uration.
After the action is added, it can be edited to add delay time and timer key. This option can be used to prevent
notification sending in case if problem solved quickly enough. Key is a free form string that support macro and delay
is the delay time in seconds before action is executed.
The next example shows the configuration for the situation when there is no need to notify anyone if node went down
and back up in just a minute.
13.5.1 Escalation
One EPP rule can contain multiple actions with different delays. Delay timers are canceled by other rule in case of
problem resolution.
The next example shows that if node went down, then
1. after 1 minute responsible person will be notified if the problem still persists
2. after 30 minutes the support manager will be notified if the problem still persists
3. after 1 hour the IT manager will be notified if the problem still persists
Executes provided command on server node. Check that user under which netxmsd process run has permission to
run this command.
Executes provided command name defined in this nodes agent configuration file. To this command can be given
parameters in format: commandName param1 param2 param3... Check that user under which nxagentd
process run has permission to run this command.
As the Remote Host can be used hostname or object name(int format: @objectName). Second option allows action
execution on node behind proxy.
Send e-mail
Send email to one or more recipients. Multiple recipients can be separated by semicolons. Required server config-
uration parameters to send emails: SMTPFromAddr, SMTPFromName, SMTPRetryCount, SMTPServer. For
detailed description of parameters check Server configuration parameters.
In message text can be used Macros for Event Processing.
Send notification
Send notification, e.g. SMS, to one or more recipients. Multiple recipients can be separated by semicolons. Server
will use Notification channels for actual message sending.
In message text can be used Macros for Event Processing.
Sends XMPP/Jabber message to one or more recipients. Multiple recipients can be separated by semicolons. Required
server configuration parameters to send XMPP message: XMPPLogin, XMPPPassword, XMPPPort, XMPPServer,
EnableXMPPConnector. For detailed description of parameters check Server configuration parameters.
In message text can be used Macros for Event Processing.
This action executes script form scrip library. In action configuration should be defined name of script. Information
about scripting and library can be found there.
Forward event
NetXMS does not support configuration synchronization between two NetXMS servers(Distributed Monitoring). But
it is possible to forward events from one server to another. This option allow synchronize events between servers but
there are some limitation.
Configuration
Limitation
Notification channel driver parameters are specified in Driver configuration input field. Each parameter is given on a
separate line in format: parameter_name=parameter_value. Meaning of parameters is driver dependent and described
separately for each driver. It a parameter is not given, it’s default value will be used.
Once notification channel is created is is seen in channel list with green or read square next to the name - it is channel
status identifier. It should be green if driver initialization was successful or read in other cases. Status column displays
last sent attempt status and Error message column provide more information about driver initialization or sending
error.
Drivers
Driver Description
AnySMS SMS driver for any-sms.biz service (http://any-sms.biz). Configuration parameters:
• login (default: user)
• password (default: password)
• sender (default: NETXMS)
• gateway (default: 28)
Dummy Dummy driver for debugging purposes. Does not send any actual notifications and
only logs them to server log file. This driver has no configuration parameters. It is
necessary to set debug level to debug=6 or higher to get records in the log file.
GSM Driver for serial or USB attached GSM modems with support for standard GSM AT
command set. Configuration parameters:
• BlockSize (default: 8)
• DataBits (default: 8)
• Parity (default: n)
• Port (default: COM1: on Windows platforms, /dev/ttyS0 on other platforms)
• Speed (default: 9600)
• StopBits (default: 1)
• TextMode (1 - text mode, 0 - PDU mode, default: 1)
• UseQuotes (1 - use quotes, 0 - do not use quotes, default: 1)
• WriteDelay (default: 100)
[Channels]
Channel=URL
AnotherChannel=URL
MsTeams requires 2 fields in action configuration:
• Recipient name - channel name defined in Channels section or incoming web-
hook URL
• Message - message to be sent
NXAgent Similar to gsm.ncd, but sending is done via GSM modem, attached to NetXMS agent.
Configuration parameters:
• hostname (default localhost)
• port (default: 4700)
• timeout (seconds, default: 30)
• secret
• encryption - optional parameter. Encryption policy:
0 = Encryption disabled;
1 = Encrypt connection only if agent requires encryption;
2 = Encrypt connection if agent supports encryption;
3 = Force encrypted connection;
• keyFile - optional parameter. Specify server’s key file, if not specified will take
default path.
TextFile Notification driver that writes messages to text file. Configuration parameter:
• filePath (default: /tmp/test.txt)
13.6.1 NXSL
13.6.2 View
Persistent Storage view (Configuration → Persistent Storage) provide information about current state of Persistent
Storage variables.
On various stages of event processing you may need to use macros to include information like event source, severity,
or parameter in your event texts, alarms, or actions. You may use the following macros to accomplish this:
Macro Description
%a IP address of event source object.
%A Alarm’s text. This macro is populated when creating,
resolving or terminating alarm in EPP rule. Macro is
available in that EPP rule for persistent storage and
server action and in subsequent EPP rules. Prior to
version 3.8.314 this macro was available only withing
given EPP rule.
%c Event’s code.
continues on next page
• 0 - Normal
• 1 - Warning
• 2 - Minor
• 3 - Major
• 4 - Critical
If you need to insert special characters (like carriage return) you can use the following notations:
Char Description
\t Tab Character (0x09)
\n New line, CR/LF character pair
\\ Backslash character
FOURTEEN
Network map objects can be found in “Object browser” under “Network Maps”. There can be created and deleted
maps and map groups. Maps can be organized in groups.
177
NetXMS Administrator Guide, Release 3.8.267
Network map can be populated in 2 different ways: automatically and manually. Automatically are populated Layer
2, IP Topology and Internal communication topology. Object filer (in properties of the map) can be created for
automatically populated maps to filter out unrequited nodes.
Objects to map can be added in tow ways:
1. Just drag and drop object to map from object browser.
2. “Add object. . . ” from menu.
To remove object from map:
• Select object, right click and select “Remove from map” option.
• Data Source(there can be configured DCI values and text near them that will be displayed on a link)
– For each Data Source can be configured: Data collection item, name, java format string(like “Text:
%.4f”, syntax http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax), in case
of table DCI also column and instance
Example of DCI data displayed on a link:
14.1.5 Decorations
Decorations like picture and group box can be added to maps. To add picture it should be previously be uploaded to
“Image Library”.
When creating group box you should specify it’s size, color and name.
DCI Container is part of decorations. It can be used to display separate dci values on a map.
Container properties:
• Background color
• Text color
• If border should be shown and it’s color
• Data Source - there can be configured DCI values and text near them that will be displayed
– For each Data Source can be configured: Data collection item, name, format string(like “Text: %.4f”),
in case of table DCI also column and instance
More examples:
DCI Image is part of decorations. It can be used to display DCI status change in pictures.
DCI image properties
• Data source - DCI which data will be taken to process picture display rules
• Column - required only for table DCI
• Instance - required only for table DCI
• Default image - image that will be displayed if no rule is applicable on current value
• Rules
– For each rule can be configured: operation, value, comment and image that will be displayed if
this rule is applicable
Hints:
To use image it should be first uploaded to image library.
Rules are processed from up to down, so if you want to describe in rules something like:
• DCI > 3 => image1
• DCI > 2 => image2
• DCI > 4 => image3
They should go in this sequence:
• DCI > 4 => image3
• DCI > 3 => image1
• DCI > 2 => image2
All object layout properties and display options are applicable only on objects, not on decorations.
Grid
Layout
Objects can be placed manually on a map or can be chosen one of automatic layouts:
• Spring
• Radial
• Horizontal tree
• Vertical tree
• Sparse vertical tree
If there is chosen automatic layout, then after each refresh object best matching place will be recalculated. So if new
object is add - it is just required to refresh map to have correctly placed objects.
If there is chosen manual layout, then after each object movement map should be saved, to save the new place of
object.
Display object as
• Show status background - will display background behind object image according to it’s state.
• Show status icon - will display icon of object state near each object
• Show status frame - will display frame around object icon according to it’s state
• Floor plan - will display nodes as adjustable rectangles. This can be used to display hardware placement on
room plan.
Routing
Zoom
Map can be zoomed in and out with help of top menu buttons and to predefined percentage selected from menu.
14.2 Dashboards
Dashboards are defined by administrator and allow to combine any available visualization components with data from
multiple sources in order to create high-level views to see network (or parts of it) health at a glance. For example,
below is a dashboard showing traffic information from core router, as well as CPU usage from vital nodes:
14.2.1 Configuration
Dashboards is a special type of objects created in Dashboards tree. To create a new dashboard, right click on Dash-
boards root object or any other existing dashboard and select Create dashboard. To configure dashboard content,
open object’s properties and go to Dashboard Elements:guilabel: page. Here you can define number of columns and
manage list of elements. Press Add:guilabel: to add new element. You will be prompted with element type selection
dialog:
When a new element is added, you can edit it by double-clicking on it’s record in the elements list, or by pressing the
Edit button. Each element have Layout property page which controls the element’s layout inside the dashboard, and
one or more element type specific pages to control element’s appearance and displayed information. The following
element types are available:
Label
Line Chart
Line chart.
Bar Chart
Bar chart.
Pie Chart
Pie chart.
Tube chart
Tube chart.
Status Chart
Bar chart which shows current status distribution for nodes under given root.
Status Indicator
Dashboard
Another dashboard object (or multiple objects) rendered as element of this dashboard.
Network Map
Custom Widget
Custom widget provided by third party console plugin. This options allows to add widget from third party loaded
plugin.
Get Map
Alarm Viewer
Availability Chart
Gauge
Web Page
Bar chart built from data collected via single table DCI.
Pie chart built from data collected via single table DCI.
Tube chart built from data collected via single table DCI.
Separator
Table Value
Status Map
Status map has three views: Flat view, Group view and Radial view.
Flat view and Group view display nodes as rectangles, using color to indicate their status. In Flat view nodes are
displayed without grouping, whether in Group view nodes are grouped by containers.
Radial view displays containers and nodes as hierarchical colored radial layout.
DCI Summary Table widget provides summary DCI information about objects under container.
Syslog Monitor
Syslog monitor widget. Has additional option to set root object to filter objects what will be shown in monitor. One
object or a container that contains required objects can be set as root object.
SNMP Trap monitor widget. Has additional option to set root object to filter objects what will be shown in monitor.
One object or a container that contains required objects can be set as root object.
Event monitor
Event monitor widget. Has additional option to set root object to filter objects what will be shown in monitor. One
object or a container that contains required objects can be set as root object.
Map displays hierarchy of objects in Infrastructure Service starting from selected root object.
Rack diagram
Shows rack front, back or both views with object placement in it.
Object tools
Shows buttons with pre configured object tools, that are executed on click.
Object query
with
varName = { code or expression },
varName = { code or expression }
/* Might be as many blocks as required.
* varName is a name of the variable where result of a code will be assigned.
* It can be used later in the code in expression or to be displayed in table
* using the same name in the Object Properties part.
*/
expression
/* Short circuit evaluated expression. This expression is executed first and if it
˓→contains not yet calculated
* varName then variable is calculated and used in expression. Expression that should
˓→result as true or false
*/
This page provides option to configure columns that should be used for ordering, refresh interval and record limit. To
order column write a coma separated list of attribute named or varNames with - sign to order in descending order and
with + sign to order in ascending order.
Object Properties
This property page is used to organize required columns and column order in table. Each column configuration consists
of name of object’s attribute or varName defined in Query page, display name used as a name for a column and data
type of the column.
Example
This example will show how to filter nodes that only have alarms on them, are not in maintenance mode and show
count of critical alarms on the node, order by critical alarm count the list and then by node name. Example shows two
different options how to write the same script so only one of them should be used.
Configuration:
Fig. 3: Option 2. Query script with usual NXSL script and global variables
Fig. 4: Configuration of Properties to display will be the same for both scripts
Result:
Port view
Shows ports schematic with each port status. One object or a container that contains required objects can be set as root
object.
Chart
Chart page is available for all chart type elements: Bar Chart, Bar Chart for Table DCI, Dial Chart, Line Chart, Pie
Chart, Pie Chart for Table DCI, Tube Chart, and Tube Chart for Table DCI. It defines basic properties of a chart.
Data Sources
Data sources page is available for all DCI based elements: Bar Chart, Dial Chart, Line Chart, Pie Chart, and Tube
Chart. Here you can define what DCIs should be used as data sources for the chart. Up to 16 DCIs can be added to
a single chart. You can configure multiple properties for each data source. To edit data source, either double click on
appropriate item in the list, or press Edit button. Data source configuration dialog looks like following:
Property Description
Data collection item DCI object to be used.
Display name Name for this data source to be used in chart’s legend. If left empty, DCI description
will be used.
Colour Allows you to define specific color for this data source or let system to pick one
automatically.
Area chart This option is valid only for line charts and toggles data source display as filled area
instead of line.
Show thresholds This option is valid only for line charts and toggles display of configured thresholds.
Layout
Property Description
Horizontal alignment Horizontal alignment for this element. Possible values are FILL, CENTER, LEFT,
and RIGHT.
Vertical alignment Vertical alignment for this element. Possible values are FILL, CENTER, TOP, and
BOTTOM.
Horizontal span Specify how many grid cells this element will occupy horizontally.
Vertical span Specify how many grid cells this element will occupy vertically.
Width hint Hint for element’s width in pixels. Default value of -1 means that layout manager
will decide width for element.
Height hint Hint for element’s height in pixels. Default value of -1 means that layout manager
will decide width for element.
Web Page
:guilabel`Web Page` property page is available for web page type elements. Here you can define URL to be displayed
and optional title. If title is not empty, it will be displayed above page content.
Dashboard uses grid concept to layout it’s elements. Available space is divided into rows and columns, and each
element occupies one or more cells. The number of columns is configured in dashboard object properties, and number
of rows is calculated automatically based on number of columns, elements, and cells occupied by each element.
Elements are laid out in columns from left to right, and a new row is created when there are no space left for next
element on current row. Each element has horizontal and vertical alignment properties. Default for both is FILL.
Possible alignment values are following:
Value Description
FILL Make element to fill whole cell. Also causes to grab excess free space available inside
dashboard. If more than one element is trying to grab the same space, then the excess
space is shared evenly among the grabbing elements.
CENTER Center element within cell.
LEFT/TOP Align element to left/top of the cell.
RIGHT/BOTTOM Align element to right/bottom of the cell.
To create configuration when console displays multiple dashboards one by one in a loop, follow these steps:
• Create all dashboards you want to show
• Create additional dashboard object, with single element of type Dashboard inside
• Add all dashboards you want to show to dashboard list of that element and set desired time between changing
dashboards.
Fig. 6: Sample configuration of two dashboards displayed in a loop for 40 seconds each.
14.2.5 Tutorials
14.3 Graphs
You can view collected data in a graphical form, as a line chart. To view values of some DCI as a chart, first open either
Data Collection Editor or Last Values view for a host. You can do it from the Object Browser or map by selection
host, right-clicking on it, and selecting Data collection or Last DCI values. Then, select one or more DCIs (you can
put up to 16 DCIs on one graph), right-click on them and choose Graph from the pop-up menu. You will see graphical
representation of DCI values for the last hour.
When the graph is open, you can do various tasks:
By default, you will see data for the last hour. You can select different time interval in two ways:
1. Select new time interval from presets, by right-clicking on the graph, and then selecting Presets and appropriate
time interval from the pop-up menu.
2. Set time interval in graph properties dialog. To access graph properties, right-click on the graph, and then select
Properties from the pop-up menu. Alternatively, you can use main application menu: Graph → Properties. In
the properties dialog, you will have two options: select exact time interval (like 12/10/2005 from 10:00
to 14:00) or select time interval based on current time (like last two hours).
You can turn on automatic graph refresh at a given interval in graph properties dialog. To access graph properties,
right-click on it, and select Properties from the pop-up menu. Alternatively, you can use main application menu:
Graph → Properties. In the properties dialog, select the Refresh automatically checkbox and enter a desired refresh
interval in seconds in edit box below. When automatic refresh is on, you will see Autoupdate message in the status bar
of graph window.
You can change colors used to paint lines and graph elements in the graph properties dialog. To access graph properties,
right-click on it, and select Properties from the pop-up menu. Alternatively, you can use main application menu: Graph
→ Properties. In the properties dialog, click on colored box for appropriate element to choose different color.
You can save current graph settings as predefined graph to allow quick and easy access in the future to information
presented on graph. Preconfigured graphs can be used either by you or by other NetXMS users, depending on settings.
To save current graph configuration as predefined graph, select Save as predefined from graph view menu. The
following dialog will appear:
In Graph name field, enter desired name for your predefined graph. It will appear in predefined graph tree exactly
as written here. You can use -> character pair to create subtree. For example, if you name your graph NetXMS
Server->System->CPU utilization (iowait) it will appear in the tree as following:
You can edit predefined graph by right-clicking on it in predefined graph tree, and selecting Properties from context
menu. On Predefined Graph property page you can add users and groups who will have access to this graph. Note that
user creating the graph will always have full access to it, even if he is not in access list.
If you need to delete predefined graph, you can do it by right-clicking on it in predefined graph tree, and selecting
Delete from context menu.
Current graph settings can be saved as a template graph for an easy template graph creation. The difference between
predefined graphs and template graphs are that template graphs are not configured to view specific DCI`s on a node,
instead they are configured to view DCI names that can be found on many nodes (e.g. FileSystem.FreePerc(/
)). This allows for the creation of certain graph templates to monitor, for example, disk usage that can be reused on
any node to which the appropreate DCI`s are applied on via DCI configuration.
See detailed information on template graphs in the section Template Graph Configuration.
In the Graph name field of the pop-up save dialog, enter the desired name for the template graph by which you can
later identify your it in the Template Graph Configuration which can be found in Configuration→Template Graph
Configuration.
Template graphs can be accessed in the Object Browser as seen on the screenshot above. When a template graph is
created, it will appear in the sub-menus of the nodes found in Object Browser, the rest of the settings can be accessed
by editing a template graph in the Template Graph Configuration.
Template graphs are used to ease the monitoring of a pre-set list of DCI`s on multiple nodes by adding a list of DCI
names to the template source. This allows for the possibility to create templates to monitor specific data on any node
to which the appropriate DCI`s are applied on.
The Template Graph Configuration is used to create and edit template graphs. Properties for already created template
graphs can be brought up by double clicking the template graph you wish to edit and new ones can be added by
pressing the green cross on the top right or by right clicking and selecting Create new template graph.
The above property page provides the possibility to configure the name of the template graph and the access rights.
The user who has created the template graph will have full access to it even though the username will not show up in
the access right list.
Title:
• The title that the graph will have when opened.
• The title can contain special characters described in Macro Substitution.
Options:
Option Description
Show grid lines Enable or disable grid lines for the graph.
Stacked Stacks the graphs of each value on top of one another to be able to see the
total value easier (e.g. useful when monitoring cpu usage).
Show legend Enable or disable the legend of the graph.
Show extended legend Enable or disable the extended legend of the graph (Max, Avg, Min, Curr).
Refresh automatically Enable or disable auto-refresh.
Logarithmic scale Use the logarithmic scale for the graph.
Translucent Enable or disable the translucency of the graph.
Show host names Show host name of the node from which the value is taken.
Area chart Highlights the area underneath the graph.
Line width Adjust the width of the lines.
Legend position Set the position of the legend.
Refresh interval Set the refresh interval.
Time Period:
Provides the possibility to configure the time period of the graph. It is possible to set a dynamic time frame (Back
from now) and a static time frame (Fixed time frame).
Y Axis Range:
Adjust the range of the Y axis on the graph.
It may be necessary to set certain filters for a template graph. This can be useful if the graph contains DCI names that
are only available on NetXMS agent or are SNMP dependant.
More information on filters can be found in Filter.
There are two options to add sources to the template graph. Sources can be added manually by configuring the Data
Source parameters yourself or by importing data source information from DCI`s that have already been applied to
other nodes.
When adding or editing a source, it is possible to use Java regex in the DCI Name and DCI Description fields. This
can be handy when used with the Multiple match option which will use all DCI`s that match the particular regex. The
order in which the DCI list is searched is first by DCI Name and then by DCI Description.
14.4 History
You can view collected data in a textual form, as a table with two columns - timestamp and value. To view values of
some DCI as a table, first open either Data Collection Editor or Last Values view for a host. You can do it from the
Object Browser or map by selection host, right-clicking on it, and selecting Data collection or Last DCI values. Then,
select one or more DCIs (each DCI data will be shown in separate view), right-click on them and choose Show history
from the pop-up menu. You will see the last 1000 values of the DCI.
It is possible to see DCI data as a table where each line is one node and each column is a DCI. It can be configured for
each summary table which DCIs should be present on it.
14.5.1 Configuration
General:
• Menu path - path where this summary table can be found. You can use -> character pair to create subtree like
“Linux->System information”.
• Title - title of the summary table.
Columns:
• This is the list if DCI’s that will be shown on the summary table. Name is the name of column and DCI Name
is DCI parameter name.
– Multivalued column is intended to present string DCIs that contain several values divided by specified
separator. Each value is presented on a separate line in the column.
– If Use regular expression for parameter name matching is enabled, a regular expression is specified in
DCI name field. If several DCIs will be matched on a node, only one will be displayed.
• Import button allows to select a DCI from existing object.
Filter:
• Filter script is executed for each node to determine, if that node should be included in a summary table.
Filter script is defined with help of NXSL scripting language.
14.5.2 Usage
After DCI summary table is configured it can be accessed in container object (Subnet, container. . . ) context menu
under “Summary tables”.
FIFTEEN
GRAFANA INTEGRATION
NetXMS Grafana integration provides the possibility to display important data using the Grafana platform and the
NetXMS WebAPI.
The NetXMS Grafana datasource provides an alternative way of monitoring to that of the NetXMS Web and Desktop
consoles or the Android app, by using the Grafana platform and the NetXMS WebAPI.
15.1.1 Requirements
15.1.2 Installation
See https://grafana.com/grafana/plugins/radensolutions-netxms-datasource/?tab=installation
For installation from source:
1. Clone the NetXMS Grafana datasource GitHub repository from https://github.com/netxms/grafana.
2. Copy the files from the repository to GRAFANA_HOME/data/plugins/datasources/netxms
3. Restart your Grafana server.
4. Login to your Grafana web interface and add the NetXMS datasource in the Data Sources section.
15.1.3 Features
219
NetXMS Administrator Guide, Release 3.8.267
15.2 Configuration
The data source can be configured in the data source management section in the Grafana web ui. The required settings
are the base URL of the NetXMS WebAPI, the username and the password of an account that exists on your NetXMS
server. It is suggested to create a dedicated account to be used with Grafana.
The data source provides the possibility to view currently active Alarms on all nodes or on a per node basis. To do this,
you need to add a new Table Panel to your Grafana dashboard and then edit the Metrics section of the panel settings.
If the NetXMS data source is set as the default data source, it should have been added to the panel automatically, if
not, select the name of the installed NetXMS data source from the Panel data source list and press Add query to add
the data source.`
Once the data source is added to the panel, it is necessary to set the necessary type of data for the data source to
provide, in this case - Alarms.
After the data type has been set, you should see the active alarms appear on the table panel. If you wish to view alarms
from specific nodes only, you can add multiple data sources to your table panel and for each specify the node you wish
to see the active alarms of.
The data source provides the possibility to visualize metrics collected from data collection items configured on nodes.
This can be achieved by adding a Graph Panel to your Grafana dashboard, adding the NetXMS data source to it and
selecting the DCI data type in the Metrics section of the graph panel settings. Once this is done, it is possible to select
the Target node from the list of targets which will then provide a list of the configured DCI`s for the particular node
in the DCI section. By default, the legend of the data provided by the DCI will be the DCI`s description as configured
on the server, it is also possible to set a legend of your choice by entering it in the Legend section.
It is possible to view multiple DCI`s on the same graph by adding multiple data sources to it.
SIXTEEN
Most OS-related metrics (file system, CPU, network) are provided by “platform subagent”, which is loaded automati-
cally by the agent on the startup.
List of available subagents:
• linux
• aix
• hpux
• winnt (all Windows flavors)
• sunos (Solaris)
• darwin (MacOS)
• freebsd
• netbsd
• openbsd
In this section we cover only most common metrics. Detailed list available bellow.
16.1 Example
In examples will be shown only DCI configuration with threshold. Generated event processing options can be found
in Event processing chapter.
In this example monitoring of running “mysqld” process will be configured and one threshold will be added: when
process count is less then 1 (process is not running).
Create DCI for Process.Count(*) metric to monitor “mysqld” process count.
223
NetXMS Administrator Guide, Release 3.8.267
Create threshold. It will be triggered when process count is not equal to 1(process is not running). As prerequisite it
was created 2 events.
Fig. 1: Events
Fig. 2: Threshold 1
In this example monitoring of free space in percents for / disk will be configured and two thresholds will be added:
when disk space less then 15% and less then 7%.
Create DCI for FileSystem.FreePerc(*) metric to monitor space on /.
Create 2 thresholds. One will be triggered when free space is less than 15% and other one when free space is less than
7%. Before threshold creation was created 3 events:
Fig. 3: Events
Fig. 4: Threshold 1
Fig. 5: Threshold 2
Fig. 6: Both
This example will show how to configure monitoring of CPU usage and create event when CPU usage is more than
90% for more than 5 minutes.
Create DCI for System.CPU.LoadAvg metric.
Create threshold that will create event in case if last 5 values are more than 90 (last 5 minutes CPU usage is more than
90%).
Fig. 7: Events
Fig. 8: Threshold
SEVENTEEN
Monitoring of file system is implemented by OS subagents. Full description of this functions can be found there.
There is provided option to get file hash, creation, last edit and other timestamps, file size and number of files in the
directory. In this sections will be shown only the most commonly used configurations.
17.1 Examples
In examples will be shown only DCI configuration with threshold. Generated event processing options can be found
in Event processing chapter.
17.1.1 Example 1
In this example will be shown how to check that specific folder exceed specified size.
Create DCI for File.Size(*) metric to monitor folder size. Required parameters: /path,*,1.
231
NetXMS Administrator Guide, Release 3.8.267
In threshold it should be checked that last value is less than 2 GB. That mean that returned value should be less than 2
000 000 000 bytes.
Fig. 1: Threshold
17.1.2 Example 2
In this example will be configured monitoring that in exact folder exist files that was modified less then half an hour
ago.
Create DCI for File.Count(*) metric to monitor file count in folder /path, that match any pattern, folder should be
checked recursively, file match any size, files are created less than 30 minutes ago. This conditions will be given to
metric as this parameters: path,*,1,0,-1800.
In threshold it should be checked that at least one file meeting conditions exists. That mean that file count should be
more than 1. Prerequisite is to create 2 events.
Fig. 2: Events
Fig. 3: Threshold
EIGHTEEN
LOG MONITORING
With NetXMS you can monitor changes in text log files, Windows Event Log, and built-in syslog server. All log mon-
itoring done by agents, except for built-in syslog server. In general, most common log processing goes as following:
1. When new line added to log file, it is passed to appropriate log parser
2. If line matched one of the patterns, an event associated with this pattern is sent to NetXMS server.
3. Server receives event and passes it to event processing policy as usual, with event source set to node from which
event was received.
For text log files, agent keeps status information about monitored files in memory only. This means that if the agent
was stopped for a period of time, lines that were added to log file during that time will not be parsed.
For Windows Event Log agent keeps status information in Windows registry. On agent start records that were added
while the agent was stopped will be parsed.
Log parser also provides some additional statistic information through Metrics. More information can be found in Log
parser parameters chapter.
To be able to monitor logs with NetXMS agent, you should load LOGWATCH subagent. There are two options to define
parser configuration:
1. Create log parser rule files on the monitored system and define them in LOGWATCH part of agent configuration.
2. Create log parser policy and apply it to all required nodes. In this case file will be automatically created on the
file system and added to processing. More information about Agent Policies
Note: Logs files with same processing rules can be configured in the same parser configuration file.
SubAgent = logwatch.nsm
237
NetXMS Administrator Guide, Release 3.8.267
NetXMS has built-in syslog server, which can be used to receive logs from network devices and servers. It is also
possible to parse incoming syslog messages in a way similar to Windows Event Log monitoring. To parse syslog mes-
sages, LOGWATCH subagent is not required – parsing is done by the server itself. You only need to define monitoring
rules in Configuration → Syslog Parser
<parser>
<file>file name</file>
<!-- more <file> tags can follow -->
<macros>
<macro name="name">macro body</macro>
<!-- more <macro> tags can follow -->
</macros>
<rules>
<rule>
<match>regexp</match>
<id>event id</id>
<level>severity level</level>
<source>event source</source>
<event>event</event>
<context>context</context>
</rule>
<!-- more <rule> tags can follow -->
</rules>
</parser>
Note: Entire <macros> section can be omitted. Empty <rule> tag will match any line (like <rule>
<match>.*</match> </rule>).
In the <file> tag you should specify log file to apply this parser to. To specify Windows Event Log, prepend it’s
name with asterisk (*), for example *System. Multiples <file> tags can be used - in this case same rules will be
applied to all files.
In file and folder names the following macros can be used:
• Environment variables as %{ENV_VAR_NAME}
• strftime(3C) macros (e.g. C:\Windows\system32\dhcp\DhcpSrvLog-%a)
• Text inside ` braces will be executed as a command and first line of output will be taken
18.6 Macros
In the <macros> section you can define macros for use in matching rules. For example, it can be useful to define
macro for a timestamp preceding each log record and use it in matching rules instead of actual regular expression. You
can define as many macros as you wish, each within it’s own <macro> tag. Each macro should have unique name,
defined in name attribute, and can be used in matching rules in form @{name}.
Example: you need to parse log file where each line starts with timestamp in format dd/mm/yy HH:MM:SS. You
can define the following macro:
<macros>
<macro name="timestamp">dd/mm/yy HH:MM:SS</macro>
</macros>
<rules>
<rule>
<match>@{timestamp}.*([A-Za-z]+) failed.*</match>
<event>12345</event>
</rule>
<rule>
<match>@{timestamp}.*error.*</match>
<event>45678</event>
</rule>
</rules>
Please note that <macros> section always should be located before <rules> section in parser definition file.
In the <rules> section you define matching rules for log records.
Each rule is placed inside it’s own <rule> tag. Each rule can have additional options:
Inside the <rule> section there are the following additional tags: <match>, <description>, <event>, and
<context>. Only <match> section is mandatory – it specifies regular expression against which log record should
be matched. All other tags are optional and define parser behavior if a record matches the regular expression.
Tag <match> contains a PCRE compliant regular expression that is used to match log records. Parts enclosed in
parenthesis are extracted from log record and passed as arguments of generated event. You can use macros defined
in Macros section. Also, it is possible to define inverted match rules (rules when log record considered matching if it
does not match regular expression). Inverted match can be set by setting attribute invert to 1. Other possible option
that can be configured is number of times that expression should be matched to generate event.
Some examples:
<match>^Error: (.*)</match>
This regular expression will match any line starting with word Error:, and everything after this word will be ex-
tracted from the log record for use with an event.
This regular expression will match any line containing at least 3 consecutive digits. And event will be generated only
if this regular expression will be matched 3 or more times in 2 minutes(120 seconds). Matched count won’t be reset
once mark is reached, so if expression is matched more than 3 times in 2 minutes, event will be generated more than
one time.
<match invert="1">abc</match>
This regular expression will match any line not containing character sequence abc.
Possible attributes for tag <match>:
Tag <id> can be used to filter records from Windows Event Log by event ID. You can specify either single event ID
or ID range (by using two numbers separated with minus sign). For example:
<id>7</id>
<id>10-20</id>
will match records with ID in range from 10 to 20 (inclusive). This tag has no effect for text log files, and can be used
as a synonym for <facility> tag for syslog monitoring.
Tag <source> can be used to filter records from Windows Event Log by event source. You can specify exact event
source name or pattern with * and ? meta characters.
Some examples:
<source>Tcpip</source>
<source>X*</source>
will match records with event source started from letter X. This tag has no effect for text log files, and can be used as
a synonym for <tag> tag for syslog monitoring.
Tag <level> can be used to filter records from Windows Event log by event severity level (also called event type in
older Windows versions). Each severity level has it’s own numeric value, and to filter by multiple severity levels you
should specify sum of appropriate values (bitmask). Severity level numerical values are the following:
Some examples:
<level>1</level>
<level>6</level>
will match all records with severity level Warning or Information. This tag has no effect for text log files, and can be
used as a synonym for <severity> tag for syslog monitoring.
Tag <facility> can be used to filter syslog records (received by NetXMS built-in syslog server) by facility code.
The following facility codes can be used:
Code Facility
0 kernel messages
1 user-level messages
2 mail system
3 system daemons
4 security/authorization messages
5 messages generated internally by syslogd
6 line printer subsystem
7 network news subsystem
8 UUCP subsystem
9 clock daemon
10 security/authorization messages
11 FTP daemon
12 NTP subsystem
13 log audit
14 log alert
15 clock daemon
16 local use 0 (local0)
17 local use 1 (local1)
18 local use 2 (local2)
19 local use 3 (local3)
20 local use 4 (local4)
21 local use 5 (local5)
22 local use 6 (local6)
23 local use 7 (local7)
You can specify either single facility code or facility code range (by using two numbers separated by minus sign). For
example:
<facility>7</facility>
<facility>10-20</facility>
will match records with facility code in range from 10 to 20 (inclusive). This tag has no effect for text log files, and
can be used as a synonym for <id> tag for Windows Event Log monitoring.
Tag <tag> can be used to filter syslog records (received by NetXMS built-in syslog server) by content of tag field.
You can specify exact value or pattern with * and ? meta characters.
Some examples:
<tag>httpd</tag>
<tag>X*</tag>
will match records with tag started from letter X. This tag has no effect for text log files, and can be used as a synonym
for <source> tag for Windows Event Log monitoring.
Tag <severity> can be used to filter syslog records (received by NetXMS built-in syslog server) by severity level.
Each severity level has it’s own code, and to filter by multiple severity levels you should specify sum of appropriate
codes. Severity level codes are following:
Code Severity
1 Emergency
2 Alert
4 Critical
8 Error
16 Warning
32 Notice
64 Informational
128 Debug
Some examples:
<severity>1</severity>
<severity>6</severity>
will match all records with severity level Alert or Critical. This tag has no effect for text log files, and can be used as
a synonym for <level> tag for Windows Event Log monitoring.
Tag <description> contains textual description of the rule, which will be shown in parser trace.
Tag <event> defines event to be generated if current log record match to regular expression defined in <match>
tag. Inside <event> tag you should specify event name or event code to be generated. All matched capture groups
will be given to the event as an event parameters.
Event tag has tag attribute. If the attribute is set, then it will be added to the selected event tag list.
Tag <context> defines activation or deactivation of contexts. This option can be used for multi line match. First
line sets context and next generates event in case if context was set. Examples can be found further in Examples of
Parser Definition File section.
It has the following format:
Action Description
clear Deactivate (clear “active” flag of) given context.
set Activate (set “active” flag of) given context.
reset Defines how context will be deactivated
Reset Description
mode
auto Deactivate context automatically after first match in context (match rule with context attribute set
to given context).
manual Context can be deactivated only by explicit <context action="clear"> statement.
Both action and reset attributes can be omitted; default value for action is set, and default value for reset
is auto.
Tag <exclusionSchedules> defines time when file should not be parsed. Each cron expression should be defined
in <schedule>. This should be used to define time when file should not be opened. Once time does not match cron
file will be reopened and all added lines will be parsed. See Cron format for supported cron format options.
Example:
<parser>
<file>/var/log/messages</file>
<rules>
<rule>
<match>error</match>
<event>USR_APP_ERROR</event>
</rule>
</rules>
<exclusionSchedules>
<schedule>0-2 0 * * *</schedule>
</exclusionSchedules>
</parser>
Generate event with name USR_APP_ERROR if line in the log file /var/log/messages contains word error:
<parser>
<file>/var/log/messages</file>
<rules>
<rule>
<match>error</match>
<event>USR_APP_ERROR</event>
</rule>
</rules>
</parser>
Generate event with name SYS_PROCESS_START_FAILED if line in the log file C:\demo.log contains word
process: and is immediately following line containing text process startup failed; everything after word
process: will be sent as event’s parameter:
<parser>
<file>C:\demo.log</file>
<rules>
<rule>
<match>process startup failed</match>
<context action="set" reset="auto">STARTUP_FAILED</context>
</rule>
<rule context="STARTUP_FAILED">
<match>process:(.*)</match>
<event>SYS_PROCESS_START_FAILED</event>
</rule>
</rules>
</parser>
The log parser can send parameters to events. All capture groups will be sent to the event as parameters. For Windows
additional parameters are provided.
Number Description
1 to n Capture groups
n+1 Windows publisher name
n+2 Windows event id
n+3 Windows severity
n+4 Windows record Id
n+5 to k Windows event strings
Consider the following line is received via syslog, or added to a monitored file:
24.04.2015 12:22:15 1 5 system,error,critical login failure for user testUser from 11.
˓→2.33.41 via ssh
We can extract username and login method from the syslog message, and pass it as parameters to an event with the
following rule:
Username will be sent to the event as %1, IP address will not be sent, and login method will be sent as %2.
Log parser provides some additional statistic information through Metrics. Metrics take name of particular parser as
an argument. If name is not set, then file name is used.
Statistic information is reset on agent startup and when log parser policy is reapplied.
Available parameters:
Name Description
LogWatch.Parser.Status(name)
Parser name status
LogWatch.Parser.MatchedRecords(name)
Number of records matched by parser name
LogWatch.Parser.ProcessedRecords(name)
Number of records processed by parser name
Name Description
LogWatch.ParserList
List of parser names. If no name is defined then parser file name will be used.
NINETEEN
NetXMS can collect and centrally store Windows event logs. Collection is performed by NetXMS agents. It’s possible
to filter by log type, Source and Event IDs at agent side to reduce network traffic consumption.
Windows events received by NetXMS server are stored in the database and can later be viewed in View → Windows
event log. Upon reception event logs can be parsed according to rules and NetXMS events can be generated.
Agent configuration to enable Windows Event Log Synchronization can be done in two ways:
1. In agent’s configuration file
2. Using Agent Configuration policy. For more information see Agent Policies.
Windows Event Log Synchronization subagent should be enabled in agent configuration:
SubAgent=wineventsync.nsm
Logs that should be monitored (Application, Security, etc) are specified in WinEventSync section:
[WinEventSync]
EventLog=Application
EventLog=Security
EventLog=System
With above configuration all records in the specified logs will be synchronized. It is possible to configure per-log
settings to filter only part of records. Per-log configuration is specified in sections named according to log name, e.g.
WinEventSync/System.
Filtering by Event IDs is done using parameters IncludeEvent and ExcludeEvent. You can configure a range
like 100-200. Comma separated lists are not supported, you can however add multiple Include/ExcludeEvent lines.
By default, if no IncludeEvent or ExcludeEvent are given, all IDs in that log will be synced. Explicit Includes
override Excludes. So if you configure an IncludeEvent=201 and an ExcludeEvent=200-300, you will receive all
Events except 200 and 202-300.
To exclude all Event IDs, use ExcludeEvent=0-65535, then you can use IncludeEvent to select only the IDs
you need.
[WinEventSync/Security]
IncludeEvent=4624-4625
IncludeEvent=4800-4803
ExcludeEvent=0-65535
249
NetXMS Administrator Guide, Release 3.8.267
[WinEventSync/System]
IncludeSource=Microsoft-Windows-WindowsUpdateClient
ExcludeSource=*
Filtering by severity level (also called event type in older Windows versions) is done using parameter
SeverityFilter. Each severity level has it’s own numeric value, and to filter by multiple severity levels you
should specify sum of appropriate values (bitmask). Or alternatively you can specify severity level names separated
by commas. Below are level names and their values:
Below examples will have same result of filtering only Warning and Error records:
[WinEventSync/System]
SeverityFilter = 0x012
[WinEventSync/System]
SeverityFilter = 18
[WinEventSync/System]
SeverityFilter = Warning,Error
Agent log mesages related to windows event log synchronization are written with tag winsyncevent. For de-
bugging you can add DebugTags=winsyncevent:6 to agent configuration - this will set debug level 6 for that
tag.
Upon being received on server Windows events are parsed accoriding to rules defined in Configuration → Windows
event parser. Rules can be edites in two ways - using graphical editor or XML editor. When switching from one editor
to another all entered information is automatically converted.
If Process all checkbox is not set, rules are processed until first match. If it’s set, all rules are always processed.
In the Macros section you can define macros for use in matching rules. For example, it can be useful to define macro
for IP address and use it in matching rules instead of actual regular expression. You can define as many macros as you
wish. Each macro should have unique name, and can be used in matching rules in form @{name}.
A rule can have multiple conditions - regular expression match, severity level, Event ID, Source, log type.
Matching regular expression contains a PCRE compliant regular expression that is used to match Windows event
log records. Parts enclosed in parenthesis are extracted from Windows event log record and passed as arguments of
generated NetXMS event. You can use macros defined in Macros section. If Invert checkbox is set, Windows event
log record will be considered matching if it does not match regular expression.
Level can be used to filter records from Windows Event log by event severity level (also called event type in older
Windows versions). Each severity level has it’s own numeric value, and to filter by multiple severity levels you should
specify sum of appropriate values (bitmask). Severity level numerical values are the following:
Id can be used to filter records from Windows Event Log by event ID. You can specify either single event ID (e.g. 7)
or ID range by using two numbers separated with minus sign (e.g. 10-20 will match records with ID in range from
10 to 20 inclusive).
Source can be used to filter records from Windows Event Log by event source. You can specify exact event source name
or pattern with * and ? meta characters. E.g. Tcpip will match records with event source Tcpip (case-insensitive),
and X* will match records with event source started from letter X.
Log name allows to filter records by Windows Event Log name. You can specify exact name or pattern with * and ?
meta characters.
Description contains textual description of the rule. It is printed in parser trace in the log file.
When a rule is mathed the following actions can be performed:
• Generate NetXMS event. Event generation is optional - it could be useful to have rules that work as
exclusion - match specific conditions and do not perform any actions.
• Break. In this case the following rules will not be processed even if Process all is set.
• Do not save to database. If this is set,
mached Windows Event Log record will not be saved to the database.
The log parser can send parameters to events. All capture groups will be sent to the event as parameters.
Number Description
1 to n Capture groups
TWENTY
SSH MONITORING
NetXMS can execute commands via SSH connection and save the output as DCI values.
SSH connection are always established via agent. For this to work, ssh.nsm subagent should be enabled in agent
config file.
Subagent uses built-in libssh. It reads configuration in standard ssh format from ~/.ssh/config. It’s also possible to
specify custom location for configuration file by adding ConfigFile= into [SSH] section of agent configuration
file.
If zoning is not used, agent running on NetXMS server is used for SSH connections. If zoning is used, zone proxies
are used (and if a zone has no proxies configured, agent on NetXMS server is used as last resort).
Username and password are specified in Node properties -> Communications -> SSH. If proxy node is specified on
this property page, connection will be performed via that node only.
In DCI properties SSH origin should be chosen. Parameter is the actual ssh command that is executed.
Only first line of the output is stored as DCI value. For numeric data type output is parsed from beginning till first
non-numeric character.
253
NetXMS Administrator Guide, Release 3.8.267
There’s also SSH.Command(*) parameter of origin NetXMS Agent that works in a similar way, but target and
credentials are specified as arguments. It’s also necessary to manually specify Source node, otherwise agent of the
monitored node will be used for establishing ssh connection.
Parameter Description
SSH.Command(target,login,password,command) %{node_primary_ip} macro
can be used to specify node’s
primary IP address as target.
TWENTYONE
SERVICE MONITORING
There are two options to add service monitoring: the first one is to add it through menu option Create Network
Service. . . as an object with the status that will be propagated on a node, and the second one is to add it’s monitoring
as DCI.
Object representing network service running on a node (like http or ssh), which is accessible online (via TCP IP).
Network Service objects are always created manually. Currently, the system works with the following protocols -
HTTP, POP3, SMTP, Telnet, SSH and Custom protocol type. For Custom protocol, a user should define the TCP
port number and the system will be checking whether that port is available. For the predefined standard services the
system will also check whether an appropriate response is returned. In case of SMTP, the system will send a test mail,
in case of POP3 – try to log in with a certain user, in case of HTTP – check whether the contents of a desired web
page correspond to a certain given template. As soon as the Network Service object is created, it will be automatically
included into the status poll. Each time when the status poll for the particular node is carried out, all Network Service
objects are polled for a reply. If an object’s reply corresponds to a certain condition, its status is set as NORMAL. If
an object is not responding, it’s status will be changed to CRITICAL. It is possible to create a DCI that will collect
status of Network Service object.
In default configuration request is done with help of Port Check subagent on the server node. If it should be done
through different node is should be changed in it’s properties after service creation by selecting Poller node. There is
also possibility to set quantity of polls that is required to be sure that state have changed.
255
NetXMS Administrator Guide, Release 3.8.267
Second option is to use DCI to monitor service. There are 2 subagents that provide service monitoring metrics:
PortCheck and NetSVC. It is recommended to use NetSVC for all curl supported protocols, as it can check not only
availability, but also response. For unsupported protocols Custom check of PortCheck subagent can be used.
For HTTP services there is also option to use ECS subagent. This subagent has only 3 Metrics. Two of them calculate
hash and last one measure time.
This subagent can be used to check TCP ports and specifically implements checks for common services. It is highly
recommended to use netsvc subagent especially for HTTP and HTTPS monitoring.
When loaded, PORTCHECK subagent adds the following Metrics to node Metric list:
Parameter Description
ServiceCheck.Custom(target,port[,timeout]) Check that TCP port is open on
target. Optional argument timeout
specifies timeout in milliseconds,
if it’s not provided, default time-
out from *PORTCHECK section
of agent’s configuration file will be
used. This is a very simple test that
does nothing more than checking if
the port is open.
ServiceCheck.HTTP(target,[port],URI,hostHeader[,regex[,timeout]]) Check that HTTP service is run-
ning on target. Optional argu-
ment port specifies the port to
connect to, otherwise 80 will be
used. The URI is NOT a URL
it is the host header request URI.
As an example to test URL http:
//www.netxms.org/index.html enter
www.netxms.org:/index.html. host-
Header is currently not used, but
may be the Host option at some
point in the request made. Optional
argument regex is PCRE compli-
ant regular expression to check re-
turned from the request, otherwise
“^HTTP/(1.[01]|2) 200 .*” will be
used. Optional argument timeout
specifies timeout in milliseconds.
ServiceCheck.POP3(target,username,password[,timeout) Check that POP3 service is running
on target and that we are able to lo-
gin using the supplied username and
password. Optional argument time-
out specifies timeout in millisec-
onds.
ServiceCheck.SMTP(target,toAddress[,timeout]) Check that SMTP service is running
on target and that it will accept an
e-mail to toAddress. The e-mail will
be from noreply@DomainName us-
ing the DomainName option in the
config file or its default value (see
below). Optional argument timeout
specifies timeout in milliseconds.
ServiceCheck.SSH(target[,port[,timeout]]) Check that SSH service is running
on target. Optional argument port
specifies the port to connect with,
otherwise 22 will be used. Optional
argument timeout specifies timeout
in milliseconds.
ServiceCheck.Telnet(target[,port[,timeout]]) Check that Telnet service is running
on target. Optional argument port
specifies the port to connect with,
otherwise 23 will be used. Optional
argument timeout specifies timeout
in milliseconds.
Value Description
0 Success, connection to target was established and expected response was received.
1 Invalid arguments were passed.
2 Cannot connect to target.
3 Invalid / Unexpected response from target.
All configuration parameters related to PORTCHECK subagent should be placed into *PORTCHECK section of
agent’s configuration file. The following configuration parameters are supported:
Configuration example:
MasterServers = netxms.demo
SubAgent = portcheck.nsm
[portCheck]
DomainName = netxms.demo
Timeout = 5000
This subagent can be used to check network services supported by libcurl. More information about syntax can be
found here: http://curl.haxx.se/docs/manpage.html.
This subagent will add this Metrics to node Metric list:
Parameter Description
Service.Check(URL[, regex]) Check if data retrieved from ULR matches regular expression regex.
regexcan be omitted, it that case “^HTTP/(1.[01]|2) 200 .*” will be used.
Value Description
0 Success, connection to target was established and expected response was received.
1 Invalid arguments were passed.
2 Cannot connect to target.
3 Invalid / Unexpected response from target.
“^HTTP/(1.[01]|2) 200 .*” - this is default value and can be omitted in the expression.
Note: If agent is build from sources, then libcurl-dev should be installed to build netsvc subagent.
21.2.3 ECS
This subagent works with HTTP only. It can be used to measure page load time and checking page hash. Request
timeout for this subagent is 30 seconds.
Parameter Description
ECS.HttpSHA1(URL) Calculates SHA1 hash of provided URL
ECS.HttpMD5(URL) Calculates MD5 hash of provided URL
ECS.HttpLoadTime(URL) Measure load time for provided URL
MasterServers = netxms.demo
Subagent = ecs.nsm
TWENTYTWO
NetXMS has built-in data collection mechanism using web services, allowing to extract data for DCIs from JSON,
XML, or plain text responses to HTTP requests. Data collection from web services is done via NetXMS agent. If
zoning is not used (or for Default zone), agent running on NetXMS server is used. If zoning is used, zone proxies are
used (and if a zone has no proxies configured, agent on NetXMS server is used as last resort).
Starting from version 3.8 of NetXMS agent data collection from web services is disabled by default. To enable it, add
EnableWebServiceProxy=yes to agent configuration file and restart the agent.
Common configuration related to multiple metrics and nodes is set up in web service definition editor accessible via
Configuration -> Web Service Definitions menu.
261
NetXMS Administrator Guide, Release 3.8.267
DCI configuration provides DCI origin “web service”. Parameter name for this origin contains web service definition
name with optional arguments and path to document element that has to be retrieved (or PCRE compliant regex with
one capture group for text responses).
For example:
• WebService1:/system/cpu/usage
• WebService2(eth0):/stat/bytesIn
• WebService3(10,20,30):^(\d*)
Service arguments can be inserted into request URL or headers using macros %1, %2, and so on. For XML and JSON
responses path to document element should start from /. XML response, according to standard, should have only one
upper level tag. For text response, first capture group of regular expression is returned.
For web service discovery “Web Service” instance discovery method can be used. It accepts web service name with
optional arguments and path to the root element of the document where enumeration will start. Each sub-element of
given root element will be considered separate instance.
For example:
• WebService1:/system/cpu will enumerate all elements under “/system/cpu”
• WebService2(eth0):/stat will enumerate all elements under “/stat”
TWENTYTHREE
DATABASE MONITORING
There are several subagents for database monitoring: DB2, Informix, Oracle, MySQL, MongoDB. Below we will
describe how to configure and use these subagents. Besides it’s also possible to monitor other types of databases
supported by NetXMS server(link to supported database list) using database query subagent as these databases sup-
port receiving performance parameters using queries. This subagent details are described in Application Database
Monitoring chapter.
23.1 Oracle
NetXMS subagent for Oracle DBMS monitoring (further referred to as Oracle subagent) monitors one or more in-
stances of Oracle databases and reports various database-related parameters.
All parameters available from Oracle subagent are collected or calculated once per minute thus it’s recommended to
set DCI poll interval for these items to 60 seconds or more. All parameters are obtained or derived from the data
available in Oracle’s data dictionary tables and views through regular select queries. Oracle subagent does not monitor
any of the metrics related to lower level database layers, such as database processes. Monitoring of such parameters
can be achieved through the standard NetXMS functionality.
23.1.1 Pre-requisites
Where user is the user configured in Oracle subagent for database access.
Oracle subagent can be configured using XML configuration file (usually created as separate file in configuration
include directory), or in simplified INI format, usually in main agent configuration file.
Database definition supports the following parameters:
265
NetXMS Administrator Guide, Release 3.8.267
XML configuration allows to specify multiple databases in the oracle section. Each database description must be
surrounded by database tags with the id attribute. It can be any unique integer and instructs the Oracle subagent about
the order in which database sections will be processed.
Sample Oracle subagent configuration file in XML format:
<config>
<agent>
<subagent>oracle.nsm</subagent>
</agent>
<oracle>
<databases>
<database id="1">
<id>DB1</id>
<tnsname>TEST</tnsname>
<username>NXMONITOR</username>
<password>NXMONITOR</password>
</database>
<database id="2">
<id>DB2</id>
<tnsname>PROD</tnsname>
<username>NETXMS</username>
<password>PASSWORD</password>
</database>
</databases>
</oracle>
</config>
You can specify only one database when using INI configuration format. If you need to monitor multiple databases
from same agent, you should use configuration file in XML format.
Sample Oracle subagent configuration file in INI format:
[ORACLE]
ID = DB1
Name = TEST
Username = dbuser
Password = "mypass123"
23.1.3 Parameters
When loaded, Oracle subagent adds the following parameters to agent (all parameters require database ID as first
argument):
Parameter Description
Oracle.CriticalStats.AutoArchivingOff(dbid) Archive logs enabled but auto archiving off (YES/NO)
Oracle.CriticalStats.DatafilesNeedMediaRecovery(dbid) Number of datafiles that need media recovery
Oracle.CriticalStats.DFOffCount(dbid) Number of offline datafiles
Oracle.CriticalStats.FailedJobs(dbid) Number of failed jobs
Oracle.CriticalStats.FullSegmentsCount(dbid) Number of segments that cannot extend
Oracle.CriticalStats.RBSegsNotOnlineCount(dbid) Number of rollback segments not online
Oracle.CriticalStats.TSOffCount(dbid) Number of offline tablespaces
Oracle.Cursors.Count(dbid) Current number of opened cursors system-wide
Oracle.DataFile.AvgIoTime(dbid, datafile) Average time spent on single I/O operation for datafile in milliseconds
Oracle.DataFile.Blocks(dbid, datafile) datafile size in blocks
Oracle.DataFile.BlockSize(dbid, datafile) datafile block size
Oracle.DataFile.Bytes(dbid, datafile) datafile size in bytes
Oracle.DataFile.FullName(dbid, datafile) datafile full name
Oracle.DataFile.MaxIoReadTime(dbid, datafile) Maximum time spent on a single read for datafile in milliseconds
Oracle.DataFile.MaxIoWriteTime(dbid, datafile) Maximum time spent on a single write for datafile in milliseconds
Oracle.DataFile.MinIoTime(dbid, datafile) Minimum time spent on a single I/O operation for datafile in milliseconds
Oracle.DataFile.PhysicalReads(dbid, datafile) Total number of physical reads from datafile
Oracle.DataFile.PhysicalWrites(dbid, datafile) Total number of physical writes to datafile
Oracle.DataFile.ReadTime(dbid, datafile) Total read time for datafile in milliseconds
Oracle.DataFile.Status(dbid, datafile) datafile status
Oracle.DataFile.Tablespace(dbid, datafile) datafile tablespace
Oracle.DataFile.WriteTime(dbid, datafile) Total write time for datafile in milliseconds
Oracle.DBInfo.CreateDate(dbid) Database creation date
Oracle.DBInfo.IsReachable(dbid) Database is reachable (YES/NO)
Oracle.DBInfo.LogMode(dbid) Database log mode
Oracle.DBInfo.Name(dbid) Database name
Oracle.DBInfo.OpenMode(dbid) Database open mode
Oracle.DBInfo.Version(dbid) Database version
Oracle.Dual.ExcessRows(dbid) Excessive rows in DUAL table
Oracle.Instance.ArchiverStatus(dbid) Archiver status
Oracle.Instance.Status(dbid) Database instance status
Oracle.Instance.ShutdownPending(dbid) Is shutdown pending (YES/NO)
Oracle.Instance.Version(dbid) DBMS Version
Oracle.Objects.InvalidCount(dbid) Number of invalid objects in DB
Oracle.Performance.CacheHitRatio(dbid) Data buffer cache hit ratio
Oracle.Performance.DictCacheHitRatio(dbid) Dictionary cache hit ratio
Oracle.Performance.DispatcherWorkload(dbid) Dispatcher workload (percentage)
Oracle.Performance.FreeSharedPool(dbid) Free space in shared pool (bytes)
Oracle.Performance.Locks(dbid) Number of locks
Oracle.Performance.LogicalReads(dbid) Number of logical reads
Oracle.Performance.LibCacheHitRatio(dbid) Library cache hit ratio
Oracle.Performance.MemorySortRatio(dbid) PGA memory sort ratio
Oracle.Performance.PhysicalReads(dbid) Number of physical reads
Oracle.Performance.PhysicalWrites(dbid) Number of physical writes
Oracle.Performance.RollbackWaitRatio(dbid) Ratio of waits for requests to rollback segments
continues on next page
23.1.4 Lists
List Description
Oracle.DataFiles(dbid) All known datafiles in database identified by dbid.
Oracle.DataTags(dbid) All data tags for database identified by dbid. Used only for internal diagnostics.
Oracle.TableSpaces(dbid) All known tablespaces in database identified by dbid.
23.1.5 Tables
Table Description
Oracle.DataFiles(dbid) Datafiles in database identified by dbid.
Oracle.Sessions(dbid) Open sessions in database identified by dbid.
Oracle.TableSpaces(dbid) Tablespaces in database identified by dbid.
23.2 DB2
NetXMS subagent for DB2 monitoring is designed to provide a way to extract various parameters known as Data
Collection Items (DCI) from an instance or several instances of DB2 database.
23.2.1 Configuration
DB2 subagent can be configured in two ways. The first one would be a simple INI file and the second one would be
an XML configuration file. Please note that to use the XML configuration, you first need to declare the XML file in
the DB2 section of the INI configuration file. The details are below.
Database definition supports the following parameters:
SubAgent = db2.nsm
[DB2]
DBName = dbname
DBAlias = dbalias
UserName = dbuser
Password = "mypass123"
QueryInterval = 60
ReconnectInterval = 30
SubAgent = db2.nsm
[DB2]
ConfigFile = /myhome/configs/db2.xml
<config>
<db2sub>
<db2 id="1">
<dbname>dbname</dbname>
(continues on next page)
As you can see, the parameters are the same as the ones from the INI configuration. Each database declaration must
be placed under the db2sub tag and enclosed in the db2 tag. The db2 tag must have a numerical id which has to be
a positive integer greater than 0.
Provided parameters
To get a DCI from the subagent, you need to specify the id from the db2 entry in the XML configuration file (in case
of INI configuration, the id will be 1). To specify the id, you need to add it enclosed in brackets to the name of the
parameter that is being requested (e.g., db2.parameter.to.request(**1**)). In the example, the parameter
db2.parameter.to.request from the database with the id 1 will be returned.
23.3 MongoDB
While start of subagent at least one database should be up and running. Otherwise subagent will not start. On start
subagent requests serverStatus to get list of possible DCI. This list may vary from version to version of MongoDB.
23.3.4 Parameters
There are 2 types of parameters: serverStatus parameters, that are generated from response on a subagent start and
predefined for database status.
Description of serverStatus parameters can be found there: serverStatus. In this type of DCI should be given id of
server from where parameter should be taken.
Description of database status parameters can be found there: dbStats.
Parameter Description
MongoDB.collectionsNum(id,databaseName)
Contains a count of the number of collections in that database.
MongoDB.objectsNum(id,databaseName)
Contains a count of the number of objects (i.e. documents) in the database
across all collections.
MongoDB.avgObjSize(id,databaseName)
The average size of each document in bytes.
MongoDB.dataSize(id,databaseName)The total size in bytes of the data held in this database including the padding
factor.
MongoDB.storageSize(id,databaseName)
The total amount of space in bytes allocated to collections in this database
for document storage.
MongoDB.numExtents(id,databaseName)
Contains a count of the number of extents in the database across all collec-
tions.
MongoDB.indexesNum(id,databaseName)
Contains a count of the total number of indexes across all collections in the
database.
MongoDB.indexSize(id,databaseName)The total size in bytes of all indexes created on this database.
MongoDB.fileSize(id,databaseName) The total size in bytes of the data files that hold the database.
MongoDB.nsSizeMB(id,databaseName) The total size of the namespace files (i.e. that end with .ns) for this database.
23.3.5 List
Parameter Description
MongoDB.ListDatabases(id) Returns list of databases existing on this server
23.4 Informix
NetXMS subagent for Informix (further referred to as Informix subagent) monitors one or more Informix databases
and reports database-related parameters.
All parameters available from Informix subagent are collected or calculated once per minute, thus its recommended
to set DCI poll interval for these items to 60 seconds or more. All parameters are obtained or derived from the data
available in Informix system catalogs. Informix subagent does not monitor any of the metrics related to lower level
database layers, such as database processes. Monitoring of such parameters can be achieved through the standard
NetXMS functionality.
23.4.1 Pre-requisites
A database user must have access rights to Informix system catalog tables.
23.4.2 Configuration
You can specify multiple databases in the informix section. Each database description must be surrounded by database
tags with the id attribute. Id can be any unique integer, it instructs the Informix subagent about the order in which
database sections will be processed.
Each database definition supports the following parameters:
Parameter Description
Id Database identifier. It will be used to address this database in parameters.
DBName Database name. This is a name of Informix DSN.
DBServer Name of the Informix server.
DBLogin User name for connecting to database.
DBPassword The password for the database to connect to. When using INI format, re-
member to enclose password in double quotes (“password”) if it contains #
character. This parameter automatically detects and accepts password en-
crypted with nxencpasswd tool.
[informix]
ID=db1
DBName = instance1
DBLogin = user
DBPassword = "password"
Provided parameters
To get a DCI from the subagent, you need to specify the id from the informix entry in configuration file. To specify
the id, you need to add it enclosed in brackets to the name of the parameter that is being requested (e.g., informix.
parameter.to.request(**1**)). In the example, the parameter informix.parameter.to.request
from the database with the id 1 will be returned.
23.5 MySQL
NetXMS subagent for MySQL monitoring. Monitors one or more instances of MySQL databases and reports various
database-related parameters.
MySQL subagent requires MySQL driver to be available in the system.
23.5.1 Configuration
You can specify one or multiple databases in the MySQL section. In case of single database definition simply set all
required parameters under [mysql] section. In multi database configuration define each database under mysql/
databases/<name> section with unique <name> for each database. If no id provided <name> of the section will
be used as a database id.
Each database definition supports the following parameters:
Subagent=mysql.nsm
[mysql]
Id=db1
Database = instance1
Login = user
Password = password
Subagent=mysql.nsm
[mysql/databases/somedatabase]
Database = instance1
Login = user
Password = password
Server = netxms.demo
[mysql/databases/local]
Database = information_schema
Login = user
Password = encPassword
Server = 127.0.0.1
Parameter Description
MySQL.Connections.Aborted(id) aborted connections
MySQL.Connections.BytesReceived(id)
bytes received from all clients
MySQL.Connections.BytesSent(id) bytes sent to all clients
MySQL.Connections.Current(id) number of active connections
MySQL.Connections.CurrentPerc(id) connection pool usage (%)
MySQL.Connections.Failed(id) failed connection attempts
MySQL.Connections.Limit(id) maximum possible number of simultaneous connections
continues on next page
23.6 PostgreSQL
NetXMS subagent for PostgreSQL monitoring. Monitors one or more instances of PostgeSQL servers and reports
various database-related parameters.
PostgreSQL subagent requires PostgreSQL driver to be available in the system.
23.6.1 Pre-requisites
A PostgreSQL user with CONNECT right to al least one database on the server.
If the PostgreSQL.DatabaseSize parameter should be monitored the user must have the CONNECT right to other
databases on the server too.
Starting from the PostgreSQL version 10, the user must have the he role pg_monitor assigned.
Required role can be assigned to user with the following query:
Where user is the user configured in PostgreSQL subagent for database access.
23.6.2 Configuration
You can specify one or multiple PostgreSQL server instances in the PostgreSQL section. In case of single server
definition simply set all required parameters under [pgsql] section. In multi server configuration define each server
instance under pgsql/servers/<name> section with unique <name> for each server. If no id provided <name>
of the section will be used as a server id.
It is not necessary to configure connections to more than one database on the same PostgreSQL server instance.
Each server definition supports the following parameters:
Subagent=pgsql.nsm
[pgsql]
Id=db1
Database = database1
Login = user
Password = password
Subagent=pgsql.nsm
[pgsql/servers/mynetxms]
ID=monitor
Database = netxms
Login = user
Password = password
Server = netxms.demo
[pgsql/servers/local]
Login = user
Password = encPassword
23.6.3 Parameters
When loaded, PostgreSQL subagent adds two types of parameters to the agent.
Database server parameters are common for all databases on the server. These parameters require one argument which
is server id from the configuration.
Database parameters are independent for each database on the server. These parameters require to arguments. The
first one is server id from the configuration the second one is name of the database. If the second argument is missing
the name of the maintenance database from the configuration is used.
Alternatively, these two arguments can be specified as one argument in following format: datanase_name@server_id.
This format is returned by the PostgreSQL.AllDatabases list.
Following table shows the database server parameters:
23.6.4 Lists
List Description
PostgreSQL.DBServers All configured servers (server ids).
PostgreSQL.Databases(id) All databases on server identified by id.
PostgreSQL.AllDatabases All databases on configured servers. The format of the list items is
datanase_name@server_id.
PostgreSQL.DataTags(id) All data tags for server identified by id. Used only for internal diagnostics.
23.6.5 Tables
Table Description
PostgreSQL.Backends(id) Connection backends on server identified by id.
PostgreSQL.Locks(id) Locks on server identified by id.
PostgreSQL.PreparedTransactions(id) Prepared transactions on server identified by id.
TWENTYFOUR
APPLICATION MONITORING
Platform subagents support process monitoring. Process metrics have “Process.*” format. Metrics differ between
different OS. Detailed description of each metric can be found in List of supported metrics.
For application database monitoring can be used database monitoring subagents or database query subagents. Infor-
mation about database monitoring subagents can be found there. In this chapter will be described only DBQuery
subagents usage and configuration. This subagent supports all databases that are supported by NetXMS server link to
supported database list.
This type of Metrics provide DBQuery subagent. This subagent has 2 types of Metrics: one that periodically ex-
ecutes SQL queries and returns results and error codes as Metric parameters and second execute queries by Metric
request(synchronously). SQL queries are specified in the agent configuration. Background query can be also executed
per request. Synchronously executed query can have parameters that are passes to it by DCI configuration.
New in version 2.5: Synchronously executed queries
For time consuming SQL requests it is highly recommended to use background execution. Heavy SQL can cause
request timeout for synchronous execution.
24.2.1 Parameters
Parameter Description
DB.Query(dbid,query)
Result of immediate execution of the query query in database identified by dbid. Database with
given name must be defined in configuration file.
DB.QueryResult(name)
Last result of execution of the query name. Query with given name must be defined in configu-
ration file.
DB.QueryStatus(name)
Status of last execution of the query name. Query with given name must be defined in configu-
ration file. Value returned is native SQL error code.
DB.QueryStatusText(name)
Status of last execution of the query name as a text. Query with given name must be defined in
configuration file.
queryName Result of immediate execution of query defined in agent config file with name queryName.
query- Result of immediate execution of query defined in agent config file with name queryName like
Name(param1, ConfigurableQuery parameter. Where param1, param2. . . are parameters to bind into defined
param2. . . ) query.
285
NetXMS Administrator Guide, Release 3.8.267
24.2.2 Tables
Table Description
DB.Query(dbid,query)
Result of immediate execution of the query query in database identified by dbid. Database with
given name must be defined in configuration file.
DB.QueryResult(name)
Last result of execution of the query name. Query with given name must be defined in configu-
ration file.
queryName Result of immediate execution of query defined in agent config file with name queryName.
query- Result of immediate execution of query defined in agent config file with name queryName like
Name(param1, ConfigurableQuery parameter. Where param1, param2. . . are parameters to bind into defined
param2. . . ) query.
All configuration parameters related to DBQuery subagent should be placed into *DBQUERY section of agent’s
configuration file. The following configuration parameters are supported:
ParameterFormat Description
Database semicolon sep- Define new database connection (See database connection options section below).
arated option
list
Query Define new query. This parameter can be specified multiple times to define multiple
name:dbid:interval:query
queries. Fields in query definition have the following meaning:
• name Query name which will be used in parameters to retrieve collected
data.
• dbid Database ID (defined by Database parameter)
• interval Polling interval in seconds.
• query SQL query to be executed.
ConfigurableQuery Define new query. This parameter can be specified multiple times to define multiple
name:dbid:description:query
queries. Fields in query definition have the following meaning:
• name Query name which will be used in parameters to retrieve collected
data.
• dbid Database ID (defined by Database parameter)
• description Description that will be shown in agents parameter description.
• query SQL query to be executed.
MasterServers = netxms.demo
SubAgent = dbquery.nsm
*DBQUERY
Database = id=db1;driver=oracle.ddr;server=10.0.0.2;login=netxms;
˓→encryptedPassword=H02kxYckADXCpgp+8SvHuMKmCn7xK8e4wqYKfvErx7g=
Database = id=db2;driver=mysql.ddr;server=10.0.0.4;dbname=test_db;login=netxms;
˓→password=netxms1
Application logs can be added to monitoring. For log monitoring configuration refer to Log monitoring chapter.
It is possible to define External metrics that will get metric data from the script that is executed on the agent. This
option can be used to get status from some command line tools or from self made scripts. Information about options
and configuration is available in Agent External Metrics chapter.
TWENTYFIVE
ICMP PING
NetXMS can periodically perform ICMP polls and calculate node availability statistics. This functionality can be
controlled globally via server configuration parameter ICMP.CollectPollStatistics or locally on each node.
ICMP polling interval and statistic calculation period (expressed in number of polls), timeout and ICMP packet size
are configured via server configuration parameters, see Server configuration parameters.
ICMP requests are sent to node’s primary IP address. Additional targets can be specified in node’s properties. It’s also
possible to set node’s interfaces as targets by enabling Collect ICMP response statistic for this interface in properties
of the interface (enabling this for interface that corresponds to primary IP address will lead to pinging this address
twice).
ICMP polling is performed from server, from a zone proxy if zoning is used or from specific proxy if it’s configured
in node properties. Proxying agent should have ping.nsm subagent enabled.
Results of ICMP response statistic collection for primary IP address are visible in Object Details -> Overview and are
available as internal parameters:
• ICMP.ResponseTime.Average
• ICMP.PacketLoss
• ICMP.ResponseTime.Last
• ICMP.ResponseTime.Max
• ICMP.ResponseTime.Min
Results of ICMP response statistic collection for additional targets and interfaces are available as internal parameters:
• ICMP.ResponseTime.Average(*)
• ICMP.PacketLoss(*)
• ICMP.ResponseTime.Last(*)
• ICMP.ResponseTime.Max(*)
• ICMP.ResponseTime.Min(*)
289
NetXMS Administrator Guide, Release 3.8.267
For example, ICMP.PacketLoss(8.8.8.8) parameter will provide packet loss for target with IP address 8.8.8.8.
No historical data is stored by default. It’s necessary to configure DCIs using above mentioned internal parameters to
store historical data.
This subagent can be used to measure ICMP ping response times from one location to another. Measurements can be
either scheduled by the agent itself or requested by the server.
Metrics scheduled by the agent (based on “PacketRate” parameter):
• ICMP.AvgPingTime
• ICMP.LastPingTime
• ICMP.PacketLoss
• ICMP.PingStdDev
These metrics can be either defined in agent configuration file (using one or more “Target” parameters), or registered
automatically on first request from server. If targets are registered automatically, default packet size is used. First
request to non-existing target will return “0” as a value. Automatically registered targets are automatically removed
after a timeout, if server stops requesting metrics for that target.
Metrics available on demand:
• ICMP.Ping
25.2.1 Metrics
Pa- Description
ram-
e-
ter
Icmp.AvgPingTime(target)
Average ICMP ping response time from target for last minute. Argument target can be either IP address or
name specified in Target configuration record (see below).
Icmp.LastPingTime(target)
Last ICMP ping response time from target. Argument target can be either IP address or name specified in
Target configuration record (see below).
Icmp.PacketLoss(target)
ICMP ping packet loss (in percents) for target for last minute. Argument target can be either IP address or
name specified in Target configuration record (see below).
Icmp.Ping(target,
ICMP ping response time from target. Agent will send echo request as soon as it receives request for
time- parameter’s value, and will return response time for that particular request. Argument target should be an IP
out, address. Optional argument timeout specifies timeout in milliseconds. Default timeout is 1 second. Optional
psize) argument psize specifies packet size in bytes, including IP header. If this argument is omitted, value from
DefaultPacketSize configuration parameter will be used.
Please note that other parameters just return result of background ping process, while this parameter waits
for actual ping completion and then returns the result. Because of this behavior, it is not recommended to use
Icmp.Ping parameter for instant monitoring, only for occasional tests. For instant monitoring, you should
configure targets for background ping and use Icmp.AvgPingTime or Icmp.LastPingTime parameters to
retrieve results.
Icmp.PingStdDev(target)
Standard deviation of the response time for the target for last minute. Argument target can be either IP
address or name specified in Target configuration record (see below).
25.2.2 Tables
Table Description
Icmp.Targets Table of configured ping targets. Columns:
• IP address
• Last response time (milliseconds)
• Average response time (milliseconds)
• Packet loss (percents)
• Configured packet size
• Name
• DNS name
• Automatic
25.2.3 Lists
List Description
Icmp.Targets List of configured ping target names.
All configuration parameters related to PING subagent should be placed into [PING] section of agent’s configuration
file. The following configuration parameters are supported:
Configuration example:
MasterServers = netxms.demo
SubAgent = ping.nsm
[PING]
Timeout = 1000
PacketRate = 12 # every 5 seconds
Target = 10.0.0.1:target_1
Target = 10.0.0.2:target_2:1000
TWENTYSIX
HARDWARE(SENSOR) MONITORING
26.1 lm-sensors
This subagent can be used to read hardware status using lm_sensors package.
26.1.1 Pre-requisites
Package lm_sensors should be installed and configured properly. Output of sensors command should produce mean-
ingful output (see example below).
alk@b08s02ur:~$ sensors
w83627dhg-isa-0290
Adapter: ISA adapter
Vcore: +1.14 V (min = +0.00 V, max = +1.74 V)
in1: +1.61 V (min = +0.05 V, max = +0.01 V) ALARM
AVCC: +3.31 V (min = +2.98 V, max = +3.63 V)
VCC: +3.31 V (min = +2.98 V, max = +3.63 V)
in4: +1.79 V (min = +1.29 V, max = +0.05 V) ALARM
in5: +1.26 V (min = +0.05 V, max = +1.67 V)
in6: +0.10 V (min = +0.26 V, max = +0.08 V) ALARM
3VSB: +3.30 V (min = +2.98 V, max = +3.63 V)
Vbat: +3.18 V (min = +2.70 V, max = +3.30 V)
fan1: 3308 RPM (min = 1188 RPM, div = 8)
fan2: 6250 RPM (min = 84375 RPM, div = 8) ALARM
fan3: 0 RPM (min = 5273 RPM, div = 128) ALARM
fan4: 0 RPM (min = 10546 RPM, div = 128) ALARM
fan5: 0 RPM (min = 10546 RPM, div = 128) ALARM
temp1: +39.0°C (high = +4.0°C, hyst = +1.0°C) ALARM sensor = diode
temp2: +17.0°C (high = +80.0°C, hyst = +75.0°C) sensor = diode
temp3: +124.5°C (high = +80.0°C, hyst = +75.0°C) ALARM sensor = thermistor
cpu0_vid: +2.050 V
coretemp-isa-0000
(continues on next page)
293
NetXMS Administrator Guide, Release 3.8.267
coretemp-isa-0001
Adapter: ISA adapter
Core 1: +37.0°C (high = +76.0°C, crit = +100.0°C)
26.1.2 Parameters
Parameter Description
LMSensors.Value(chip, label) Current value returned by hardware sensor
All configuration parameters related to lm_sensors subagent should be placed into *LMSENSORS section of agent’s
configuration file. The following configuration parameters are supported:
MasterServers = netxms.demo
SubAgent = lmsensors.nsm
[LMSENSORS]
UseFahrenheit = yes
ConfigFile = /etc/sensors.netxms.conf
26.2 DS18x20
This subagent collects temperature from DS18x20 sensor. Subagent available for Linux only. To use this subagent
1-Wire driver should be installed.
26.2.1 Parameters
All configuration parameters related to lm_sensors subagent should be placed into *DS18X20 section of agent’s con-
figuration file. The following configuration parameters are supported:
ParameterFormat Description
Sensor String Sensor identification in format sensorName:uniqueID
MasterServers = netxms.demo
SubAgent = DS18X20.nsm
[DS18X20]
Sensor = sensorName:uiniqueID123456788990
26.3 RPI
This subagent collects data from Raspberry Pi DHT22 sensor and status of GPIO pins.
26.3.1 Parameters
All configuration parameters related to lm_sensors subagent should be placed into *RPI section of agent’s configura-
tion file. The following configuration parameters are supported:
ParameterFormat Description
DisableDHT22
Boolean Disables dht22 sensor if yes. By default no.
EnabledPins
Coma separated List of pins that are enabled for status check.
list of numbers
MasterServers = netxms.demo
SubAgent = rpi.nsm
[RPI]
DisableDHT22 = no
EnabledPins = 1,4,5,8
26.4 MQTT
This is a subagent that can be used to collect data from devices and sensors that use MQTT protocol for communication.
The subagent can be used to connect to existing MQTT brokers, listen to user specified topics, map posted data to
metrics and generate events.
These are the necessary configuration sections and parameters for the MQTT subagent:
SubAgent = mqtt.nsm
[MQTT/Brokers/Office]
Hostname = mqtt.office.radensolutions.com
[MQTT/Brokers/Office/Events]
MQTT_METERHUB_RAW_DATA = "cmnd/5C:CF:7F:25:79:D6/#"
This configuration will connect to an MQTT broker Office at the Hostname. Whenever data is published to the topic
cmnd/5C:CF:7F:25:79:D6/#, the event MQTT_METERHUB_RAW_DATA will be triggered. It will also provide
two metrics, MeterHub.Telemetry.RSSI and MeterHub.Telemetry.Time which will report data received
on the topics tele/5C:CF:7F:25:79:D6/RSSI and tele/5C:CF:7F:25:79:D6/TIME respectively.
TWENTYSEVEN
UPS MONITORING
There are two options to monitor UPS: first is through USB or serial connection with help of subagent and second one
is through the network with help of SNMP.
Subagent can be used for monitoring UPS (Uninterruptible Power Supply) attached to serial or USB port on computer
where NetXMS agent is running. USB-attached devices currently supported only on Windows platform, serial is
supported on all platforms. One subagent can monitor multiple attached devices.
You can monitor UPS devices attached to the hosts via serial cable or USB via UPS subagent. Once you have your
UPS attached to the host and NetXMS agent installed, you should configure UPS subagent. First, add the following
line to agent’s configuration file main section:
SubAgent = ups.nsm
Second, configure attached UPS devices. Create UPS section, and for each UPS device attached to the host add line
in the following format:
Device = id:port:protocol
id is an arbitrary but unique number in range 0 to 127, which is used to distinguish multiple UPS devices in further
requests.
device is either name of the serial port (e.g. COM1: or /dev/ttyS0) or serial number of the USB device (keyword
ANY can be used instead of exact serial number to select first available).
protocol specify which communication protocol should be used. Supported protocols:
• APC
• BCMXCP - Some of the HP/Compaq, PowerWare, etc.
• MEGATEC
• METASYS
• MICRODOWELL
• USB - HID UPS devices (currently Windows only)
Sample configuration section for two devices attached via serial ports, one is APC device (configured as device 0) and
one is HP device (configured as device 1):
299
NetXMS Administrator Guide, Release 3.8.267
Once UPS subagent is configured, you can start to monitor UPS devices status via parameters provided by it:
UPS.EstimatedRuntime(*)
Integer Estimated on-battery runtime in minutes.
UPS.Firmware(*) String Device’s firmware version.
UPS.InputVoltage(*)Float Input line voltage.
UPS.LineFrequency(*)
Integer Input line frequency in Hz.
UPS.Load(*) Integer Device load in percents.
UPS.MfgDate(*) String Device manufacturing date.
UPS.Model(*) String Device model name.
UPS.NominalBatteryVoltage(*)
Float Nominal battery voltage.
UPS.OnlineStatus(*)Integer
Device online status. Can have the following values:
• 0 - Device is online.
• 1 - Device is on battery power.
• 2 - Device is on battery power and battery level is low.
UPS.OutputVoltage(*)
Float Output line voltage.
UPS.SerialNumber(*)String Device’s serial number.
UPS.Temperature(*)Integer Internal device temperature.
Please note that not all parameters supported by all UPS devices. Many old or simple models will support only
basic things like UPS.OnlineStatus parameter. Most typical approach is to monitor UPS.OnlineStatus for going to
1 or 2, and then send notifications to administrators and shutdown affected hosts if needed. You can also monitor
UPS.EstimatedRuntime parameter for the same purposes if your devices support it.
Other option to monitor UPS is using SNMP. NetXMS already includes MIBs for some UPS, like APC UPS and
standard UPS MIB. Description for possible OIDs and some additional information for APC UPS configuration can
be found on a NetXMS wiki.
Please check Import MIB for MIB loading and DCI configuration for metric collection.
TWENTYEIGHT
CLUSTER MONITORING
28.1 Introduction
Cluster monitoring provides aspects of monitoring needed in high availability setups. There is a special class of object
in NetXMS - Cluster.
DCIs defined on cluster object are automatically applied to it’s nodes. Cluster allows to aggregate data from it’s nodes,
e.g. to calculate sum or average for a metric that is collected from all nodes. Cluster can adequately collect data from
services as they move from from one node to another, providing uninterrupted data collection.
301
NetXMS Administrator Guide, Release 3.8.267
TWENTYNINE
JVM MONITORING
NetXMS has Java plugin that allow to monitor JVM. This subagent is build using JMX functionality.
303
NetXMS Administrator Guide, Release 3.8.267
29.1 Metrics
29.1.1 Parameters
29.1.2 Lists
Metric Meaning
JMX.Domains(name) List of JVM domains
JMX.Objects(name) List of JVM objects
JMX.ObjectAttributes(name)
List of JVM object’s attributes
29.2 Configuration
It is required to define java subagent and it’s configurations before JMX plugin configuration. More information about
Java subagent and it’s configuration can be found in Java subagent section. JMS has only one configuration parameter
“Server”. It is used to define JMX server connection string.
JMS server connection string declaration options:
• name:url
• name:login@url
• name:login/password@url
MasterServers = netxms.demo
SubAgent=java.nsm
[JAVA]
jvm = /usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so
Plugin = jmx.jar
[JMX]
Server=name:login/password@localhost
Server=serverName2:admin/pwd123@server1
THIRTY
HYPERVISOR MONITORING
NetXMS has subagents that allow to monitor hypervisors. This subagent is build using libvirt functionality. Due to
the fact that libvirt is poorly supported on Windows platforms, vmgr subagent is not provided on Windows.
When installing NetXMS from packages, vmgr subagent is provided as a separate package named netxms-agent-vmgr.
If building from source, ./configure should be ran with –with-vmgr.
30.1 Configuration
Configuration is separated into two parts: vmgr section defines all monitored hosts, and each host configuration is
defined in separate section for each host.
Each host configuration should contain connection URL. Login and password parameters are optional. URL creation
rules for each vitalization solution type can be found in libvirt documentation.
Not all api functions are supported by all hypervisors in libvirt. See libvirt API support matrix for more information.
In this example two hosts are defined: localESX1 and test. localESX1 connection details are described in section
vmgr:localESX1 and test connection details are described in section vmgr:test.
MasterServers = netxms.demo
SubAgent = vmgr.nsm
[vmgr]
host = localESX1
host = test
[vmgr:localESX1]
Url = esx://root@10.5.0.21/?no_verify=1
Login = root
Password = password
[vmgr:test]
Url = test:///default
307
NetXMS Administrator Guide, Release 3.8.267
30.2 Metrics
30.2.1 Parameters
30.2.2 Tables
Metric Description
VMGR.VM(hostName)Connection VM table
VMGR.InterfaceList(hostName)
Connection interface list
VMGR.VMDisks(hostName,vmName)
VM Disks
VMGR.VMController(hostName,vmName)
VM Controllers
VMGR.VMInterface(hostName,vmName)
VM Interfaces
VMGR.VMVideo(hostName,vmName)
VM Video adapter settings
VMGR.Networks(hostName)
Networks table
VMGR.Storages(hostName)
Storages table
30.2.3 Lists
Metric Description
VMGR.VMHost List of hosts
VMGR.VMList(hostName)
List of VM for the host
THIRTYONE
ASTERISK MONITORING
NetXMS can be used to monitor health and performance of Asterisk PBX. All monitoring data collected and provided
by subagent asterisk.nsm. One agent can collect data from multiple Asterisk systems.
31.1 Configuration
All Asterisk systems should be defined in subagent configuration. For simplified setup for single system monitor-
ing subagent supports “local” system. Configuration for local system can be defined in Asterisk section of agent
configuration file. For each additional system new section should be created in configuration file named Aster-
isk/Systems/SystemName (SystemName should be replaced with unique name). Each section can have the following
parameters:
It is also possible to configure subagent to periodically perform SIP registration tests. Each test should be config-
ured in separate configuration section named Asterisk/SIPRegistrationTests/TestName for local system and Aster-
isk/Systems/SystemName/SIPRegistrationTests/TestName for other systems. SystemName and TestName should
be replaced with unique system and test names respectively. Each test configuration section can have the following
parameters:
311
NetXMS Administrator Guide, Release 3.8.267
MasterServers = netxms.demo
SubAgent = asterisk.nsm
[Asterisk]
Login = root
Password = password1
MasterServers = netxms.demo
SubAgent = asterisk.nsm
[Asterisk]
Login = root
Password = password1
[Asterisk/SIPRegistrationTests/104]
Login = 104
Password = 12345
Domain = demo.netxms
[Asterisk/SIPRegistrationTests/115]
Login = 115
Password = 12345
Domain = demo.netxms
Interval = 60
Local system and remote system (named Remote1) on address 10.0.0.1 with one SIP test each:
MasterServers = netxms.demo
SubAgent = asterisk.nsm
[Asterisk]
Login = root
Password = password1
[Asterisk/SIPRegistrationTests/104]
Login = 104
Password = 12345
Domain = demo.netxms
[Asterisk/Systems/Remote1]
Hostname = 10.0.0.1
Login = root
Password = password1
[Asterisk/Systems/Remote1/SIPRegistrationTests/120]
Login = 120
Password = 12345
Domain = remote.netxms
31.2 Metrics
31.2.1 Parameters
All parameters accept system name as first argument. Name for default local system is LOCAL. If system name is
omitted local system is assumed. If system name is the only argument braces can be omitted as well.
31.2.2 Tables
All tables accept system name as first argument. Name for default local system is LOCAL. If system name is omitted
local system is assumed. If system name is the only argument braces can be omitted as well.
Metric Description
Asterisk.Channels(system)
Active channels
Asterisk.CommandOutput(system,
Output of given Asterisk console command
command)
Asterisk.SIP.Peers(system)
SIP peers
Asterisk.SIP.RegistrationTests(system)
Configured SIP registration tests
Asterisk.TaskProcessors(system)
Task processors
31.2.3 Lists
All lists accept system name as first argument. Name for default local system is LOCAL. If system name is omitted
local system is assumed. If system name is the only argument braces can be omitted as well.
Metric Description
Asterisk.Channels(system)
Active channels
Asterisk.CommandOutput(system,
Output of given Asterisk console command
command)
Asterisk.SIP.Peers(system)
SIP peers
Asterisk.SIP.RegistrationTests(system)
Configured SIP registration tests
Asterisk.Systems Configured Asterisk systems
Asterisk.TaskProcessors(system)
Task processors
THIRTYTWO
NetXMS has mobile agent for Android devices running version 2.2. and later. Currently, a very limited set of info can
be monitored and reported to a NetXMS server.
32.1 Metrics
Unlike other metrics mobile ones are provided with Internal origin as they are not collected by server, but pushed from
mobile agent.
Parameter Description
MobileDevice.BattaryLevel Battery charging level in percents.
MobileDevice.DeviceId Id of device
MobileDevice.LastReportTime Last time device reported data
MobileDevice.Model Phone model
MobileDevice.OS.Name Operating system mane
MobileDevice.OS.Version Operating system version
MobileDevice.SerialNumber Serial number
MobileDevice.UsedId
MobileDevice.Vendor Mobile device vendor
317
NetXMS Administrator Guide, Release 3.8.267
32.2 GUI
Sections:
1. Agent status. In case agent is active, reports the basic info about configuration such as scheduler for new
location acquisition and connection to server where to update info collected.
2. Last location section reports info about the last location acquired (date/time, source provider, geo coordi-
nates and estimated accuracy.
3. Last connection section reports info about the status of last connection: date/time and status of connection
to the server:port specified in the configuration section. In case of errors during connection, here is reported
also the error message.
4. Next connection section reports info about the next scheduled connection.
5. Device ID section reports the device ID (IMEI in case of devices with phone).
6. Device Serial section reports the device serial number.
• Reconnect: select this item to force a reconnection to the server to send new collected data.
• Disconnect & Exit: select this item to stop the agent and exit from the app.
• Settings: select this item to configure the agent.
32.2.3 Settings
32.2.5 Connection
32.2.6 Location
• Force position update: when cleared instruct the agent to relay on position updates made from other apps in the
system (this means that position can be very old if no other apps are trying to get a new fix). When set, instructs
the agent to try to gather a new position.
• Frequency (min): amount of time, in minutes, that has to elapse before trying to acquire a new position (Force
position update set) or before trying to check if someone else updated a position.
• Duration (min): maximum amount of time, in minutes, that has to elapse before giving up on acquiring a new
position.
• Location strategy: allows selecting the source provider that has to be used to acquire a new position, allowed providers:
1. Network only: tries to acquire position from network provider. Network provider is usually fast in
acquiring a new position but it is not much accurate, especially using data connection (range from
1Km to 2Km, depending on antennas deployment), the service is not available all around the world.
Wi-Fi connection seems to guarantee much higher precision due to a correlation between last known
position acquired from GPS.
2. GPS only: tries to acquire position from GPS provider. GPS provider is usually slow in acquiring a
new position, time depends on several factors such as how much time has elapsed since last position,
number of satellites in free view (inside buildings can be really had to get a position).
3. Network and GPS: tries to acquire a position from Network provider or GPS provider, the first one
that gives a position is considered ok. There is no special algorithm to evaluate accuracy, the unique
criteria is the speed of the fix.
Note: Please note that on 2G networks (GPRS/EDGE) data connection is not available while you are busy in a
conversation, position acquisition will fail. On 3G networks (UMTS/HSxPA) data connection is available and so the
position acquisition. However, if the agent is not able to get a new fix within the time-frame specified, it will try to
gather a position from any available provider that has a valid cached position to provide.
32.2.7 Notification
Toast notification: when set allows the agent to display “toast” notifications to the user (such as pushing data to the
server, inform user about the start of the agent, etc.).
THIRTYTHREE
NETWORK TOPOLOGY
33.1 Introduction
NetXMS server automatically creates and maintains network model on different layers. All necessary information
taken from ARP cache, routing tables, and switch forwarding database of managed nodes. Topology data provided
by CDP, LLDP, and NDP (SONMP) protocols also used in building network model. Having network model instantly
available allows NetXMS users to perform various network topology tasks much faster and easier.
Requirements to build network topology:
• All network equipment should be registered in NetXMS system
• Equipment should response to SNMP
• Equipment should have at least STP
• There will be more information if equipment will have LLDP or CDP
Manual topology poll can be started on the network equipment to heave information about information availability.
Based on network topology network correlation is done. Network correlation reduce number of alerts and increase
problem resolution speed.
Currently there are 3 states/events regarding connectivity:
• down (event SYS_NODE_DOWN) - when server cannot contact the node and has no topology information for
event correlation or it is really problem with that node
• unreachable (SYS_NODE_UNREACHABLE) - when server knows that node cannot be contacted due to inter-
mediate router/interface failure
• up (SYS_NODE_UP) - when node is reachable
So when node becomes unreachable, either SYS_NODE_DOWN or SYS_NODE_UNREACHABLE event is gener-
ated, depending on root cause. But when node became reachable again, SYS_NODE_UP being generated.
It is possible to find switch port where any given node is connected (sometimes called “connection point” in manage-
ment console). To find out node’s connection point, right-click on node object, and select Find switch port in pop-up
menu. Message box with search results will pop up, and if port is found, search results view will be opened (or updated
if already open). Search results view looks like this:
321
NetXMS Administrator Guide, Release 3.8.267
It is possible to find location of any known MAC address in the network. To do this, select Tools → Find MAC address.
Results of a search will be displayed in the same results view. It is not necessary that node with given MAC address
be managed by NetXMS server, but if it is, appropriate details will be displayed.
It is possible to find location of any known IP address in the network. To do this, select Tools → Find IP address.
Results of a search will be displayed in the same results view. It is not necessary that node with given IP address be
managed by NetXMS server, but if it is, appropriate details will be displayed.
THIRTYFOUR
34.1 Introduction
In a nutshell, Business Services is a tool for availability monitoring of logical services. Company email, web site,
server farm, call center - all are examples of logical services. Moreover, the services can be combined together
to define a “broader” logical service. Company email, web site, name server and firewall all can be referred to as
“Company Internet Services” and monitored for availability as a whole. So if the name server goes down then the
“Company Internet Services” do not function properly as a whole. This feature can be used both for internal QA and
external Service Level Agreement (SLA) monitoring.
34.2.1 Service
Business Services represented with a tree-like hierarchy of nested logical services, nodes and service checks. One can
think of a service as a container consisting of other services, service checks and nodes linked to service checks. In
NetXMS terminology the last is called node link. For each service in the hierarchy, NetXMS calculates availability
percentage and keeps track of all downtime cases. To check availability at any particular level, select it in the Object
Browser or choose Availability Chart from the context menu.
Node link is a reference to any node with one or more service checks attached to this node.
Service check is a test whose result is used to define the state of the service. A service check may belong to the specific
node (node link) or directly to the service. A service check object contains NXSL script which either returns success
(the test result ok) or failure (the service has failed). There are the following special variables and constants which can
be used in NXSL scripts for service checks:
• $node - points to the current node the check is being executed for
• $reason - the script may set the reason of failure
• OK - constant, indicates success
• FAIL - constant, indicates failure
325
NetXMS Administrator Guide, Release 3.8.267
To avoid redefinition of the same service check multiple times (for multiple nodes) you can create service check
templates. The principle behind service check template is very similar to Templates. There are two notable differences
though:
• A service check template is always applied automatically to every new node (node link) added to the service
• A service check template is applied to nodes in the current level in the service tree and in all levels below
For both configuration and monitoring use Business Service container in the Object Browser view.
34.3.1 Configuration
To define a new service select Create business service from the context menu in Object Browser and enter the service
name. Then under newly created service you may want to define other services, checks or node links. You can examine
or alter properties of the service.
If your service check relies on specific nodes then you need to create node links by selecting Create node link from
the context menu:
One or more service checks must be defined for every node link. Service check can be also defined at a business
service level. In the latter case it is not connected to any particular node and can be used for some general calculations
(e.g. based on some server stats). To create a check select Create service check from the context menu, enter the check
name and navigate to Script tab in object properties:
34.3.2 Monitoring
All business service calculations performed in real time. The system calculates uptime values for a day, a week and a
month for each business service defined. As soon as the uptime value changes it shows in the Object Details screen
for the service:
Alternatively you can view the availability screen in a slightly different format by selecting Availability chart from the
context menu.
THIRTYFIVE
35.1.1 Introduction
This section describes possibilities to manage files on remote nodes using agent and required configuration for it.
Subagent configuration
To do any manipulations with files on a node it is required to load filemng subagent and configure accessible paths. It
provides possibility to upload, download, delete, move and rename files.
All configuration parameters related to filemng subagent should be placed into *filemgr section of agent’s configura-
tion file. The following configuration parameters are supported:
Param- Description
eter
Root- Path to the folder which should be exposed. If “;ro” is appended to path - agent will reject any write
Folder operations with this folder
MasterServers = netxms.demo
SubAgent = filemgr.nsm
[filemgr]
RootFolder = /home/zev # read/write access
RootFolder = /home/zev/etc # read/write access
RootFolder = /logs;ro # read only access
329
NetXMS Administrator Guide, Release 3.8.267
Access rights
To view File Manager View it’s enough to have “Read” access to node.
To download files from file manager of through multiple file download there should be “Download file” access for this
node and for multiple download “Read server files” access.
To upload file from subagent there should be “Upload file” access for this node.
For moving, renaming and deleting files from node it is required “Manage files” access to node.
For each configured node it is possible to open File Manager. It will display all configured root folders and allow to
browse into these folders.
File menu
Folder menu
Other options
• It is possible to move files and folders with help of drag and drop.
• To refresh all view should be used view refresh button (not form folder menu). But in this case all expanded
folders will be closed.
There are options to run multiple file upload to agents, file upload jobs on hold and scheduled file upload jobs. All
this options are available uploading file from server to agent. That means that before upload file should be uploaded
to server for instruction check Upload file on server section.
Advanced file upload can be accessed selecting required nodes (can be selected more than one with help of ‘Ctrl’ key)
and in object menu selecting Upload file. . . .
Job configuration:
• File that should be uploaded on the agent(s).
• Remote file path(If destination will not be set then as a destination will be taken from agent’s config
parameter ‘FileStore’). If path is set agent will check if there is access to this folder. Access is configured
by filemgr subagent, check Agent file management.
• Job can be created “on hold”. This mean that job will be created, but not started. After creation it can be
manually started selecting job in Server Jobs view and clicking Unhold.
• Other option is to schedule file upload job. It can scheduled to be executed once at exact time (One time
execution) or to be executed according to schedule(Cron schedule). See Cron format for supported cron
format options.
Result of file upload job can be checked in Server Jobs view. It can be accessed by clicking View → Server Jobs.
THIRTYSIX
REPORTING
Reporting module is an optional component, build on top of well known JasperReports library, which can produce
pixel-perfect documents in variety of formats based on historical data collected by NetXMS.
Reporting module consist of two main parts: user interface and standalone Reporting Server, which handles all
scheduling, execution, and optional document delivery to end users.
Report generation is two step process: first step is to collect and process input data, then render output files in desired
format. This separation exist for a reason: unlike rendering step, data collection could take hours to complete and it
make no sense to repeat same processing process to render Excel file instead of PDF. When first step is finished, all
processed information is saved into intermediate file on the reporting server and available for rendering at any time
(e.g. user can render and download report from last year, even if source data is already purged).
Reports execution and rendering can be initiated both manually and on schedule.
All reporting-related operations are available in separate Reporting perspective. Perspective contains two main areas –
list of available reports on the left and report details view on the right. Details view show information about currently
selected report.
Details view contains tree main areas: Parameters, Schedules, and Results.
335
NetXMS Administrator Guide, Release 3.8.267
36.1.1 Parameters
Fig. 2: Execution parameters for report (in this example: Start date)
In this section, user can set all input parameters required for report execution, for example data range or list of objects
which should be included in the report. List of required parameters is extracted from report definition file and can be
empty, if particular report do not require any input data to operate.
36.1.2 Schedules
Each report can have one or more schedules, which define when it should be executed, and optionally rendered.
Reporting server can also notify users that new report is executed and available for download, or send resulting file as
an attachment.
To add new schedule, click on Add Schedule down below, this will open schedule editor.
3. Weekly - execute report every week on selected days of week at specified time
4. Monthly - execute report every month on selected days at specified time
Notification tab allows to control email notifications and report delivery to list of recipients. To enable notifications,
select Send notification on job completion checkbox.
If checkbox Attach rendered report checkbox is enabled, report will be rendered into selected format and attached to
notification email.
This section contains list of all generated reports, which are stored on the server and can be rendered on request. To
render report in desired format, right click on the record and select Render to PDF or Render to Excel.
If report is no longer needed, right click on record and select Delete to completely remove it from server.
36.2 Configuration
NetXMS server maintain persistent connection with reporting server on localhost:4710, but if can be changed in
configuration.
Report definitions are loaded from the file system by scanning workspace folder, expected structure: $WORKSPACE/
definitions/$REPORT_GUID. Each report folder should contain file main.jrxml, any additional files (im-
ages, translation files) should be referenced in main.jrxml with relative paths. Sample directory listing:
workspace/definitions/6eb9c41c-e9f0-4e17-ac57-de747e16e480/i18n.properties
workspace/definitions/6eb9c41c-e9f0-4e17-ac57-de747e16e480/main.jrxml
workspace/definitions/6eb9c41c-e9f0-4e17-ac57-de747e16e480/logo.png
Server behaviour is controlled by two files: logback.xml (logger configuration) and nxreporting.
properties.
Format of logback.xml is described in Logback manual.
nxreporting.properties is a standard Java property file in key=value format.
Parameter Description
nxreporting.workspace Path to workspace with deployed reports
system.datasource.driverClassNameJDBC class name, for example org.postgresql.Driver
system.datasource.url JDBC connection string, for example jdbc:postgresql://127.0.0.
1/netxms
system.datasource.dialect Hibernate dialect, for example org.hibernate.dialect.
PostgreSQLDialect. More information in JavaDoc
system.datasource.username
system.datasource.password
report.datasource.driverClassName
report.datasource.url
report.datasource.username
report.datasource.password
org.quartz.jobStore.dataSource
org.quartz.dataSource.myDS.driver
org.quartz.dataSource.myDS.URL
org.quartz.dataSource.myDS.user
org.quartz.dataSource.myDS.password
org.quartz.dataSource.myDS.maxConnections
36.3.1 Setup
<file>/opt/nxreporting/log/nxreporting</file>
<rollingPolicy class="ch.qos.logback.core.rolling.
˓→FixedWindowRollingPolicy">
<fileNamePattern>/opt/nxreporting/log/nxreporting.%i.gz</
˓→fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>5</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.
SizeBasedTriggeringPolicy">
˓→
<maxFileSize>16MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%d %5p | %t | %-55logger{55} | %m %n</pattern>
</encoder>
</appender>
In most cases (when reports are using only single datasource), setting “netxmsdConfig” is enough,
database type and credentials will loaded automatically from netxmsd.conf. “netxms” section of the
config is required for reports, which load data not from SQL datasource, but using NetXMS API
instead (connection is maintained by reporting server).
5. Create workspace directory (as set by “workspace” parameter), it will contain both report definitions (in “defi-
nitions” directory) and intermediate report data (in “output” directory).
6. Put report definition jars into workspace/definitions/, for example:
...
7. Enable reporting server connector, set EnableReportingServer to 1 (either in GUI - server configuration, or using
command line: “nxdbmgr set EnableReportingServer 1”), then restart netxmsd.
8. Create additional tables by executing both scripts for your type of database from sql folder, for example:
It may be required to comment out “drop table” statements in the beginning of quartz.sql file.
9. Start reporting server:
cd /opt/nxreporting
java -jar nxreporting-2.0-M2.jar
When started with “-jar” option, java will automatically find configuration files in conf/ and all li-
braries in lib/. However, you can run it differently (and omit “cd /opt/nxreporting”):
In under 10 seconds, netxmsd should connect to reporting server and list of available reports will be
visible in “Reporting” perspective.
/opt/nxreporting:
total 5728
drwxr-xr-x 6 alk wheel 204 Apr 7 20:31 .
drwxr-xr-x 14 alk wheel 476 Apr 3 20:07 ..
drwxr-xr-x 4 alk wheel 136 Apr 7 20:31 conf
drwxr-xr-x 79 alk wheel 2686 Jan 23 10:29 lib
-rw-r--r-- 1 alk wheel 2929061 Jan 23 10:29 nxreporting-2.0-M2.jar
drwxr-xr-x 4 alk wheel 136 Mar 11 15:06 workspace
/opt/nxreporting/conf:
total 16
drwxr-xr-x 4 alk wheel 136 Apr 7 20:31 .
drwxr-xr-x 6 alk wheel 204 Apr 7 20:31 ..
-rw-r--r-- 1 alk wheel 1367 Apr 7 20:21 logback.xml
-rw-r--r-- 1 alk wheel 764 Apr 7 13:21 nxreporting.xml
/opt/nxreporting/lib:
total 109528
...
/opt/nxreporting/workspace:
total 0
drwxr-xr-x 4 alk wheel 136 Mar 11 15:06 .
drwxr-xr-x 6 alk wheel 204 Apr 7 20:31 ..
drwxr-xr-x 32 alk wheel 1088 Mar 11 15:43 definitions
drwxr-xr-x 8 alk wheel 272 Mar 11 15:42 output
/opt/nxreporting/workspace/definitions:
total 248
drwxr-xr-x 32 alk wheel 1088 Mar 11 15:43 .
drwxr-xr-x 4 alk wheel 136 Mar 11 15:06 ..
-rw-r--r-- 1 alk wheel 3729 Mar 11 15:31 alarm-history-1.0.0.jar
-rw-r--r-- 1 alk wheel 5607 Mar 11 15:31 alarm-resolution-time-1.0.0.jar
-rw-r--r-- 1 alk wheel 4570 Mar 11 15:31 alarm-resolution-time-statistics-by-
˓→users-1.0.0.jar
...
/opt/nxreporting/workspace/output:
total 0
drwxr-xr-x 8 alk wheel 272 Mar 11 15:42 .
drwxr-xr-x 4 alk wheel 136 Mar 11 15:06 ..
drwxr-xr-x 4 alk wheel 136 Mar 11 15:44 01827cdb-cb23-4b06-b607-fd02c4279add
drwxr-xr-x 4 alk wheel 136 Mar 7 22:04 52ce4398-a131-4a79-887e-672cc73d5d34
drwxr-xr-x 3 alk wheel 102 Mar 11 15:44 8a7c025c-84c8-4914-b2bf-3b4cde27a224
...
On startup, reporting server scan workspace/definitions directory for *.jar files. Each file is unpacked into it’s own
folder based on jar name (e.g. “report1.jar” will be unpacked into “report1”). Each archive should contain at least one
file – “main.jrxml”, which is main report definition. It can also contain subreports, images – or anything else, supported
by Jasper Reports. Any additional resources should be referenced using paths relative to root folder of unpacked report,
which is set as additional parameter “SUBREPORT_DIR” (e.g. “$P{SUBREPORT_DIR}/logo.png”).
Archive can also contain java code, which will be used as data provider (instead of querying SQL
database). Reporting server will try to load class “report.DataSource”, which should implement interface
“com.radensolutions.reporting.custom.NXCLDataSource” (attached sample: Event Processing Policy). Query string
language in jrxml should be set to “nxcl” (default - SQL).
Simplest way to create jar files are using Maven, empty project is provided in samples archive. Running “mvn pack-
age” will produce complete jar file in “target” directory.
THIRTYSEVEN
IMAGE LIBRARY
All images used on maps or as rack, chassis or chassis module image should be uploaded to Image Library first. It is
possible to upload, delete and update images. They can be organized by categories.
Tips:
• Images on maps are displayed without scaling.
343
NetXMS Administrator Guide, Release 3.8.267
THIRTYEIGHT
MOBILE CONSOLE
NetXMS mobile console is a monitoring tool for Android devices running version 2.2. and later.
Currently, only a small subset of the functions present in the Desktop/Web edition are implemented, mainly read/only
operations. The next paragraphs briefly describes each section.
Here you can see how appears the main window and the underneath levels.
345
NetXMS Administrator Guide, Release 3.8.267
From the main window it is possible to get access to the following menu items:
• Settings: select this item to configure the console.
• Reconnect: select this item to force a reconnection to the server to gather new collected data.
• Disconnect & Exit: select this item to stop the console and exit from the app.
Underneath levels have menu that are context dependent, a detailed description can be found in each section.
38.2 Alarms
Alarms section is used to list and manage all pending alarms, eventually filtered on a particular node/container.
Through this view it is possible to manage alarms:
• Actions:
– Acknowledge: acknowledge the alarm.
– Sticky acknowledge: sticky acknowledge the alarm.
– Resolve: resolve the alarm.
– Terminate: terminate the alarm.
– View last values: jump to the node info section to view the last values for the node that generated the
alarm.
• Sort:
– Sort by severity ascending: sort list using event severity as criteria, ascending.
– Sort by severity descending: sort list using event severity as criteria, descending.
– Sort by date ascending: sort list using date of event as criteria, ascending.
– Sort by date descending: sort list using date of event as criteria, descending.
– Sort by node name ascending: sort list using node name that generated the event as criteria, ascending.
– Sort by node name descending: sort list using node name that generated the event as criteria, descend-
ing.
• Select all: select all the alarms from the list
• Unselect all: clear any selection of alarms from the list
38.3 Dashboard
Dashboards are defined by administrator and allow to combine any available visualization components with data from
multiple sources in order to create high-level views to see network (or parts of it) health at a glance. Not all elements
are currently available for the mobile console, dashboards are properly refreshed according to their schedule. Due to
dashboard size, keep in mind that Smartphones cannot be the best device to show them, a tablet is much more suitable
device. Here an example:
38.4 Nodes
This section is used to list and manage all nodes (all network infrastructure monitored by NetXMS are represented as
a set of objects. Each object represents one physical or logical entity, or group of them). Objects can be organized
into hierarchical structure, the Nodes section is used to explore them. In the right bottom corner of the icon there is
a symbol that indicates the status of the node/container following the same symbology used on the desktop console.
Clicking on a container will show the items inside, continuing to click up to an object will show a set of swipeable
pages:
• Overview: here are presented the main info associated to this node, such as the name, the primary IP, the status,
etc.
• Alarms: here are presented the list of pending alarms (if any) for this node, with the possibility to manage them
with the following commands:
– Actions:
38.5 Graphics
Predefined graphics are defined by administrator and can be used to view collected data in a graphical form (as a line
chart). Currently, the mobile console doesn’t autorefresh the content of the graphic selected. Here an example of a
predefined graphs:
38.6 MACaddress
This section is used to list previously searched MAC addresses or to start a new search by scanning a barcode value
(this feature needs the installation of Barcode Scanner from Zxing Team – freely available on the Google Play), by
input it manually or by getting it directly from a node via the “Find Switch port” command.
38.7 Settings
• Autostart on boot: check to automatically start the agent on boot (to be effective, app must not be moved to SD
card).
38.9 Connection
38.9.1 Parameters
38.9.2 Scheduler
Enables the possibility to define periodic connections to the server. If the scheduler is not enabled the app will try to
connect to the server every time it detects a new connection (data or WiFi) and remains always connected as far as the
connection remains active:
• Enable scheduler: check this to enable the scheduler.
• Frequency (min): amount of time, in minutes, that has to elapse between each tentative of connection to the
server to send the gathered info.
• Duration (min): amount of time, in minutes, that has to elapse before disconnect from the server.
• Daily scheduler: provides the ability to define a “one range” daily on which the agent is operational. Out of the specified ra
38.10 Notifications
38.10.2 Alarms
38.11 Interface
38.11.1 Multipliers
Allows to select the preferred multipliers to be used to show values. Allowed options: * None: do not apply multiplier,
values are extended. * Decimal: applies a decimal multiplier (power of 10, e.g. 1000 -> 1K, 1000000 -> 1M, . . . ) *
Binary: applies a binary multiplier (power of 2, e.g. 1024 -> 1Ki, 1048576 -> 1Mi, . . . )
Allows to set the text size to be used for axis labels (if the default value is too small for high density devices).
Allows to select to show or not the legend in the top right angle of the graphs. Since legend can be intrusive, especially
when there are several lines plotted, user can select to disable the legend.
THIRTYNINE
ADVANCED TOPICS
39.1 Zones
As NetXMS server keeps track of an IP topology, it is important to maintain the configuration in which IP addresses
do not overlap and that two IP addresses from same subnet are really within one subnet. Sometimes, however, it is
needed to monitor multiple sites with overlapping IP address ranges. To correctly handle such situation, zoning must
be used. Zone in NetXMS is a group of IP subnets which form non-overlapping IP address space. There is always zone
0 which contains subnets directly reachable by management server. For all other zones server assumes that subnets
within that zones are not reachable directly, and proxy must be used.
Zoning support is off by default. To turn it on you must set server’s configuration variable EnableZoning to 1
and restart server. After restart, server will create default zone with UIN (unique identification number) 0 and put all
existing subnets into that zone. Subnet tree will looks like this:
357
NetXMS Administrator Guide, Release 3.8.267
Server have to know proxy nodes to be able to communicate with nodes in remote zones. Default proxy settings for
all nodes in the zone can be set on Communications page in zone object properties:
On this page you can set default proxy node for NetXMS agents, SNMP, and ICMP. Note that proxy node must be in
default zone and must have primary IP reachable by NetXMS server.
To move existing node to another zone, select Change zone from nodes context menu, then select target zone in zone
selection dialog that will appear. After move to another zone, server will immediately do configuration poll on the
node.
NetXMS provides possibility to create issues in external helpdesk system directly from NetXMS management con-
sole, based on pending alarms. In this situation NetXMS and external helpdesk system will have synchronized issue
workflow.
For now integration is done only with JIRA.
For NetXMS is required to configure server parameters(they should be created by user) and restart the server.
If all configuration was successfully done after rester in console should be present:
[25-Apr-2014 14:16:07.894] [INFO ] Helpdesk link module JIRA (version 1.2.14) loaded
˓→successfully
NetXMS JIRA plugin should be deployed to JIRA and configured. REST API should be enabled in JIRA configuration
(enabled in default configuration).
To access configuration page for the plugin, go to “System → Advanced” and select “NetXMS Integration” tab:
1. “Plugin Enabled” — global on/off switch, plugin completely cease any activity when turned off (default).
2. “Force Save” — by default, plugin will verify configuration before saving (connectivity to all servers, creden-
tials). This checkbox allows to bypass this step completely and save configuration even if one of more NetXMS
servers are rejecting provided credentials or do not respond at all)
3. “Project Key” — Key of the project, where issues from NetXMS will be created. This key will be also used in
workflow operations — plugin will process events related to this project:
Workflow configuration
Since JIRA workflow can be much more sophisticated than alarm states in NetXMS, JIRA Administrator should decide
which workflow transition should change NetXMS alarm state.
NetXMS supports four alarm states:
1. Outstanding — initial state, can’t be set from JIRA side
2. Acknowledged — operator is aware of the problem and it’s in progress (“Acknowledge” action)
3. Resolved — problem is resolved but alarm stays in the list until verified and terminated by supervisor (“Resolve”
action)
4. Terminated — problem is resolved and verified, alarm is removed from the list (“Terminate” action)
Sample workflow (JIRA default workflow):
Sample mapping:
b. Click on “Add a new post function to the unconditional result of the transition”:
d. Select desired alarm action (Acknowledge / Resolve / Terminate) and click “Add”:
Ticket creation
Tickets are created from from alarms manually. To create ticket user should have “Create helpdesk tickets” access for
required objects.
Steps to create ticket:
1. Right click on alarm in NetXMS and select “Create ticket in helpdesk system”:
2. In a moment, issue will be created and Helpdesk ID will be show in corresponding column:
3. Right click on the alarm and select “Show helpdesk ticket in web browser” to navigate to the issue in JIRA:
39.2 Hooks
Sometimes it is required to add some additional functionality after poll, object creation or other action - for this purpose
hooks were created. Hook is manually created script in Script Library that is executed at a special condition like end
of the poll or interface creation.
More about poll types and purposes can be found there and about script creation there.
To be recognized as a hook script should have special name. It should be named according to convention:
Hook::hook_name.
Example: Hook::ConfigurationPoll
Full list of hooks:
Usually hooks are used for automatic actions that need to be done on node. For example automatic remove change of
expected state of interface depending on some external parameters.
39.3 Troubleshooting
Warning: Server (“netxmsd”) should be stopped while performing password reset operation!
Passwords in NetXMS are stored in hashed, not-reversible way, so there are no way to recover it, but it can be reset.
Use following procedure to reset password and unlock account:
1. stop netxmsd
2. run “nxdbmgr reset-system-account” to unlock “system” account and change it’s password to default
(“netxms”).
3. start netxmsd
4. login as “system” using password “netxms”
5. In user manager change password for any admin user account
6. login as admin user and disable “system” user account
When running on Windows server is capable of creating crash dumps. To enable crash dump generation, add the
following options to netxmsd.conf file:
CreateCrashDumps = yes
DumpDirectory = path
DumpDirectory must point to directory writable by server process. After each crash server will create two files:
info and mdmp. Info file contains basic information about crash, server version, and call stack of current thread.
Mdmp file is a minidump which can be read and analyzed using debugger.
It is possible to force creation of crash dump. To do that you’ll need access to server debug console. You can access
it using nxadm tool or via Tools → Server Console menu in management console. Once in server debug console,
you can run command dump or raise access. First command works only on Windows and will produce process
dump without stopping it. Second command will cause access violation exception which will lead to process crash
and crash dump generation.
Common issues:
1. Invalid community string or credentials
2. Access control on the device or firewall prevent connections from NetXMS server
3. Device do not support System (.1.3.6.1.2.1.1) or Interfaces (.1.3.6.1.2.1.2) MIBs, which are used to detect
SNMP-capable devices. To override OIDs used for detection, set node’s custom attribute snmp.testoid to
any OID supported by device.
On a new node creation is generated SYS_NODE_ADDED event. So any automatic actions that should be done on
a node can be done by creating EPP rule on on this event, that will run script. In such way can be done node bind to
container, template auto apply and other automatic actions.
For example, to connect management console to server 10.0.0.2 as user guest with empty password, use command
For example, to connect web management console to server 10.0.0.2 as user guest with empty password and open
dashboard called “SystemOverview”, use URL
http://server/nxmc?auto&server=10.0.0.2&login=guest&dashboard=SystemOverview
The NetXMS WebAPI is being developed to support larger integration possibilities for the NetXMS server and is based
on the RESTful philosophy. API calls are REST-like (although not purely RESTful) and uses JSON for data exchange.
The API currently supports Grafana integration and some additional parameters for integration. The NetXMS WebAPI
is currently in very early development!
Information about Grafana configuration can be found here.
39.7.1 Requirements
39.7.2 Setup
netxms.server.address=sever.office.radensolutions.com
If the server is running on a non-standard port, specify it with the following property:
netxms.server.port=
Authentication
Login
Any user account configured in NetXMX can be used to authenticate to Rest API, however this user should have
access right to objects that will be requested through the API.
There are 3 implemented options of authentication:
1. Basic authentication for Rest API session creation, more information can be found on Wikipedia
2. Through POST request for Rest API session creation
3. Through POST request to allow external software user authentication using NetXMS user accounts. To be able
to login using this authentication type, user account should have “External tool integration account” access right
set.
{"login":"admin","password":"netxms"}
{"login":"admin","password":"netxms"}
Logout
Objects
Request to get all objects available to this user or to get objects that fulfill filter requirements and are available to this
user.
Request type: GET
Request path: API_HOME/objects
Filter options:
• area=geographical area
• class=comma-separated class list
• name=pattern or regex, if useRegex=true
• parent=parent object id
• topLevelOnly=boolean - select top level objects only. false by default
• useRegex=boolean - treat name and custom attribute value as regex. false by default
• zone=comma-separated list of zone UINs
• @custom_attribute_name=pattern or regex, if useRegex=true
Return data:
Will return filtered objects or all objects available to user.
Get object by id
Alarms
Full scope of currently active alarms can be obtained or object specific list.
Request to get all active alarms available to this user or to get active alarms that fulfill filter requirements and are
available to this user.
Request type: GET
Request path: API_HOME/alarms
Filter options:
• alarm=list of alarm states. Possible values: outstanding, acknowledged, resolved
• createdBefore=UNIX timestamp
• createdAfter=UNIX timestamp
• objectId=ID or related object
• objectGuid=GUID or related object
• includeChildObjects=boolean. Set to true to get alarms of container child objects
• resolveReferences=resolve IDs into human readable data
• updatedBefore=UNIX timestamp
• updatedAfter=UNIX timestamp
Return data:
Will return filtered active alarms or all active alarms available to user.
Alarm by id
DCI Data
There are 2 options to get DCI last values. First is to get last values for one DCI and the second one is to create adhoc
summary table with required values for all nodes under container.
Request to get last values of DCI identified by ID for exact object identified by ID or GUID.
Request type: GET
Request path: API_HOME/objects/{object-id}/datacollection/{dci-id}/values
Filter options:
• from=requested period start time as unix timestamp
• to=requested period end time as unix timestamp
• timeInterval=requested time interval in seconds
• itemCount=number of items to be returned
Return data:
Will return last values for requested node and DCI limited by filters.
Option to get last values for multiple nodes(for all nodes under provided container) for the same DCIs. Required DCIs
and container are provided in request.
Request type: POST
Request path: API_HOME/summaryTable/adHoc
POST request JSON
{
"baseObject":"ContainerName",
"columns": [
{
"columnName":"Free form name that will be used in return table for this column
˓→",
Return data:
Will return adhoc summary table configured accordingly to request json.
Management console has an option to filter objects by defined by user criteria. Filter can be access by Tools->Find
Object. Filter can be used in two different modes: filter and query.
39.8.1 Filter
Filter will search object using class filter, zone filter, IP range and search string that will be checked for each object in
all it’s text fields (name, comments, custom attributes, Location, etc.).
39.8.2 Query
There can be written any script that will be executed on all objects and if stript returns true - object will be shown in
the resulting table. There can be used the same syntax as for Object query Dashboard element, but variables will not
be added as additional columns for table in this case.
FORTY
SCHEDULED TASKS
NetXMS provide option to schedule different tasks. Each task have it’s own parameter count and type. The only
common parameter is node on which task will be executed. Schedule time can be set in two ways as one time schedule
or as a cron task (see Cron format for supported cron format options).
Task is named Upload.File. This task uploads server file to agent. Upload file should exist in server file storage. Task
can be created in Schedules view or in Upload file. . . dialog.
Parameters:
1. File name that should be uploaded
2. Path and file name where this file should be uploaded on agent
Example: Warning-C.wav,/destination/location/Warning-C.wav
375
NetXMS Administrator Guide, Release 3.8.267
Task is named Execute.Script. This task executes script from library. Selected node is set as $node variable in the
script.
Parameters:
1. Server script name
40.3 Maintenance
Tasks are named Maintenance.Enter and Maintenance.Leave. This tasks turn on and turn off maintenance mode for
selected node. More about maintenance mode can be found there.
This task does not require parameters.
Access rights for schedules can be separated into two parts. Rights that are required to create, edit, delete tasks at all
and rights that are required to schedule exact task type. Task can be created by user or by system.
Overall access rights:
For some tasks like File.Upload there is also checked if this user has right to upload file to this node and if there is
an access to the specific folder. Access rights like this are checked while task execution, not while scheduling. If user
does not have access, then task will just fail.
FORTYONE
SCRIPTING
Script Library is used to store scripts that can be afterwards executed as macros, part of other script or just from server
console. Scripts can be added, deleted and modified in in this view.
41.1.1 Usage
This view allows to execute arbitrary script. Script can be manually created just before execution, and afterwards
saved, can be taken from the script library, can be used modified script from the script library and afterwards saved or
saved as. If this view is opened on a node, then in the script is available $node variable with node object.
377
NetXMS Administrator Guide, Release 3.8.267
41.3 NXSL
41.3.1 Overview
In many parts of the system, fine tuning can be done by using NetXMS built-in scripting language called NXSL
(stands for NetXMS Scripting Language). NXSL was designed specifically to be used as embedded scripting lan-
guage within NetXMS, and because of this has some specific features and limitations. Most notable is very limited
access to data outside script boundaries – for example, from NXSL script you cannot access files on server, nor call
external programs, nor even access data of the node object other than script is running for without explicit permission.
NXSL is interpreted language – scripts first compiled into internal representation (similar to byte code in Java), which
is then executed inside NXSL Virtual Machine. Language syntax and available functions can be found in NXSL
documentation.
41.4 NXShell
NxShell is based on Jython and provide access to NetXMS Java API using interactive shell. NxShell is build as single
jar file, which includes all required libraries.
Download: http://www.netxms.org/download/nxshell-VERSION.jar (example: http://www.netxms.org/download/
nxshell-1.2.13.jar)
41.4.1 Usage
Properties
These properties should be set with JVM’s “-D” option. Please make sure that all “-D” options are before “-jar”.
41.4.2 Scripting
Global Variables
Helper Functions
Example
flags = NXCObjectCreationData.CF_DISABLE_ICMP | \
NXCObjectCreationData.CF_DISABLE_NXCP | \
NXCObjectCreationData.CF_DISABLE_SNMP
for i in xrange(0, 5):
name = "Node %d" % (i + 1, )
cd = NXCObjectCreationData(objects.GenericObject.OBJECT_NODE, name, containerId);
cd.setCreationFlags(flags);
cd.setPrimaryName("0.0.0.0") # Create node without IP address
nodeId = session.createObject(cd)
print '"%s" created, id=%d' % (name, nodeId)
FORTYTWO
APPENDIX
Record has five fields, separated by spaces: minute, hour, day of month, month, and day of week. In DCI Collection
Schedule only, an optional the sixth field can be specified for resolution in seconds (this is a non-standard extension
which is not compatible with a regular cron format).
Allowed values and special characters for each field are:
381
NetXMS Administrator Guide, Release 3.8.267
42.1.1 Examples
Note: All boolean parameters understand “Yes/No”, “On/Off” and “True/False” values.
Note: All boolean parameters accept “Yes/No”, “On/Off” and “True/False” values.
NetXMS provide some additional command line tools. Each tool serves its own purpose.
42.7.1 DB Manager
Database initialization
Is used to initialize first time database. Database and user should already exist. Credentials of connection are taken
from server configuration file.
Database migration
Is used to migrate NetXMS database between different database management system from NetXMS supported list.
While migration nxdbmgr should use new configuration file(with new DB credentials) and as a parameter should be
given the old configuration file.
In best practises of migration is to do database check with command “nxdbmgr check”.
42.7.2 nxaction
42.7.3 nxadm
42.7.4 nxalarm
42.7.5 nxap
42.7.6 nxappget
42.7.7 nxapush
This tool has same usage as nxpush, but it sends data through local agent.
When new version of NetXMS is released - version of server protocol is changed. Change of version affects on server
communication with other tools like nxpush. So after each server update nxpush tool also should be updated. In case
of usage nxapush - only agent should be updated as this tool uses agent protocol to send data.
42.7.8 nxdevcfg
42.7.9 nxencpasswd
This tool can be used to encrypt passwords stored in server and agent configuration files.
42.7.10 nxevent
42.7.11 nxget
Where host is the name or IP address of the host running NetXMS agent; and parameter is a parameter, list or table
name, depending on given options. By default, nxget will attempt to retrieve the value of only one given parameter,
unless -b option is given.
Option Description
-a auth
Authentication method. Valid methods are “none”, “plain”, “md5” and “sha1”. De-
fault is “none”.
-E file Take screenshot. First parameter is file name, second (optional) is session name.
-h Display help and exit.
-i seconds Get specified parameter(s) continuously with given interval.
-I Get list of supported parameters.
-K file
Specify server’s key file (default is /opt/netxms/var/lib/netxms/.server_key).
Examples
nxget 10.0.0.2 -I
Get value of Agent.Uptime and System.Uptime parameters in one request, with output in parameter = value form:
nxget -C 10.0.0.2
Get value of System.PlatformName parameter from agent at host 10.0.0.2, connecting via proxy agent at 172.16.1.1:
Get value of Agent.SupportedParameters enum from agent at host 10.0.0.10, forcing use of encrypted connection:
42.7.12 nxmibc
42.7.13 nxpush
nxpush is a tool that allows to push DCI daca from command line.
There are different options how this tool can be used:
• with help of this tool data collected with different monitoring system can be pushed also to netxms
• can be used on nodes where agent can not be installed(not the case for nxapush)
• can be used on nodes behind NAT with no port forwarding option
Usage: ./nxapush [OPTIONS] [@batch_file] [values]
Options:
Notes:
• Values should be given in the following format: dci=value where dci can be specified by it’s name
• Name of batch file cannot contain character = (equality sign)
Examples: Push two values:
nxapush @file
42.7.14 nxscript
42.7.15 nxsms
42.7.16 nxsnmpget
42.7.17 nxsnmpset
42.7.18 nxsnmpwalk
42.7.19 nxupload
42.8.1 Agent.AcceptedConnections
42.8.2 Agent.AcceptErrors
42.8.3 Agent.ActiveConnections
42.8.4 Agent.AuthenticationFailures
42.8.5 Agent.ConfigurationServer
42.8.6 Agent.FailedRequests
42.8.7 Agent.GeneratedTraps
Note: Depricated
42.8.8 Agent.IsSubagentLoaded(*)
42.8.9 Agent.LastTrapTime
Note: Depricated
42.8.10 Agent.IsUserAgentInstalled
42.8.11 Agent.LocalDatabase.FailedQueries
42.8.12 Agent.LocalDatabase.LongRunningQueries
42.8.13 Agent.LocalDatabase.Status
42.8.14 Agent.LocalDatabase.TotalQueries
42.8.15 Agent.LogFile.Status
42.8.16 Agent.Notification.QueueSize
42.8.17 Agent.ProcessedRequests
42.8.18 Agent.Registrar
42.8.19 Agent.RejectedConnections
42.8.20 Agent.SentTraps
Note: Depricated
42.8.21 Agent.SourcePackageSupport
42.8.22 Agent.SupportedCiphers
42.8.23 Agent.SyslogProxy.IsEnabled
42.8.24 Agent.SyslogProxy.ReceivedMessages
42.8.25 Agent.ThreadPool.ActiveRequests(*)
42.8.26 Agent.ThreadPool.CurrSize(*)
42.8.27 Agent.ThreadPool.Load(*)
42.8.28 Agent.ThreadPool.LoadAverage(*)
42.8.29 Agent.ThreadPool.LoadAverage5(*)
42.8.30 Agent.ThreadPool.LoadAverage15(*)
42.8.31 Agent.ThreadPool.MaxSize(*)
42.8.32 Agent.ThreadPool.MinSize(*)
42.8.33 Agent.ThreadPool.Usage(*)
42.8.34 Agent.TimedOutRequests
42.8.35 Agent.UnsupportedRequests
42.8.36 Agent.Uptime
42.8.37 Agent.Version
42.8.38 File.Count(*)
42.8.39 File.FolderCount(*)
42.8.40 File.Hash.CRC32(*)
42.8.41 File.Hash.MD5(*)
42.8.42 File.Hash.SHA1(*)
42.8.43 File.Size(*)
42.8.44 File.Time.Access(*)
42.8.45 File.Time.Change(*)
42.8.46 File.Time.Modify(*)
42.8.47 FileSystem.Avail(*)
42.8.48 FileSystem.AvailPerc(*)
42.8.49 FileSystem.Free(*)
42.8.50 FileSystem.FreePerc(*)
42.8.51 FileSystem.Total(*)
42.8.52 FileSystem.Type(*)
42.8.53 FileSystem.Used(*)
42.8.54 FileSystem.UsedPerc(*)
42.8.55 Net.Interface.AdminStatus(*)
42.8.56 Net.Interface.BytesIn(*)
42.8.57 Net.Interface.BytesOut(*)
42.8.58 Net.Interface.Description(*)
42.8.59 Net.Interface.InErrors(*)
42.8.60 Net.Interface.Link(*)
42.8.61 Net.Interface.MTU(*)
42.8.62 Net.Interface.OperStatus(*)
42.8.63 Net.Interface.OutErrors(*)
42.8.64 Net.Interface.PacketsIn(*)
42.8.65 Net.Interface.PacketsOut(*)
42.8.66 Net.Interface.Speed(*)
42.8.67 Net.IP.Forwarding
42.8.68 Net.IP6.Forwarding
42.8.69 Net.IP.NextHop(*)
42.8.70 Net.RemoteShareStatus(*)
42.8.71 Net.RemoteShareStatusText(*)
42.8.72 Net.Resolver.AddressByName(*)
42.8.73 Net.Resolver.NameByAddress(*)
42.8.74 PDH.CounterValue(*)
42.8.75 PDH.Version
42.8.76 Process.Count(*)
42.8.77 Process.CountEx(*)
3. Optional parameter that accepts process’s main window title regular expression. If not set it means “match
any”. Process’s window title can be checked only on Windows platform.
Number of processes matching filter
42.8.78 Process.CPUTime(*)
42.8.79 Process.GDIObjects(*)
42.8.80 Process.IO.OtherB(*)
42.8.81 Process.IO.OtherOp(*)
42.8.82 Process.IO.ReadB(*)
42.8.83 Process.IO.ReadOp(*)
42.8.84 Process.IO.WriteB(*)
42.8.85 Process.IO.WriteOp(*)
42.8.86 Process.KernelTime(*)
42.8.87 Process.PageFaults(*)
42.8.88 Process.Syscalls(*)
42.8.89 Process.Threads(*)
42.8.90 Process.UserObjects(*)
42.8.91 Process.UserTime(*)
42.8.92 Process.VMSize(*)
42.8.93 Process.WkSet(*)
42.8.94 System.AppAddressSpace
42.8.95 System.ConnectedUsers
42.8.96 System.CPU.Count
42.8.97 System.CPU.LoadAvg
42.8.98 System.CPU.LoadAvg5
42.8.99 System.CPU.LoadAvg15
42.8.100 System.CPU.Usage
42.8.101 System.CPU.Usage(*)
42.8.102 System.CPU.Usage5
42.8.103 System.CPU.Usage5(*)
42.8.104 System.CPU.Usage15
42.8.105 System.CPU.Usage15(*)
42.8.106 System.CPU.Usage.Idle
42.8.107 System.CPU.Usage.Idle(*)
42.8.108 System.CPU.Usage5.Idle
42.8.109 System.CPU.Usage5.Idle(*)
42.8.110 System.CPU.Usage15.Idle
42.8.111 System.CPU.Usage15.Idle(*)
42.8.112 System.CPU.Usage.IOWait
42.8.113 System.CPU.Usage.IOWait(*)
42.8.114 System.CPU.Usage5.IOWait
42.8.115 System.CPU.Usage5.IOWait(*)
42.8.116 System.CPU.Usage15.IOWait
42.8.117 System.CPU.Usage15.IOWait(*)
42.8.118 System.CPU.Usage.IRQ
42.8.119 System.CPU.Usage.IRQ(*)
42.8.120 System.CPU.Usage5.IRQ
42.8.121 System.CPU.Usage5.IRQ(*)
42.8.122 System.CPU.Usage15.IRQ
42.8.123 System.CPU.Usage15.IRQ(*)
42.8.124 System.CPU.Usage.Nice
42.8.125 System.CPU.Usage.Nice(*)
42.8.126 System.CPU.Usage5.Nice
42.8.127 System.CPU.Usage5.Nice(*)
42.8.128 System.CPU.Usage15.Nice
42.8.129 System.CPU.Usage15.Nice(*)
42.8.130 System.CPU.Usage.SoftIRQ
42.8.131 System.CPU.Usage.SoftIRQ(*)
42.8.132 System.CPU.Usage5.SoftIRQ
42.8.133 System.CPU.Usage5.SoftIRQ(*)
42.8.134 System.CPU.Usage15.SoftIRQ
42.8.135 System.CPU.Usage15.SoftIRQ(*)
42.8.136 System.CPU.Usage.Steal
42.8.137 System.CPU.Usage.Steal(*)
42.8.138 System.CPU.Usage5.Steal
42.8.139 System.CPU.Usage5.Steal(*)
42.8.140 System.CPU.Usage15.Steal
42.8.141 System.CPU.Usage15.Steal(*)
42.8.142 System.CPU.Usage.System
42.8.143 System.CPU.Usage.System(*)
42.8.144 System.CPU.Usage5.System
42.8.145 System.CPU.Usage5.System(*)
42.8.146 System.CPU.Usage15.System
42.8.147 System.CPU.Usage15.System(*)
42.8.148 System.CPU.Usage.User
42.8.149 System.CPU.Usage.User(*)
42.8.150 System.CPU.Usage5.User
42.8.151 System.CPU.Usage5.User(*)
42.8.152 System.CPU.Usage15.User
42.8.153 System.CPU.Usage15.User(*)
42.8.154 System.CurrentTime
42.8.155 System.Hostname
42.8.156 System.IO.BytesReadRate
42.8.157 System.IO.BytesReadRate(*)
42.8.158 System.IO.BytesWriteRate
42.8.159 System.IO.BytesWriteRate(*)
42.8.160 System.IO.DiskQueue
42.8.161 System.IO.DiskQueue(*)
42.8.162 System.IO.DiskTime
42.8.163 System.IO.DiskTime(*)
42.8.164 System.IO.ReadRate
42.8.165 System.IO.ReadRate(*)
42.8.166 System.IO.TransferRate
42.8.167 System.IO.TransferRate(*)
42.8.168 System.IO.OpenFiles
42.8.169 System.IO.WaitTime
42.8.170 System.IO.WaitTime(*)
42.8.171 System.IO.WriteRate
42.8.172 System.IO.WriteRate(*)
42.8.173 System.KStat(*)
42.8.174 System.Memory.Physical.Available
42.8.175 System.Memory.Physical.AvailablePerc
42.8.176 System.Memory.Physical.Free
42.8.177 System.Memory.Physical.FreePerc
42.8.178 System.Memory.Physical.Total
42.8.179 System.Memory.Physical.Used
42.8.180 System.Memory.Physical.UsedPerc
42.8.181 System.Memory.Swap.Free
42.8.182 System.Memory.Swap.FreePerc
42.8.183 System.Memory.Swap.Total
42.8.184 System.Memory.Swap.Used
42.8.185 System.Memory.Swap.UsedPerc
42.8.186 System.Memory.Virtual.Active
42.8.187 System.Memory.Virtual.ActivePerc
42.8.188 System.Memory.Virtual.Free
42.8.189 System.Memory.Virtual.FreePerc
42.8.190 System.Memory.Virtual.Total
42.8.191 System.Memory.Virtual.Used
42.8.192 System.Memory.Virtual.UsedPerc
42.8.193 System.PlatformName
42.8.194 System.ProcessCount
42.8.195 System.ServiceState(*)
42.8.196 System.ThreadCount
42.8.197 System.Uname
42.8.198 System.Uptime
FORTYTHREE
GLOSSARY
802.1x IEEE 802.1X (also known as Dot1x) is an IEEE Standard for Port-based Network Access Control (PNAC). It
is part of the IEEE 802.1 group of networking protocols. It provides an authentication mechanism to devices
wishing to attach to a LAN or WLAN. More details in Wikipedia
Action Configurable operation which can be executed by the system when Event is passing thru Event Processing
Policy. Multiple action types are supported, including email or notifications (SMS, instant messages), executing
OS commands and forwarding events to another instance of NetXMS server.
Alarm Outstanding issue which require operator attention. Alarms are created by the system as a result of Event
passing thru Event Processing Policy.
Alarm Browser View in user interface, which shows all active alarms in the system and allow user to interact with
them.
ARP The Address Resolution Protocol (ARP) is a telecommunication protocol used for resolution of network layer
addresses into link layer addresses, a critical function in multiple-access networks. More details in Wikipedia
Business Service An IT Service that directly supports a Business Process, as opposed to an Infrastructure Service
which is used internally by the IT Service Provider and is not usually visible to the Business.
CA Certification authority is an entity that issues digital certificates. More details in Wikipedia
CDP Cisco Discovery Protocol is a Cisco proprietary protocol that runs between direct connected network entities
(routers, switches, remote access devices, IP telephones etc.). The purpose of the protocol is to supply a network
entity with information about its direct connected neighbors. More details in Wikipedia.
Condition (Create condition in infrastructure services)
Container Object that can store other containers and nodes.
CSR Certificate signing request is a message sent from an applicant to a certificate authority in order to apply for a
digital identity certificate. More details in Wikipedia
Dashboard Manually generated Object that can combine any available visualization components with data from
multiple sources in order to create high-level views to see network or parts of it, and it’s health.
Data Collection Item Configuration entity of a single Metric.
DCI Abbreviation for Data Collection Item
DNS Domain Name System. More details in Wikipedia
Entire Network Automatically generated object hierarchy that contains all nodes and IP subnets known to NetXMS.
EPP Abbreviation for Event Processing Policy
Event TBD A change of state which has significance for the management of IT Service.
Event Processing Policy List of rules which defines system reaction on events. All events are matched against list of
rules in Event Processing Policy, if match is found – configured actions are executed.
457
NetXMS Administrator Guide, Release 3.8.267
Perspective A perspective defines the initial set and layout of views in the Eclipse Workbench window.
Policy Configuration parameter set that can be applied on a Node.
Polling Polling is process of gathering information by server from nodes. This is usually done automatically at
specified intervals of time, but can be triggered manually also. There are different types of polling: Status,
Configuration, Topology, Discovery and Routing.
NetXMS Agent NetXMS daemon that is installed on monitored Node to provide additional monitoring options.
Proxy Agent NetXMS Agent capable of forwarding requests to nodes which are not directly accessible to NetXMS
server. Agent support proxying of native agent protocol as well as SNMP.
Push parameter Type of DCI, where collected data is pushed into the server by the agent.
RADIUS Remote Authentication Dial In User Service (RADIUS) is a networking protocol that provides centralized
Authentication, Authorization, and Accounting (AAA) management for users who connect and use a network
service. More details in Wikipedia
SMCLP Server Management Command Line Protocol
SNMP Simple Network Management Protocol (SNMP) is an “Internet-standard protocol for managing devices on
IP networks”. Devices that typically support SNMP include routers, switches, servers, workstations, printers,
modem racks and more. SNMP is used mostly in network management systems to monitor network-attached
devices for conditions that warrant administrative attention. SNMP is a component of the Internet Protocol
Suite as defined by the Internet Engineering Task Force (IETF). It consists of a set of standards for network
management, including an application layer protocol, a database schema, and a set of data objects. More details
in Wikipedia.
SNMP Trap Asynchronous notification from SNMP agent to SNMP manager. SNMP traps enable an agent to no-
tify the management station of significant events by way of an unsolicited SNMP message. More details in
Wikipedia.
STP The Spanning Tree Protocol (STP) is a network protocol that ensures a loop-free topology for any bridged
Ethernet local area network. The basic function of STP is to prevent bridge loops and the broadcast radiation
that results from them. Spanning tree also allows a network design to include spare (redundant) links to provide
automatic backup paths if an active link fails, without the danger of bridge loops, or the need for manual
enabling/disabling of these backup links. More details in Wikipedia
Subagent Extension module (shared library) which can be loaded into NetXMS agent to provide additional function-
ality.
Syslog Widely used standard for message logging. More details in Wikipedia.
Template A preset of one or more DCIs that can be applied on Node.
Threshold Part of DCI configuration, which define events to be generated when collected value is outside of expected
range.
TLS Transport Layer Security is a cryptographic protocols that provide communications security over a computer
network. More details in Wikipedia.
Trim Stack View Stack in minimized state, represented as a set of buttons, one for each View in the stack.
UPS An uninterruptible power supply, also uninterruptible power source, UPS or battery/flywheel backup, is an
electrical apparatus that provides emergency power to a load when the input power source, typically mains
power, fails. More details in Wikipedia
URL A uniform resource locator (URL) is a reference to a resource that specifies the location of the resource on a
computer network and a mechanism for retrieving it. More details in Wikipedia
View In the Eclipse Platform a view is typically used to navigate a hierarchy of information, open an editor, or display
properties for the active editor.
459
NetXMS Administrator Guide, Release 3.8.267
View Stack Multiple views combined into single one, with tab navigation on top of it.
VLAN In computer networking, a single layer-2 network may be partitioned to create multiple distinct broadcast
domains, which are mutually isolated so that packets can only pass between them via one or more routers; such
a domain is referred to as a virtual local area network, virtual LAN or VLAN. More details in Wikipedia.
VPN A virtual private network (VPN) extends a private network across a public network, such as the Internet. It
enables a computer or network-enabled device to send and receive data across shared or public networks as if it
were directly connected to the private network, while benefiting from the functionality, security and management
policies of the private network. A VPN is created by establishing a virtual point-to-point connection through
the use of dedicated connections, virtual tunneling protocols, or traffic encryptions. Major implementations of
VPNs include OpenVPN and IPsec. More details in Wikipedia.
VRRP The Virtual Router Redundancy Protocol (VRRP) is a computer networking protocol that provides for auto-
matic assignment of available Internet Protocol (IP) routers to participating hosts. This increases the availability
and reliability of routing paths via automatic default gateway selections on an IP subnetwork. More details in
Wikipedia
Zone Zone in NetXMS is a group of IP subnets which form non-overlapping IP address space. There is always zone
0 which contains subnets directly reachable by management server. For all other zones server assumes that
subnets within that zones are not reachable directly, and proxy must be used. It is used to monitor subnets with
overlapping IP address space.
A M
Action, 457 MAC address, 458
Alarm, 457 Management Console, 458
Alarm Browser, 457 Metric, 458
ARP, 457 MIB Explorer, 458
Mobile Device Object, 458
B Monitoring Agent, 458
Business Service, 457
N
C NDP, 458
CA, 457 Network Discovery, 458
CDP, 457 Network Map, 458
Condition, 457 Node, 458
Container, 457 NXSL, 458
CSR, 457
O
D Object, 458
Dashboard, 457 Object tool, 458
Data Collection Item, 457
DCI, 457 P
DNS, 457 Package Manager, 458
Perspective, 459
E Policy, 459
Entire Network, 457 Polling, 459
EPP, 457 product_name Agent, 459
Event, 457 Proxy Agent, 459
Event Processing Policy, 457 Push parameter, 459
Event Template, 458
R
G RADIUS, 459
GPL, 458
GUID, 458 S
SMCLP, 459
I SNMP, 459
ICMP, 458 SNMP Trap, 459
Infrastructure services, 458 STP, 459
Subagent, 459
L Syslog, 459
LAN, 458
461
NetXMS Administrator Guide, Release 3.8.267
T
Template, 459
Threshold, 459
TLS, 459
Trim Stack, 459
U
UPS, 459
URL, 459
V
View, 459
View Stack, 460
VLAN, 460
VPN, 460
VRRP, 460
Z
Zone, 460
462 Index