You have a web server you want Nagios to monitor. You want to make sure that the server is alive, and that HTTP and SSH are functioning. If one of the services stops, or the server goes down, you want to receive an alert.
Create a new host definition for the server, and an HTTP service definition. Then, add the new server to the existing SSH service definition (see previous recipe). Restart Nagios, and you're done.
This is a sample host definition in hosts.cfg, using the host apache1 with an IP address of 192.168.1.26. Use your own hostname and IP address, of course:
# HTTP servers define host{ use generic-host host_name apache1 alias Apache web server address 192.168.1.26 check_command check-host-alive max_check_attempts 10 check_period 24x7 notification_interval 120 notification_period 24x7 notification_options d,r contact_groups admins }
Add your new server to an existing group, or create a new group for it, as this example shows:
define hostgroup{ hostgroup_name apache_servers alias Web Servers members apache1 }
Next, define the HTTP service in services.cfg:
# Define a service to monitor HTTP define service{ use generic-service host_name apache1 service_description HTTP is_volatile 0 check_period 24x7 max_check_attempts 4 normal_check_interval 5 retry_check_interval 1 contact_groups admins notification_options w,u,c,r notification_interval 960 notification_period 24x7 check_command check_http }
Add the new server to the SSH service definition:
# Define a service to monitor SSH define service{ use generic-service host_name server1,apache1 service_description SSH is_volatile 0 check_period 24x7 max_check_attempts 4 normal_check_interval 5 retry_check_interval 1 contact_groups admins notification_options w,u,c,r notification_interval 960 notification_period 24x7 check_command check_ssh }
Run the syntax checker, then restart Nagios:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
# /etc/init.d/nagios restart
Refresh the Nagios web interface, and you'll see the new entries listed as PENDING, as Figure 13-3 shows.
In a few minutes, Nagios will run the new service checks; then, they will no longer be PENDING, and instead display status information.
check_http
takes a number of
options. It checks normal (HTTP) and secure (HTTPS) connections, and
reports if SSL certificates are still valid. You can test it on the
command line first. This shows your command options:
root@xena:/usr/local/nagios/libexec# ./check_http -h
Use it this way to give you 30 days' notice on expiring SSL certificates:
# ./check_http www.yourdomain.com -C 30
The -p
option specifies the
port number, when you're using a nonstandard port:
# ./check_http www.yourdomain.com -p 8080
Using the -w
and -c
options lets you test response time, in
seconds:
# ./check_http -w 5 -c 10
That issues a warning if there is no response after 5 seconds, and it goes critical after 10 seconds.
Use the -ssl
option to
connect to SSL-enabled servers:
# ./check_http --ssl www.yourdomain.com
Once you get the initial Nagios framework configured, adding new servers and services is fairly simple. Just copy and paste existing entries and modify them for the new hosts and services.
Using hostgroups
is a simple
way to control groups of related servers. Use the hostgroup_name
option in
services.cfg instead of host_name
, and simply add or remove servers
from the hostgroup
.
"Using Macros In Commands" (http://localhost/nagios/docs/macros.html) in your local Nagios documentation for a list of built-in macros
For definitions of the options in object definition files, which are all the files in lan_objects/, start at "Template-Based Object Configuration": http://localhost/nagios/docs/xodtemplate.html
For nagios.cfg and resources.cfg, see "Main Configuration File Options": http://localhost/nagios/docs/configmain.html
"Flapping": http://localhost/nagios/docs/flapping.html
Nagios.org: http://www.nagios.org/