
0. Intro
I did not find a single article on NetXMS on Habré, although I was looking for it. And only for this reason I decided to write this creation in order to pay attention to this system.
This is a tutorial, how to, and a superficial overview of the system's capabilities.
This article contains a superficial analysis and description of the system's capabilities. I didn't dig deep into the possibilities for a number of reasons. And the description of all the functionality would take far from one article.
Since more or less I worked only with Zabbix, this particular system will often be mentioned in the article for comparison with the subject. In addition, it somehow happened that everything is compared with something generally recognized.
1. What and why?
The monitoring system, as can be seen from the definition, is a system that allows you to get up-to-date information on any network node, router machine, and enter the necessary information at any time.
Why this is necessary is just as obvious. To be aware of what is happening.
Often, the monitoring system can provide very comprehensive information about the state of both the infrastructure as a whole and its individual parts. Plus, if you set up alerts (and without it, any monitoring is worthless), then at the output we get a serious tool that allows us not only to respond in a timely manner to emergencies that have already occurred, but also, in most cases, makes it possible to prevent these accidents.
2. Why NetXMS?
A little offtopic for those who like multi-bookcuffWhen I was young and inexperienced... This is how all fairy tales usually begin?.. In a word, when I was a maximalist, I studied the issue of infrastructure monitoring, and the result of those "research" was the conclusion that there is nothing better than Zabbix. And at that time I really liked it, because it can do a lot, it can do a lot, and its functionality can be expanded with self-written scripts, so we can say that it can do everything if its hands grow from the right place. But Zabbix is quite a complex tool. It took me almost two weeks to get to the bottom of it. And this is just the implementation stage. Then another couple of weeks to set up monitoring of everything that I then needed. And how to use it to look at the status of ports on routers, I read and read, got scared, and decided that I didn’t really need it ... No, well, it’s really scary for an unprepared mind right after the institute ...
And now, a few years later, having matured and matured, I decided that it was time to refresh my knowledge about monitoring systems. And finally, to make normal, stable monitoring of the network, since this problem has become relevant due to the growth of segments, the connection of a branch, and other trifles. Everything flows, everything changes. And I began to test all sorts of tools. I’ll install this system, touch it, then that one. And everywhere something is missing, everywhere something is not to your liking. Either the interface is inconvenient, then you are tormented to set up, then something else. And then NetXMS turned up for me. By the way: where I dealt with Zabbix for two weeks, with NetXMS everything went and went in a couple of hours. Perhaps the experience with Zabbix affected, or maybe the matter is in NetXMS itself ... it's hard to say.
NetXMS turned out to be a fairly easy system to install and configure. It has server and administration console versions for both Windows and under Linux, graph generation, a built-in browser that allows you to connect to the same routers via HTTP/HTTPS protocols from within the administration console, an intuitive interface, and an agent for any OS. In short, this system turned out to be simple and convenient. At first glance.
Their documentation, by the way, is 8 out of 10. The main things are indicated in it, but in order to delve into the subtleties, you need to dig deeper.
The main advantages indicated by the developerDeep network monitoring
Automatic detection, visualization and search of connected components at level 2 and 3
Full SNMPv3 support
Active detection with scanning "probes"
Passive discovery based on information from monitored devices - ARP and routing tables, interfaces
Application and server monitoring
All the main metrics you would expect: CPU, file systems, I/O, memory, traffic
JMX bridge for monitoring Java applications
Application specific extensions: Oracle, MySQL, PostgreSQL, MongoDB, DB2, Tuxedo and many more
Integration API for native applications
Designed for large networks
One server can track hundreds of metrics on thousands of devices
Full support for distributed monitoring and horizontal scaling
Monitoring of overlapping IP subnets
Flexible access control for operators and customers
3. Going deeper
How to install the system - there is a whole administrator available on , and there's nothing complicated about it, so I won't dwell on it. The hardest part of the installation is connecting the system to the database... The only difference here is the choice of DBMS and server OS. I chose Windows (next-next-enter data-done) and MSSQL, since I already had it.
3.1. Turn on autodiscovery
Auto-discovery of hosts can be enabled during installation. If this was not done for some reason, then it can always be included in "Configuration-Network Discovery" or by clicking on the icon with the same name. The discovery properties appear in the workspace. You need to enable it by switching it to passive or active mode, and designate other properties, for example, polled subnets. You can also wind up filters here, and you can either select and fine-tune those built into the system, or write your own scripts. To be honest, I didn't need filters. But the setting looks pretty friendly and understandable.
Also here you can specify the default SNMP community and its credentials (read authorization).
3.2. Adding Nodes
When auto-discovery is enabled, end nodes (PCs, printers) will be added and distributed across subnets automatically. With active network equipment, everything is somewhat more complicated.
You should start by enabling SNMP on your network equipment and setting up community. If the default value for the SNMP community has not been changed in the properties of autodiscovery of network nodes, then the system uses the public community, and this setting can be changed for each node in the properties of the added node (node).
For convenience, you can group devices according to any convenient principle; for this, you can create containers in the tree in the Infrastructure Services branch and bind nodes from the Entrie Network into them.
After enabling and configuring SNMP on routers and adding them to the list of monitored equipment, the system itself will contact them, poll them, determine what kind of devices they are, apply templates, start collecting data and show the front panel for each router. Herself. From the box. When I set up Zabbix, I could only dream of something like this.

