You can use nodes to build a hierarchy of distributed monitoring.
Each node is a full Zabbix server and is responsible for monitoring its own location. Zabbix supports up to a thousand nodes in a distributed setup.
The benefits of using a node setup:
A node may use its own platform (OS, hardware) and database engine independently of other nodes. Also child nodes can be installed without Zabbix frontend.
The nodes of higher levels should use a combination of better hardware with MySQL InnoDB, Oracle or PostgreSQL backend.
A distributed monitoring setup will not work with an SQLite backend database.
A Zabbix server installed by following the standard installation procedure is not configured as a node for a distributed setup.
To configure it as a node:
Run this command only once. Running it twice will corrupt the database, so make sure that you run it with the correct node id.
It is strongly recommended to stop Apache web server before the conversion step.
For example, you may run (if NodeID is '1'):
Running zabbix_server with the -n option does not start the server process.
Running this command will fail if any configuration object ID is larger than 99999999999999 or any historical object (events, alerts, etc) ID is larger than 99999999999999999.
In a very simple setup, we may envisage this node (with NodeID=1) as the master, and go on to configure another Zabbix server as a child node, using the same procedure, only using a different node identifier, say, '2'. With two nodes configured, it is time to add them in the Zabbix front-end, in a very simple master-child relationship.
To configure the master node, open its Zabbix frontend:
Node attributes:
Parameter | Description |
---|---|
Name | Unique node name. |
Id | Unique node ID. This is the value of NodeID from the configuration file. |
Type | Local - the local node |
IP | IP address of the local node. Zabbix trapper must be listening on this IP address. |
Port | Port number of the local node. Zabbix trapper must be listening on this port number. Default is 10051. |
Then add the child node:
Node attributes:
Name | Unique name of the child node. |
Id | Unique node ID. This is the NodeID from the child node configuration file. |
Type | Select the first of the two available values: Child - a child node Master - a master node |
Master node | Select the master node for this child node. |
IP | IP address of the child node. Zabbix trapper must be listening on this IP address. |
Port | Port number of the child node. Zabbix trapper must be listening on this port number. Default is 10051. |
To configure the child node, open its Zabbix frontend:
Then add the master node:
Node attributes:
Name | Unique name of the master node. |
Id | Unique master node ID. This is the NodeID from the master node configuration file. |
Type | Select the second of the two available values: Child - a child node Master - a master node |
IP | IP address of the master node. Zabbix trapper must be listening on this IP address on the master node. |
Port | Port number of the master node. Zabbix trapper must be listening on this port number. Default is 10051. |
To finish configuring a simple distributed setup, start the zabbix_server daemons, beginning with the master node daemon.
As soon as nodes are defined, a dropdown for selecting one or several nodes appears in the Zabbix front-end.
Once selected, all information displayed in the front-end will come from the selected node(s).
You can use the principles outlined to build more complex, multi-level monitoring hierarchies.
In this example, Riga (Node 4) will collect events and history from all the child nodes.