Debian:installer nagios 4

  • Installer les pré-requis
apt-get install wget unzip zip autoconf gcc libc6 make apache2-utils libmcrypt-dev libssl-dev bc gawk dc build-essential snmp libnet-snmp-perl gettext libldap2-dev smbclient fping libmysqlclient-dev libpqxx3-dev libdbi-dev
  • Ajouter l’utilisateur nagios
useradd nagios
usermod -a -G nagios www-data
  • Installer nagios 4 avec les sources

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.4.2.tar.gz

tar xzf nagios-4.4.2.tar.gz

  • Lancer la compilation
cd nagios-4.4.2
./configure –with-httpd-conf=/etc/apache2/sites-enabled
make all
make install
make install-init
make install-commandmode
make install-config
make install-webconf
  • Modifier le mot de passe de l’utilisateur nagiosadmin
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
  • Activer le module cgi

a2enmod cgi

  • Redémarrer les services

service apache2 restart

service nagios restart

L’interface nagios est accessible à travers l’ URL http://ip_serveur/nagios

  • Installer les plugins

wget https://github.com/nagios-plugins/nagios-plugins/archive/release-2.2.1.tar.gz

tar xzf release-2.2.1.tar.gz

  • Lancer la compilation
cd nagios-plugins-release-2.2.1/
./tools/setup
./configure
make
make install
Puis redémarrer nagios:
service nagios restart
Les plugins sont disponibles sous le répertoires /usr/local/nagios/libexec/
  • Configurer les services pour le host localhost

Créer les deux fichiers  linux-services.cfg et linux-hosts.cfg  sous le répertoire /usr/local/nagios/etc/

Modifier le fichier /usr/local/nagios/etc/nagios.cfg, ajouter:

cfg_file=/usr/local/nagios/etc/linux-hosts.cfg
cfg_file=/usr/local/nagios/etc/linux-services.cfg
et supprimer la ligne:
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
Fichier linux-services.cfg:
# ‘notify-service-by-email’ command definition
define command{
        command_name    notify-service-by-email
        command_line    /usr/bin/printf “%b” “***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n” | /usr/bin/mail -s “** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **” $CONTACTEMAIL$
        }
# ‘check_ftp’ command definition
define command{
        command_name    check_ftp
        command_line    $USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$
        }
# ‘check_snmp’ command definition
define command{
        command_name    check_snmp
        command_line    $USER1$/check_snmp -H $HOSTADDRESS$ $ARG1$
        }
# ‘check_http’ command definition
define command{
        command_name    check_http
        command_line    $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
        }
# ‘check_ping’ command definition
define command{
        command_name    check_ping
        command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
        }
# ‘check_imap’ command definition
define command{
        command_name    check_imap
        command_line    $USER1$/check_imap -H $HOSTADDRESS$ $ARG1$
        }
# ‘check_smtp’ command definition
define command{
        command_name    check_smtp
        command_line    $USER1$/check_smtp -H $HOSTADDRESS$ $ARG1$
        }
# ‘check_ssh’ command definition
define command{
        command_name    check_ssh
        command_line    $USER1$/check_ssh $ARG1$ $HOSTADDRESS$
        }
# ‘check_imap’ command definition
define command{
        command_name    check_pop
        command_line    $USER1$/check_pop -H $HOSTADDRESS$ $ARG1$
        }
Fichier linux-hosts.cfg:
# ‘check-host-alive’ command definition
define command{
        command_name    check-host-alive
        command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
        }
# ‘check_local_disk’ command definition
define command{
        command_name    check_local_disk
        command_line    $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
        }
# ‘check_local_load’ command definition
define command{
        command_name    check_local_load
        command_line    $USER1$/check_load -w $ARG1$ -c $ARG2$
        }
# ‘check_local_swap’ command definition
define command{
        command_name    check_local_swap
        command_line    $USER1$/check_swap -w $ARG1$ -c $ARG2$
        }
# ‘notify-host-by-email’ command definition
define command{
        command_name    notify-host-by-email
        command_line    /usr/bin/printf “%b” “***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress:
$HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n” | /usr/bin/mail -s “** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **” $CONTACTEMAIL$
        }
# ‘check_local_procs’ command definition
define command{
        command_name    check_local_procs
        command_line    $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
        }