I added all my network pieces of iron manually, since for some reason they themselves were not found in me. Everything is simple here. We create a container in Infrastructure Services with any convenient name (for example, switches), and RMB-create-node, specify the display name of the node, its IP-address, and it is better to check the box "disable the use of the NetXMS agent", since it still cannot be installed on network equipment, and extra packages are useless.
Built-in browser. You can simply RMB on the desired router and open the web interface of the device. It seemed to me more convenient than every time to go into your records and look for the right IP. True, the browser is so-so.
3.3. Building a network map
First of all, you need to create a network map as an object. As usual - in the thread Networks Map RMB, create, select map type, set parametersand the system will do everything by itself.
The card types are as follows:
- Custom. This is a map designed to be formed manually, at the request of the user.
- Layer 2 topology. This is a map that allows you to automatically do everything for the user, based on the 2nd level of the OSI model (in fact, it builds a map based on the mac-addresses of devices).
- IP topology, it's the same Layer 3. The same as in the case with Layer 2, only the map is based on layer 3 of the OSI model (IP addresses).
When choosing manual mapping, you need to drag nodes from the tree to the map layer, connect them, and so on. Regular drawing.
In the other two cases, you need to select a reference point from which the system will start building a map. For example, a node of some router. The system reads from it data about connected devices and the ports to which they are connected, and then reads data from the next router, matches, and so on. After analyzing all the devices, NetXMS itself will draw connections between network devices, indicating the ports where everything is connected. You can also specify that the system places end devices (printers, PCs, servers) on the map by simply clicking on the appropriate item in the map properties (RMB - properties - map properties). Also in this paragraph, you can set the "detection radius" if desired or necessary.
Little recommendation. Enable the Always fit layuot to screen property so that each time you update the network map, you do not have to scroll through the workspace and zoom in.

With a distributed network topology, you can overlay objects on a map of the area. You can also use, for example, a photo of a rack with equipment in a server room as a background substrate, overlaying the necessary objects on it. Thus, you can quickly determine the status of any device in the rack. In my opinion, this is an extremely useful thing if it is necessary to transfer cases to a successor or a newly arrived colleague to explain the state of affairs. Clearly, conveniently, self-evidently.
3.4. Agents
Agents exist both for Windowsso for LinuxThe operating principle is the same as that of Zabbix agents: it is installed on the machine from which metrics need to be collected and transmits data to the monitoring server. The agent can be installed either before or after adding a node to the system. After the agent is installed on the node, the system will begin receiving data from it after a short period of time, using a standard template. Monitored parameters can be added either for a single node or by attaching one or more predefined templates to it. It is naturally recommended to use templates, as this configuration is more flexible.
The list of monitored parameters for agents is quite extensive. A complete list can be viewed at
As soon as the system determines that an agent is functioning on the node, it will immediately attach this node to one of the default templates - Windows, Linux, HP-UX, Generic UNIX, AIX, depending on the operating system of the node.
Standard template for Windows-hosts:

You can add a parameter to track a specific node by clicking "RMB-Data Collection Parameter", Further "RMB in the workspace - New parameter", and select the one you need from the list. You can also configure triggers for the monitored parameter here.
It is important that agents, like Zabbix, can run user scripts.
How to install?This is offtopic, because everyone ... hmmm ... as they want.
Here the question is - is it necessary to distribute agents only to servers, or in general to all machines on the network? If there are servers, and there are few of them, the easiest way is by hand. If there are many - domain policies, KIX, PoSh. Anything. Agents have the /SILENT key, which allows it to be “injected” transparently for the user (if we are talking about distribution to all machines on the network). I prefer scripts, as you can set a condition and create a flag, unlike policies that will install the program every time you turn on the PC. So, we are writing a script from the series “check for the presence of a flag file, if not, run the installer with the /SILENT key and after successful installation create a flag file”. Profit.
3.5. Triggers
Triggers can be configured to respond to specific events in the collected data. For example, exceeding a certain ping-pong value to the router. The notification method for each trigger is also configured (for some, an icon in the console is enough, and some immediately send notifications wherever possible). The reaction to the event is selected from the pre-configured ones in the Action Configuration.
To create a trigger: enter the Data Collection Cnfiguration node or template, double-click on the parameter of interest (if not, you must first create it), and in the properties go to the Thresholds tab, click the add button.

«Function» - what or what values to take to calculate the condition. It can take the following values (the number of values used for testing is indicated in the Samples field):
- Last polled value: last / received value / values
- Average value: average value from the last
— Mean deviation: mean deviation
- Diff with previous value: difference with the previous value
- Data collection error: data retrieval error
- Sum of values: sum of values
- Script: the value obtained as a result of the user script
«surgery» — trigger condition. It can take values (the value is indicated in the corresponding Value field):
- <: less than: less than
- <=: less than or equal to: less than or equal to
- == equal to: equivalent
- >=: great than or equal to: greater than or equal to
- >: great than: more than
— !=: not equal to: not equivalent
- like: close to
- not like: not close to
As for the last two parameters, I'm not sure how they work. Therefore, I will not even assume what boundaries are built into them.
In a word, everything is the same as in the same Zabbix, but you don’t have to enter the formulas with your hands, being afraid to make a mistake or make a mistake. To restore the trigger (deactivation event), the system itself will substitute the value. (In Zabbix, again, you need to print and not be sealed).
3.6. Templates
RMB-create template, enter the name of the template. RMB-Data Collection Cnfiguration.
Some theoryThe information we collect may come from several sources. It could be NetXMS agentrunning on the machine may be "simple query" or "Internal", sent by the server itself (for example, the same ping), "SNMP","checkpoint SNMP","Push","Windows Performance Counters","SM-CLP", or custom "script". For each type of information, you can select the type that the system will expect when receiving. For example, ping will return an integer value (integer), the amount of free disk space in bytes will also be an integer, but the same temperature will no longer be an integer, that is, real).
To collect information via SNMP, NetXMS has a huge list of predefined parameters, that is, you can not enter a specific OID, but find it in the MIB tree, which is actually quite problematic ... But. As a result, you need to delve into the manufacturer's documentation and look for IOD values for each device separately. You can kill a lot of time setting up reading information from devices, bumping into a system message "UNSUPPORTED", but in the end it turns out that this particular device simply does not know how to provide the requested information. It remains only to smoke manuals and hope.
For example, to collect information about the response time of a node (ping), you need to add a new parameter (RMB-new parameter), select Internal in the Origin field, press the Select button, and select Ping Time. There is a search, which I only dreamed about in Zabbix. It also makes sense to change the node polling period (the default is 60 seconds, that is, if the router stops responding immediately after being polled by the monitoring system, it will take almost a full minute before the system realizes that something is wrong with it so, and sound the alarm).
List of Internal data that can be processed:

