This is a multi-part series of Nagios articles all focused on configuring a complete Nagios monitored network. Find all related articles here.
Nagios monitors servers, switch and pretty much anything you like and each device must be defined in a file that Nagios looks at for guidance. That file is “/etc/nagios/servers/clients.cfg” according to the other Nagios articles on this blog. However, if it’s not in that location on your server, do a quick search and find it.
That file (that we’ll call the “clients” file) is very easy to understand but can get pretty long. The clients file does need some explanation and that’s the point of this article. Keep in mind that although i’m discussing the important parts, that file does allow plenty more than what we’ll cover.
We’re using SNMP over UDP (port 161), SNMP version “2c” and i recommend forcing “IPV4” which can be done by editing the “commands.cfg” file and replacing “check_ping” with “check_ping -4” – but that’s a topic for another time.
The example “clients” file below is the basis for the examples i provide below.
“hostgroup”. This section groups hosts together allow easy assignment of monitoring. For example, suppose you have two groups of servers; those that are monitored by SNMP and those that are monitored simply by “ping”. We would create two “hostgroup” sections where the first is for all devices monitored using SNMP and another section for those devices monitored simply for availability (ping). The “hostgroup” does NOT define any kind of monitoring at all – it simply groups devices together to make things easier later on.
TIP: Devices not mentioned in any “hostgroup” will still be monitored with pings.
“service”. This section defines what we want to monitor for. For example, suppose we want to monitor for CPU usage or RAM usage, we’d define one “service” for CPU and another for RAM. Actually, in the examples that follow, we include services for monitoring disk space too. We can monitor for anything that SNMP collects information for. This section does NOT specify which devices we’ll apply the service monitoring to.
“host”. This is where we define the devices that we monitor. We do NOT specify what services we want to monitor here.
How it all links together
- We define our devices in the “host” sections.
- We group the devices in the “hostgroup” section.
- We define the services to be monitored in the “service” section AND list the groups (the “hostgroup”) that the service monitoring applies to.
Example “services.cfg”:
Here’s the “services.cfg” file that our example is based on:
define hostgroup{ hostgroup_name snmp-servers alias SNMP Hosts members mail.example.com, www.example.com } define service{ use generic-service hostgroup_name snmp-servers service_description CPU 5 Minute Load check_command check_snmp!-C public -o 1.3.6.1.4.1.2021.10.1.3.2 -P 2c } define service{ use generic-service hostgroup_name snmp-servers service_description CPU Idel Time check_command check_snmp!-C public -o 1.3.6.1.4.1.2021.11.11.0 -P 2c } define service{ use generic-service hostgroup_name snmp-servers service_description Free RAM check_command check_snmp!-C public -o 1.3.6.1.4.1.2021.4.11.0 -P 2c } define service{ use generic-service hostgroup_name snmp-servers service_description Used Disk Space Percentage check_command check_snmp!-C public -o 1.3.6.1.4.1.2021.9.1.9.1 -P 2c } define service{ use generic-service hostgroup_name snmp-servers service_description Used Inodes Percentage check_command check_snmp!-C public -o 1.3.6.1.4.1.2021.9.1.10.1 -P 2c } define host{ use linux-server host_name mail.example.com alias mail.example.com address mail.example.com max_check_attempts 5 check_period 24x7 notification_interval 30 notification_period 24x7 } define host{ use linux-server host_name www.example.com alias www.example.com address www.example.com max_check_attempts 5 check_period 24x7 notification_interval 30 notification_period 24x7 }