# ‘check_local_users’ command definition
define command{
        command_name    check_local_users
        command_line    $USER1$/check_users -w $ARG1$ -c $ARG2$
        }
Modifier  le fichier /usr/local/nagios/etc/objects/localhost.cfg
###############################################################################
# LOCALHOST.CFG – SAMPLE OBJECT CONFIG FILE FOR MONITORING THIS MACHINE
#
# Last Modified: 05-31-2007
#
# NOTE: This config file is intended to serve as an *extremely* simple
#       example of how you can create configuration entries to monitor
#       the local (Linux) machine.
#
###############################################################################
###############################################################################
###############################################################################
#
# HOST DEFINITION
#
###############################################################################
###############################################################################
# Define a host for the local machine
define host{
        use                     linux-server            ; Name of host template to use
                                                        ; This host definition will inherit all variables that are defined
                                                        ; in (or inherited by) the linux-server host template definition.
        host_name               localhost
        alias                   localhost
        address                 127.0.0.1
        }
###############################################################################
###############################################################################
#
# HOST GROUP DEFINITION
#
###############################################################################
###############################################################################
# Define an optional hostgroup for Linux machines
define hostgroup{
        hostgroup_name  linux-servers ; The name of the hostgroup
        alias           Linux Servers ; Long name of the group
        members         localhost     ; Comma separated list of hosts that belong to this group
        }
###############################################################################
###############################################################################
#
# SERVICE DEFINITIONS
#
###############################################################################
###############################################################################
# Define a service to “ping” the local machine
define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
        }
# Define a service to check the disk space of the root partition
# on the local machine.  Warning if < 20% free, critical if
# < 10% free space on partition.
define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             Root Partition
        check_command                   check_local_disk!20%!10%!/
        }
# Define a service to check the number of currently logged in
# users on the local machine.  Warning if > 20 users, critical
# if > 50 users.
define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             Current Users
        check_command                   check_local_users!20!50
        }
# Define a service to check the number of currently running procs
# on the local machine.  Warning if > 250 processes, critical if
# > 400 users.
define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             Total Processes
        check_command                   check_local_procs!250!400!RSZDT
        }
# Define a service to check the load on the local machine.
define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             Current Load
        check_command                   check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
        }
# Define a service to check the swap usage the local machine.
# Critical if less than 10% of swap is free, warning if less than 20% is free
define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             Swap Usage
        check_command                   check_local_swap!20!10
        }
# Define a service to check SSH on the local machine.
# Disable notifications for this service by default, as not all users may have SSH enabled.
define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             SSH
        check_command                   check_ssh
        }
# Define a service to check HTTP on the local machine.
# Disable notifications for this service by default, as not all users may have HTTP enabled.
define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             HTTP
        check_command                   check_http
        }
define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             IMAP
        check_command                   check_imap
        }
define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             SMTP
        check_command                   check_smtp
        }
define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             FTP
        check_command                   check_ftp
        }
define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             POP
        check_command                   check_pop
        }
Pour recevoir les mails de notification par mail:
Modifier le fichier /usr/local/nagios/etc/objects/contacts.cfg
define contact{
        contact_name                    nagiosadmin             ; Short name of user
        use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
        alias                           Nagios Admin            ; Full name of user
        email                           adresse@domaine.tld      ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
        }
  • Pour tester la configuration :

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Exemple de retour:

Nagios Core 4.4.2
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 2018-08-16
License: GPL

Website: https://www.nagios.org
Reading configuration data…
Read main config file okay…
Read object config files okay…

Running pre-flight check on configuration data…

Checking objects…
Checked 10 services.
Checked 1 hosts.
Checked 1 host groups.
Checked 0 service groups.
Checked 1 contacts.
Checked 1 contact groups.
Checked 15 commands.
Checked 5 time periods.
Checked 0 host escalations.
Checked 0 service escalations.
Checking for circular paths…
Checked 1 hosts
Checked 0 service dependencies
Checked 0 host dependencies
Checked 5 timeperiods
Checking global event handlers…
Checking obsessive compulsive processor commands…
Checking misc settings…

Total Warnings: 0
Total Errors: 0

Things look okay – No serious problems were detected during the pre-flight check

  • Relancer nagios

service nagios restart