After all the necessary settings have been added to the template, you need to click RMB-apply and select all nodes to which this template should be applied (ctrl+LMB). And that's all. After that, a branch will appear in the tree under the template, expanding it, you can see all the nodes to which this template is applied.
When detaching from the node template, the collected data does not stop being collected, in order to cancel their collection, you need to go to the Data Collection Configuration for each node and delete everything manually, or first delete the parameters from the template and only then delete the nodes from it. I do not know why it was done this way, but, in my opinion, this is an extremely strange thing. But ... As it is.
In the template, you can select the data you want to collect and copy it to another template. Massively. And no need to copy-paste from one template to another manually ... I'm already starting to hate Zabbix ..
3.7. Dashboards
Oddly enough, but the NetXMS Wiki contains only one link to youtube on this subject: , there is not even a list and description of the elements that can be added to the Dashboard. In principle, everything is just as intuitive there. Label - it's just ... well ... Label ... I don't even know how to translate it. In a word, a field with an inscription is used to designate and delimit elements, since the elements themselves do not contain names. Line Chart is a line chart. Bar Chart is a diagram. alarm viewer — list of warnings for the selected node/s. In short, the names speak for themselves.
Next, you need to open the dashboard properties and configure the views. We are interested in the Dashboard Elements tab. Number of columns is the number of columns, elements that will be arranged horizontally. Each object has its own properties, and I would recommend unchecking Layout-Grab execessive vertical space to minimize the size of each element.

3.8. Action Configuration
(Configuration-Actions Configuration)
In fact, these are actions in response to triggers.

NetXMS can send e-mail, sms, xmpp messages in response to a trigger. Everything is trivial here - just fill in the required fields.
You can also:
— Send notification to another NetXMS server
— Run a command on the NetXMS administration server
— Execute a command on a node using the NetXMS agent
- Execute an NXSL script (NSXL is your own )
After creating an action, you can set the execution delay time for it, as well as apply a macro for execution. The delay time is necessary in order not to disturb the operator in case the problem resolves itself (for example, the response time to a ping request was longer than the specified value, but at the next check it may return to normal, so why bother over such trifles?) .
3.9. Differentiation of access rights
Each object can be configured with its own access rights. For each object inside another object, you can also set access rights. This allows for very flexible allocation of monitoring responsibilities and capabilities to different user groups. That's all I wanted to say.
4. Заключение
I would like to refute the title of my own article. NetXMS is not for the lazy. It's just that the developers did not focus on functionality, like some, but, among other things, they also took care of the interface.
Let's do it. I used Zabbix and NetXMS. Therefore, I will simply write my feelings from these two systems.
So.
NetXMS seems to me to be an extremely user-friendly system. Well… to the admin… yes, to the admin. It has what is called an intuitive interface, which is really cool. No need to write your own formulas, read a bunch of supporting documentation to enable ping check before the switch, or some other simple thing. But. In Zabbix, this simplest thing is not much different from something really difficult, that is, if you have mastered it, then you will do the same for everything else. NetXMS has hints, most of the parameters can be found in the interface, selected with the mouse and configured. In Zabbix, you need to find out if the system can do this and that, and if so, how it is written and what parameters it returns. Zabbix wins in the community and tons of templates for all occasions ... if you can find what you need in this mountain of rubbish ... On the other hand, NetXMS also has a bunch of fans and add-ons they created for this system. Yes, and the system itself out of the box is able to monitor the most popular applications, as stated on the main page of the project.
The main advantage of NetXMS against Zabbix for me was the ability to run a script on a problem node in response to a trigger. The CPU temperature has risen above the threshold - it will turn off the host itself. And then we'll figure out what the problem is. Perhaps Zabbix also has such a thing, but I could not. Just like in monitoring ports on routers. And then itself ... Well, as it goes ... You need to master the scripting language, and that's it ...
Access rights in NetXMS allow you to very flexibly delimit the capabilities of different users of the system. But in order to set it all up, you need to tinker straight.
In general, the systems are quite similar, and their capabilities, at first glance, seem to be at least comparable. Although it is felt that Zabbix can do more, these capabilities lie deep under the hood and are unattainable for a mere mortal all-in-one admin. NetXMS is seen as simple and understandable, friendly and pleasant.
Zabbix has excellent documentation, wiki, how to, FAQ, best practice, as well as various forums, etc., where you can find answers to almost all questions. And if anything - ask your own.
In summary, I'd like to recommend NetXMS for people who are just starting out or who don't need to dive deep into monitoring anything and everything. I am sure that if you deal with it further, you can wind up very, very subtle observations in it.
But still, the main advantage I see is a very nice interface and ease of setup.
5. Materials used
youtube channel
Source: habr.com
