InicioLinuxinstalando nagios core 3.2, plugins, nrpe, nscient-Ubuntu

instalando nagios core 3.2, plugins, nrpe, nscient-Ubuntu

Linux7/18/2012
Buenos días Taringa, nuevamente yo aquí compartiendo con ustedes un nuevo material sobre la herramienta Nagios, esta ves ejecutándose sobre Ubuntu, los que me siguen saben que anteriormente cree un tutorial de nagios sobre Debian Squeeze. Pero que lastimosamente no aparecio en la home pero bueno esta demás decir eso, espero disfruten y aprendan de este tutorial, si esta ves no aparece en la home ya no publico nada -.-

Esta es una pequeña guía de instalación y configuración de Nagios Core 3.2 en Ubuntu 10.4 Server, junto con los plugins del Nagios. SNMP, los addons NRPE e NSClient++, o FrontEnd Nuvola y el pnp4nagios para la gestión de gráficos.
Preparando el área de trabajo

Primero prepararemos el ambiente para recibir la instalación del Nagios, por ende es necesario que este ya con el LAMP (Linux, Apache, MySql e PHP) en pleno funcionamiento. (En otros post míos encontraras estas informaciones)

Cambiamos de usuario, para el usuario root:

$ sudo -s

Actualizamos el sistema y instalamos los siguientes paquetes (instale el SSH solamente si ira a utilizar realmente este para el acceso remoto al servidor, en caso contrario omita este paso):

# apt-get update
# apt-get upgrade
# apt-get install vim
# apt-get install ssh

Instale el compilador GCC y mas algunas librerias necesarias como el OpenSSL para la comunicación del NRPE:

# apt-get install build-essential
# apt-get install libgd2-xpm-dev libsnmp-perl libssl-dev openssl

Cree un directorio para la descarga de los archivos de Nagios (acordandonos de que estamos en el directorio de su respectivo usuario, ej: /home/usuario/):

# mkdir nagios


Realizamos la descarga del Nagios y dos plugins:

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz
# wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
# wget http://nagios.manubulon.com/nagios-snmp-plugins.1.1.1.tgz 


Instalando el Nagios
Agregamos el usuario nagios al sistema, utilizamos la contraseña que mejor nos parezca:

# adduser nagios

Descomprimimos el Nagios Core, compilamos y realizamos la instalación del mismo:

# tar xzf nagios-3.2.3.tar.gz
# cd nagios-3.2.3
# ./configure --with-command-group=nagios
# make all
# make install
# make install-config
# make install-commandmode
# make install-init
# make install-webconf

Agregamos el Nagios al inicio del sistema:

# ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios

Usuário administrador del Nagios
En este ejemplo utilizaremos el usuario "ejemplo". Por defecto, el Nagios ya posee un usuario administrador que es el "nagiosadmin", pero para mayor seguridad y adecuación de este tutorial de monitoreamiento para su red existe la recomendación de modificar este usuario

Cree el archivo de contraseñas de nagios y adicione el usuario "ejemplo" a este:

# htpasswd -c /usr/local/nagios/etc/htpasswd.users ejemplo

Modificamos las lineas del archivo cgi.cfg que contengan el usuario "nagiosadmin" para el usuario escogido como administrador del Nagios:

# vim /usr/local/nagios/etc/cgi.cfg

Obs.: Para efectuar la busqueda dentro del archivo, presione ESC y despues escriba "/nagiosadmin" que buscara en el archivo.

Agregue el usuario nagios y Apache:

# usermod –G nagios nagios
# usermod –G www-data,nagios www-data
# /etc/init.d/apache2 reload 


Instalando los plugins
Accedemos nuevamente al directorio creado por usted para guardar los archivos del Nagios:

# cd /home/usuario/nagios

Descompacte e instale los archivos del Nagios-Plugins:

# tar xzf nagios-plugins-1.4.15.tar.gz
# cd nagios-plugins-1.4.15
# ./configure
# make
# make install

Modifique el dueño de los siguientes directorios para el usuario nagios:

# chown nagios:nagios /usr/local/nagios
# chown –R nagios:nagios /usr/local/nagios/libexec


Verifique si no hay ningún error en las configuraciones del Nagios:

# /usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/nagios.cfg

Obs.: Guarde este comando, siempre les será útil.
Accedemos desde el navegador o dirección del servidor Nagios, y verificamos si todo esta ok:



Configurando el monitoreamiento

Primero configuraremos los parámetros simples para el monitoreamiento del Nagios, para posteriormente instalar los addons de checks.

Adicione las variables al resource.cfg

El archivo resource.cfg es el responsable por almacenar las configuraciones referentes a las variables que serán utilizados para verificar el Nagios, estas variables deben ser definidos para cada función especifica pues ellas seran utilizadas en el archivo commands.cfg.

# vim /usr/local/nagios/etc/resource.cfg

Para que podamos efectuar las verificaciones utilizando el SNMP, será necesario definir en este archivo la comunidad SNMP, utilizada en su red, utilizaremos aquí por defecto la comunidad "public", agregamos el siguiente contenido al final de este archivo:

$USER7$=-C public
$USER8$=public

Ahora configuraremos los archivos secundarios, donde estarán las informaciones que utilizaremos posteriormente en los archivos de monitoreamiento de hosts. Para tal accedemos al directorio dentro del directorio Nagios:

# cd /usr/local/nagios/etc/objects/

Ya dentro del directorio objects, hacemos un backup del archivo commands.cfg y creamos un nuevo archivo con el mismo nombre. El archivo commands.cfg es el responsable por almacenar las informaciones de verificación de servicios, vincula los comandos proporcionados en los archivos de comprobación de los servidores a los plugins existentes en el servidor Nagios:

# mv commands.cfg commands.cfg.bkp
# vim commands.cfg

Ejemplo de configuración del archivo commands.cfg:

###############################################################################
# Archivo commands.cfg 
#
################################################################################

#Notificación por email
define command{
   command_name   notify-host-by-email
   command_line   /usr/bin/printf "%b" "***** Nagios *****nnNotification Type: $NOTIFICATIONTYPE$nHost: $HOSTNAME$nEstado: $HOSTSTATE$nIP: $HOSTADDRESS$nInfo: $HOSTOUTPUT$nnDate/Time: $LONGDATETIME$n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
   }

define command{
   command_name   notify-service-by-email
   command_line   /usr/bin/printf "%b" "***** Nagios *****nnNotification Type: $NOTIFICATIONTYPE$nnService: $SERVICEDESC$nHost: $HOSTALIAS$nAddress: $HOSTADDRESS$nState: $SERVICESTATE$nnDate/Time: $LONGDATETIME$nnAdditional Info:nn$SERVICEOUTPUT$" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
   }

################################################################################
#
# Comprobaciones simples
#
################################################################################


# '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
        }

################################################################################
#
# Comprobando los principales servicios LOCALES
#
################################################################################

# Local HDD
define command{
        command_name    check_local_disk
        command_line    $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
        }

# LOAD
define command{
        command_name    check_local_load
        command_line    $USER1$/check_load -w $ARG1$ -c $ARG2$
        }

# PROCESS
define command{
        command_name    check_local_procs
        command_line    $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
        }

# USERS
define command{
        command_name    check_local_users
        command_line    $USER1$/check_users -w $ARG1$ -c $ARG2$
        }

# SWAP
define command{
   command_name   check_local_swap
   command_line   $USER1$/check_swap -w $ARG1$ -c $ARG2$
   }

# MRTGTRAF
define command{
   command_name   check_local_mrtgtraf
   command_line   $USER1$/check_mrtgtraf -F $ARG1$ -a $ARG2$ -w $ARG3$ -c $ARG4$ -e $ARG5$
   }

################################################################################
#
#   Comprobación de los servicos
#        
################################################################################
# FTP
define command{
        command_name    check_ftp
        command_line    $USER1$/check_ftp -H $HOSTADDRESS$ $ARG1$
        }

# HPJD
define command{
        command_name    check_hpjd
        command_line    $USER1$/check_hpjd -H $HOSTADDRESS$ $ARG1$
        }

# SNMP
define command{
        command_name    check_snmp
        command_line    $USER1$/check_snmp -H $HOSTADDRESS$ $ARG1$
        }

# HTTP
define command{
        command_name    check_http
        command_line    $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
        }

# SSH
define command{
   command_name   check_ssh
   command_line   $USER1$/check_ssh $ARG1$ $HOSTADDRESS$
   }

# DHCP
define command{
   command_name   check_dhcp
   command_line   $USER1$/check_dhcp $ARG1$
   }

# PING
define command{
   command_name    check_ping
   command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
        }

# PING GOOGLE
define command{
   command_name   check_google
   command_line   $USER1$/check_ping -H www.google.com.br -w 60,70% -c 80,90%
   }

# POP
define command{    command_name    check_pop
   command_line    $USER1$/check_pop -H $HOSTADDRESS$ $ARG1$
        }

# IMAP
define command{
   command_name    check_imap
   command_line    $USER1$/check_imap -H $HOSTADDRESS$ $ARG1$
        }

# SMTP
define command{
   command_name    check_smtp
   command_line    $USER1$/check_smtp -H $HOSTADDRESS$ $ARG1$
        }

# TCP
define command{
   command_name   check_tcp
   command_line   $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$
   }

# UDP
define command{
   command_name   check_udp
   command_line   $USER1$/check_udp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$
   }

# NT
define command{
   command_name   check_nt
   command_line   $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$
   }

################################################################################
#
# PERFORMANCE DATA COMMANDS
#
################################################################################

# PNP4NAGIOS
define command {
       command_name    process-service-perfdata
       command_line    /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl
}

define command {
       command_name    process-host-perfdata
       command_line    /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
}

################################################################################
#
# Comprobación SNMP
#
################################################################################

define command{
   command_name check_snmp_load_v1
   command_line $USER1$/check_snmp_load.pl -H $HOSTADDRESS$ $USER7$ -T $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$
   }

define command{
   command_name check_snmp_int_v1
   command_line $USER1$/check_snmp_int.pl -H $HOSTADDRESS$ $USER7$ -n $ARG1$ $ARG2$
   }

define command{
   command_name check_snmp_mem_v1
   command_line $USER1$/check_snmp_mem.pl -H $HOSTADDRESS$ $USER7$ $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$
   }

define command{
   command_name check_snmp_storage_v1
   command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ $USER7$ -m $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$
   }

define command{
   command_name check_snmp_hpux_storage_v1
   command_line $USER1$/check_snmp_hpux_storage.pl -H $HOSTADDRESS$ $USER7$ -m $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$
   }

define command{
   command_name check_snmp_hpux_mem_v1
   command_line $USER1$/check_snmp_hpux_mem.sh $USER8$ $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $ARG4$
   }

define command{
   command_name check_snmp_v1
   command_line $USER1$/check_snmp -H $HOSTADDRESS$ $USER7$ -o $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$
   }

define command{
   command_name check_snmp_process_v1
   command_line $USER1$/check_snmp_process.pl -H $HOSTADDRESS$ $USER7$ -n $ARG1$ -w $ARG2$ -c $ARG3$ $ARG4$
   }

define command{
   command_name check_win
   command_line $USER1$/check_snmp_win.pl -H $HOSTADDRESS$ $USER7$ -n $ARG1$ $ARG2$
   }

######################################## FIN SNMP ######################################

################################################################################
#
# COMANDOS ADICIONALES
#
################################################################################

# DISCO
define command{
   command_name check_disk
   command_line $USER1$/check_disk -w limit -c limit -t 5
   }
# IMPRESORA HP
define command{
   command_name check_hp_print
   command_line $USER1$/check_hp_print -H $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $ARG4$ $ARG5$ $ARG6$
   }

# TERMINAL SERVICE
define command{
   command_name check_ts
   command_line $USER$/check_ts -H $HOSTADDRESS$ -p 3389
   }

# PRINTERS
define command{
   command_name check_printer
   command_line $USER1$/check_printer $HOSTADDRESS$ $USER8$ $ARG1$ $ARG2$ $ARG3$ $ARG4$
   }

# WIRETEMP
define command{
   command_name check_1-wiretemp
       command_line $USER1$/custom/check_1-wiretemp -c $ARG1$ -w $ARG2$ -W$ARG3$ -C$ARG4$ -i $ARG5$ -o $ARG6$
    }

# NRPE
define command{
   command_name check_nrpe
   command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

# OPENVPN
define command{
   command_name check_openvpn
   command_line /usr/lib/nagios/plugins/check_openvpn -t $ARG1$ -p $ARG2$ -n $ARG3$
}

# SQUID
define command{
   command_name check_squid
   command_line $USER1$/check_squid.pl -u http://www.google.com.br -p $HOSTADDRESS$ -l 8080 -o usuario -m senha -e 200
        }

# SAMBA
define command{
   command_name check_samba
   command_line $USER1$/check_samba -L $HOSTADDRESS$
}

# WINTEMP
define command{
   command_name check_snmp_wintemp
   command_line $USER1$/check_snmp_wintemp -L $HOSTADDRESS$
}

# 3COM
define command{
   command_name check_3com
   command_line $USER1$/check_3com.pl -H $HOSTADDRESS$ -C $ARG1$ -u $ARG2$
        }

# SWITCH UPTIME
define command {
   command_name check_switch_uptime
   command_line $USER1$/check_switch_uptime.pl -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c $ARG3$
}

# MEMORIA
define command {
   command_name check_mem
   command_line $USER1$/check_mem -w $ARG1$ -c $ARG2$
}

# MRTG
define command {
   command_name check_mrtgtraf
   command_line $USER1$/check_mrtgtraf -F $ARG1$ -a $ARG2$ -w $ARG3$ -c $ARG4$ -e $ARG5$
}

# NAGIOSGRAPHER
define command{
   command_name process-service-perfdata-file
   command_line mv /usr/local/nagios/var/service-perfdata /usr/local/nagios/var/service-perfdata.$TIMET$
}


En el directorio objects, haga un backup del archivo timeperiods.cfg y cree un nuevo archivo con el mismo nombre. El archivo timeperiods.cfg es responsable por almacenar las informaciones relativas a los periodos de tiempo utilizado en la verificación, los periodos de tiempos de aquí serán utilizados en la configuración de cada servicio en los archivos de verificación de servidores:

# mv timeperiods.cfg timeperiods.cfg.bkp # vim timeperiods.cfg

Ejemplo de configuración del archivo timeperiods.cfg:

###############################################################################
#
# archivo TIMEPERIODS.cfg 
#
###############################################################################

# TIEMPO INTEGRAL 24x7
define timeperiod{
        timeperiod_name       24x7
        alias         24 Hours A Day, 7 Days A Week
        sunday               00:00-24:00
        monday             00:00-24:00
        tuesday              00:00-24:00
        wednesday        00:00-24:00
        thursday             00:00-24:00
        friday                  00:00-24:00
        saturday             00:00-24:00
        }

# HORARIO DE TRABAJO TOTAL
define timeperiod{
   timeperiod_name   workhours
   alias         Normal Work Hour
   monday      09:00-21:00
   tuesday         09:00-21:00
   wednesday      09:00-21:00
thursday      09:00-21:00
   friday         09:00-21:00
   }

# HORARIO COMERCIAL
define timeperiod{
        timeperiod_name       comercial
        alias                    Horario Comercial
        monday                08:00-17:40
        tuesday               08:00-17:40
        wednesday             08:00-17:40
        thursday              08:00-17:40
        friday                   08:00-17:40
        }

# NONE
define timeperiod{
   timeperiod_name   none
   alias         No Time Is A Good Time
   }


Hacemos un backup tambien del archivo contacts.cfg, y creamos un archivo en blanco con el mismo nombre. Este archivo es responsable por almacenar las informaciones de los grupos de contactos que reciben los e-mail de alertas del Nagios. Con esto es posible que solamente un determinado grupo de usuarios de Nagios reciba por ejemplo notificaciones de que servicios criticos o servidores salierón del area, asi dimensionamos las alertas para cada camada del respectivo departamento o sucursal:

# mv contacts.cfg contacts.cfg.bkp
# vim contacts.cfg

Ejemplo de configuración del archivo contacts.cfg:

###############################################################################
#
# Archivo contacts.cfg
#
###############################################################################

# CONTATOS define contact{         contact_name               nagios  # Nombre del usuario
        use                           generic-contact  
        alias                         Nagios Admin
        email                         [email protected]    # Email del usuario que recibira las notificaciones
}

# GRUPOS DE CONTACTOS define contactgroup{
        contactgroup_name          admins  
        alias                         Nagios Administrators
        members                       nagios
        } 



Instalando el NRPE

El NRPE (Nagios Remote Plugin Execute) será el responsable por las verificaciones de nuestro sistema Unix, para esto es necesario instalar este en el servidor de monitoreamiento y en el servidor Nagios.

Instale el Xinetd:

# apt-get install xinetd

Haga la descarga del source del NRPE:

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz


Descompacte e instale el NRPE:

# tar xzf nrpe-2.12.tar.gz
# cd xzf nrpe-2.12
# ./configure
# make all
# make install
# make install-daemon
# make install-daemon-config
# make install-xinetd

Edite el archivo de configuración del NRPE, agregando después de la dirección local del host (127.0.0.1), la dirección de ip del servidor Nagios o el rango de red donde esta el servidor Nagios:

# vim /etc/xinetd.d/nrpe

...
only_from = 127.0.0.1 192.168.1.0
...
[code]
Agregue el puerto de servicio NRPE al sistema:
[code]
# vim /etc/services

...
nrpe 5666/tcp # NRPE


Reinicie el servicio del Xinetd:

# /etc/init.d/xinetd restart

Probando el funcionamiento del NRPE:

# /usr/local/nagios/libexec/check_nrpe –H localhost

El retorno deve ser:

NRPE v2.12

Ahora, instale el plugin del NRPE tambien en el servidor Nagios:

Haga la descarga del source del NRPE:

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz

Descompacte e instale el NRPE:

# tar xzf nrpe-2.12.tar.gz
# cd xzf nrpe-2.12
# ./configure
# make all
# make install-plugin

Instale el SNMP en el servidor Nagios:

# cd..
# apt-get install snmp
# apt-get install snmpd
# wget http://sourceforge.net/projects/net-snmp/files/net-snmp/5.6/net-snmp-5.6.tar.gz/download -O net-snmp-5.6.tar.gz
# tar xzf net-snmp-5.6.tar.gz
# cd net-snmp-5.6
# ./configure
# make
# make install
# tar xzf nagios-snmp-plugins.1.1.1.tgz –C /usr/src/
#./configure
# make
# make install

Pruebe el funcionamiento del plugin en el servidor:

# /usr/local/nagios/libexec/check_nrpe –H <ip_do_servidor_Unix> NRPE v2.12


Agregando servidores Linux al Nagios
Para mejor organización, cree algunos directorios dentro del directorio /usr/local/nagios/etc, donde seran almacenados los archivos de configuraciones de servidores y activos monitoreados en este caso monitorearemos nuestros servidores, switchs y impresoras de red:

# cd /usr/local/nagios/etc/
# mkdir servidores switchs printers
[code]
Accedemos al directorio “servidores” que usted habia creado:
[code]
# cd /usr/local/nagios/etc/servidores

Ahora, creamos un archivo con el nombre del servidor a ser monitoreado, como por ejemplo utilizaremos el servidor "server-linux".:

# vim server-linux.cfg

Voy a describir algunas definiciones que pueden ser utilizadas en el archivo de monitoreamiento de un servidor Linux.

La primera configuración a ser agregada al archivo de monitoreamiento del servidor es la definición del Host:

### Definiciones del Host ###
define host{
       use             generic-host            
       host_name         srv-linux            # Nombre del servidor
       alias         Servidor Linux            # Nombree que aparecera en la interface web del Nagios
       address                       192.168.1.1      # Dirección de ip del servidor a ser monitoreado
       parents                3Com_4200,srv-proxy  # Switchs o puntos que este servidor estará ligado directamente
       check_command             check-host-alive  # Definido en el commands.cfg este prueba el ping del servidor
       max_check_attempts         2                 # Numero de verificaciones necesarias para definir el real estado del servicio
       check_interval                1                # Verificación del servicio media de 5 minutos em condiciones normales
       notification_interval      1                # Tiempo de re-notificación sobre los problemas de un servicio en minutos
       notification_period        24x7              # Variable definida en el archivo timeperiods.cfg
       notification_options       d,u,r            # d = Down, u = Unreachable e r = Recovered
       contact_groups             admins            # Grupo de contactos que recibiran notificaciones para este servidor
}

Definición de Grupo
En el archivo de configuración del servidor, debe ser informado a que grupo este pertenecerá, esta configuración es efectuada en apenas uno o dos archivos de configuración de servidores petenecientes a este grupo, siendo que esta configuración sera adicionada todos los nombres de los servidores pertenecientes a este grupo, como ejemplo a seguir:

### Grupo ###
define hostgroup{
        hostgroup_name        linux-servers    # Nombre del grupo sin espacios
        alias                    Servidores Linux    # Nombre visible del grupo que aparecera en la interface web del Nagios
        members               srv-linux,srv-linux_2    # Nombre de los servidores pertencientes a este grupo
         }

Plugins - Ping
Es recomendado efectuar una segunda verificación de pingo del servidor, la misma es realizada por check-host-alive como vemos (esta será utilizada para la generación de graficos por el pnp4nagios):

### PING ###
define service{
       host_name                          srv-linux  #  nombre del activo a ser monitoreado
       service_description                PING  # Nombre del servicio que aparecerá en la interface web del Nagios
       check_command                      check_ping!5000.0,80%!8000.0,100%  # Comando que fue configurado en el archivo commands.cfg
       max_check_attempts             2  # Numero de verificación necesaria para definir el estado del servicio
       normal_check_interval          1  # Tiempo en minutos entre las verificaciones de servicio
       retry_check_interval               1  # Tiempo de verificación de servicio, si este estuviera en WARNING o CRITICAL
       check_period                       24x7  # Este es el periodo de verificación de servicio, este periodo debe de estar definido en el archivotimeperiods.cfg como una variable
       notification_interval              30  # Este es el periodo de verificación de servicio, este período debe estar definido en el archivo timeperiods.cfg como una variable
       notification_period                24x7  # Este es el periodo de verificacion de servicio, este período debe estar definido en el archivo timeperiods.cfg como una variable
       notification_options               w,c,r    # W = Warning, C = Critical, R = Recovered e u=UNKDOWN
       contact_groups                     admins  # El grupo de contactos que recibirá las notificaciones de este servicio, este es definido en el archivo contacts.cfg
}

Procesos
Verifica la cantidad de procesos que estan ejecutandose en el servidor:

### Servicos ###
define service{
       host_name                          srv-linux
       service_description                Total de Processos
       check_command                      check_nrpe!check_total_procs
       max_check_attempts              2
       normal_check_interval            1
       retry_check_interval               10
       check_period                       24x7
       notifications_enabled   0  # Desabilita a notificação do serviço por email
}

Procesador
Verifica la cantidad de procesador utilizado por el servidor en %:

### CPU LOAD ###
define service{
       host_name                          srv-linux
       service_description                CPU Load
       check_command                      check_nrpe!check_load
       max_check_attempts               2
       normal_check_interval            1
       retry_check_interval               1
       check_period                       24x7
       notification_interval              30
       notification_period                24x7
       notification_options               w,c,r
       contact_groups                     admins
}

Espacio en DISCO (HD)
Verifica el espacio total del disco y el espacio disponible del mismo:

### HD ###
define service{
       host_name                          srv-linux
       service_description                HD
       check_command                      check_nrpe!check_hda1
       max_check_attempts               2
       normal_check_interval            1
       retry_check_interval              1
       check_period                       24x7
       notification_interval              30
       notification_period                24x7
       notification_options               w,c,r
       contact_groups                     admins
}

Memória RAM
Verifica la cantidad de memoria RAM utilizada por el sistema remoto, el também verifica el SWAP del sistema:

### Memoria ###
define service{
       host_name                          srv-linux
       service_description                Memoria
       check_command                      check_nrpe!check_mem
       max_check_attempts               2
       normal_check_interval            1
       retry_check_interval               1
       check_period                       24x7
       notification_interval              30
       notification_period                24x7
       notification_options               w,c,r
       contact_groups                     admins
}

Uptime
Verifica el tiempo que el servidor esta funcionando desde su ultimo reinicio:

### UPTime ###
define service{
       host_name                          srv-linux
       service_description                UPTime
       check_command                      check_nrpe!check_uptime
       max_check_attempts               2
       normal_check_interval            1
       retry_check_interval               1
       check_period                       24x7
       notification_interval              30
       notification_period                24x7
       notification_options               w,c,r
       contact_groups                     admins
}

SSH
Verifica el servicio de SSH que esta ejecutandose en el servidor

### SSH ###
define service{
       host_name                          srv-linux
       service_description                SSH
       check_command                      check_ssh! -t 50
       max_check_attempts               2
       normal_check_interval            1
       retry_check_interval               1
       check_period                       24x7
       notification_interval              30
       notification_period                24x7
       notification_options               w,c,r
       contact_groups                     admins
}

Apache (HTTP)
Verifica si el servicio http del Apache esta ejecutandose:

### HTTP ###
define service{
       host_name                          srv-linux
       service_description                Apache
       check_command                      check_http
       max_check_attempts               2
       normal_check_interval            1
       retry_check_interval               1
       check_period                       24x7
       notification_interval              30
       notification_period                24x7
       notification_options               w,c,r
       contact_groups                     admins
}

BIND
Verifica si el servicio de DNS Bind esta ejecutandose en el servidor:

### BIND ###
define service{
       host_name                          srv-linux
       service_description                DNS Bind
       check_command                      check_nrpe!check_bind
       max_check_attempts               2
       normal_check_interval            1
       retry_check_interval               1
       check_period                       24x7
       notification_interval              30
       notification_period                24x7
       notification_options               w,c,r
       contact_groups                     admins
}

Samba
Verifica si el servicio de Samba esta ejecutandose en el servidor:

### SAMBA ###
define service{
       host_name                          srv-linux
       service_description                Samba Service
       check_command                      check_samba
       max_check_attempts              2
       normal_check_interval            1
       retry_check_interval               1
       check_period                       24x7
       notification_interval              30
       notification_period                24x7
       notification_options               w,c,r
       contact_groups                     admins
}



Agregando servidores Windows al Nagios
Accedemos al directorio “servidores” del Nagios:

# cd /usr/local/nagios/etc/servidores/

Cree un archivo con el nombre de servidor a ser monitoreado, en este ejemplo utilizaremos el servidor “srv-ruindows”:

# vim srv-ruindows.cfg

Las informaciones de verificación son basicamente las mismas del archivo de verificación Linux, modifique solamente los plugins utilizados para hacer este no utilizar el NRPE para la verificación y si el NSCLIENT++. Un ejemplo de archivo de verificación de Windows:

### Definiciones del Host ###
define host{
       use                           generic-host            
       host_name                     srv-ruindows
       alias                        Servidor Ruindows
       address                       192.168.1.1
       parents                       3Com_4200
       check_command              check-host-alive
       max_check_attempts         2
       check_interval                1
       notification_interval      1
       notification_period        24x7
       notification_options      d,u,r
       contact_groups             admins
}

### PING ###
define service{
       host_name                          srv-ruindows
       service_description                PING
       check_command                      check_ping!5000.0,80%!8000.0,100%
       max_check_attempts             2
       normal_check_interval          1
       retry_check_interval               1
       check_period                       24x7
       notification_interval              30
       notification_period                24x7
       notification_options               w,c,r
       contact_groups                     admins
}

### Versión del NSCLIENT ###
define service{
        use                                   generic-service
        host_name                          srv-ruindows
        service_description                Version del NSClient
        check_command                     check_nt!CLIENTVERSION
        max_check_attempts              2
        normal_check_interval         1
        retry_check_interval               10
        check_period                       24x7
        notification_interval              120
        notification_period                24x7
        notification_options               w,c,r
        contact_groups                     admins
}

### UPTIME ###
define service {
        use                                   generic-service
        host_name                          srv-ruindows
        service_description                Uptime
        check_command                   check_nt!UPTIME
        max_check_attempts              2
        normal_check_interval         1
        retry_check_interval               10
        check_period                       24x7
        notification_interval              120
        notification_period                24x7
        notification_options              w,c,r
        contact_groups                     admins
}

### MEMORIA RAM ###
define service {
        use                                   generic-service
        host_name                          srv-ruindows
        service_description                Memoria RAM
        check_command                      check_nt!MEMUSE! -w 80 -c 90
        max_check_attempts              2
        normal_check_interval           1
        retry_check_interval            10
        check_period                       24x7
        notification_interval              120
        notification_period                24x7
        notification_options               w,c,r
        contact_groups                     admins
}

### DISCO C: ###
define service {
        use                                   generic-service
        host_name                          srv-ruindows
        service_description                Disco C:
        check_command                     check_nt!USEDDISKSPACE!-l c -w 80 -c 90
        max_check_attempts              2
        normal_check_interval           1  
        retry_check_interval               10
        check_period                       24x7
        notification_interval              120
        notification_period                24x7
        notification_options               w,c,r
        contact_groups                     admins
}

### DISCO D: ###
define service {
        use                                   generic-service
        host_name                          srv-ruindows
        service_description                Disco D:
        check_command                   check_nt!USEDDISKSPACE!-l d -w 80 -c 90
        max_check_attempts              2
        normal_check_interval         1
        retry_check_interval               10
        check_period                       24x7
        notification_interval              120
        notification_period                24x7
        notification_options               w,c,r
        contact_groups                     admins
}

### PROCESADOR ###
define service {
        use                                   generic-service
        host_name                          srv-ruindows
        service_description                CPU Load
        check_command                   check_nt!CPULOAD!-l 5,80,90 -w 80 -c 90
        max_check_attempts              2
        normal_check_interval           1
        retry_check_interval               10
        check_period                       24x7
        notification_interval              120
        notification_period                24x7
        notification_options               w,c,r
        contact_groups                     admins
}

### PROCESO ###
define service {
        use                                 generic-service
        host_name                           pabx
        service_description                 Explorer
        check_command                     check_nt!PROCSTATE!-l explorer.exe
        normal_check_interval          10
        retry_check_interval               10
        max_check_attempts              2
        notifications_enabled             0
}



Agregando impresoras de red al Nagios

Para el monitoreamiento de impresoras por el Nagios, utilizaremos el plugin “check_printer”, asi, haga la descarga de este archivo y de permiso de ejecución para el mismo:

# wget http://www.ciphron.de/gfx/pool/check_printer
# mv check_printer /usr/local/nagios/libexec/check_printer
# chmod +x /usr/local/nagios/libexec/check_printer

Realizado esto, hacemos los test con la impresora a ser monitoreada para saber que opciones de monitoreamiento esta posibilitará. Accedemos al directorio printers y ejecutamos.:

# ./check_printer

Este comando traerá todas las posibilidades de script posible de monitoreamiento, asi verifique cada uno de los comandos en la impresora escojida para descubrir cuales irán a funcionar en esta, la sintaxis basica del comando es:

# ./check_printer <ip_de_impresora> <comunidad_snmp> <comando> <definicion>

Para verificar por ejemplo el controlado de páginas de una impresora, ejecute:

# ./check_printer 192.168.3.100 public counter 1

Realizado las verificaciones, accedemos al directorio “printers” creado anteriormente y cree un archivo con el nombre de la impresora a ser monitoreada, en este ejemplo utilizaremos la impresora “hp_produccion”:

# cd /usr/local/nagios/etc/printers
# vim hp_produccion.cfg

Con base a verificaciones realizadas anteriormente con el plugin, agregue los monitoreamientos validos a este archivo de acuerdo con cada impresora, como en el ejemplo siguiente:

###############################################################################
#
# Archivo de monitoreamiento de IMPRESORA 
#
###############################################################################
# DEFINICION DE LA IMPRESORA
define host{
use            generic-printer
   host_name         hp_produccion
   alias            Impressora HP Producción
   address            192.168.3.100  
   parents            3Com_4200
   check_interval                     1
retry_check_interval               10
check_period                         workhours
notification_interval              120
notification_period                workhours
notification_options               d,u,r
contact_groups                     admins
   hostgroups         network-printers    
   }

# VERIFICACION DE SERVICOS
#
# PING
define service{
   use            generic-service
   host_name         hp_produccion
   service_description      PING
   check_command      check_ping!3000.0,80%!5000.0,100%
   normal_check_interval      1
   retry_check_interval      10
           max_check_attempts                 2
           notification_interval              120
           notification_options               c,r
           contact_groups                     admins
   notification_period              workhours
        }

# HOJAS IMPRESAS
define service{
           use                              generic-service
           host_name                     hp_produccion
           service_description           Hojas Impresas
           check_command                 check_printer!counter 1
           normal_check_interval      1
           retry_check_interval          10
   max_check_attempts                 2
          notifications_enabled      0
   }

# Parts Status
define service{
           use                              generic-service
           host_name                     hp_produccion
           service_description           Parts Status
           check_command                 check_printer!parts 1
           normal_check_interval      1
           retry_check_interval          10
   max_check_attempts              2
           notifications_enabled      0
           }

# Port Status
define service{
           use                              generic-service
           host_name                     hp_produccion
          service_description           Port Status
           check_command                 check_printer!parts 2
           normal_check_interval      1
           retry_check_interval          10
   max_check_attempts              2
           notifications_enabled      0
          }

# Toners Status
## Cyano
define service{
           use                              generic-service
           host_name                     hp_produccion
           service_description           Toner Cyano
           check_command                 check_printer!toner/ink 1!0.5,0.8
           normal_check_interval      1
           retry_check_interval          10
   max_check_attempts              2
           notifications_enabled      0
           }

## Magenta
define service{
use                              generic-service
           host_name                     hp_produccion
           service_description           Toner Magenta
           check_command                 check_printer!toner/ink 2!0.5,0.8
           normal_check_interval      1
           retry_check_interval          10
   max_check_attempts              2
           notifications_enabled      0
           }

## Amarillo
define service{
           use                              generic-service
           host_name                     hp_produccion
           service_description           Toner Amarillo
           check_command                 check_printer!toner/ink 3!0.5,0.8
           normal_check_interval      1
           retry_check_interval          10
   max_check_attempts              2
           notifications_enabled      0
          }

## Negro
define service{
           use                              generic-service
           host_name                     hp_produccion
           service_description           Toner Negro
           check_command                 check_printer!toner/ink 4!0.5,0.8
           normal_check_interval      1
           retry_check_interval          10
   max_check_attempts              2
           notifications_enabled      0
           }

# Reservatorio de Residuos
define service{
           use                              generic-service
           host_name                     hp_produccion
           service_description           Reservatorio de Residuos
           check_command                 check_printer!toner/ink 5!0.5,0.8
           normal_check_interval      1
           retry_check_interval          10
   max_check_attempts              2
           notifications_enabled      0
           }



Agregando activos de red al Nagios
El Nagios tambien posee decenas de plugins (no por defecto) para el monitoreamiento de activos de red, como switchs, roteadores y muchos otros. De estos podemos extraer información de puertos, procesamiento, tiempo activo, ips activos, de entre otras informaciones pero esto dependerá del gerenciamiento que cada activo posibilita.

Accedemos al directorio “switchs” creado anteriormente:

# cd /usr/local/etc/switchs/

Cree en este directorio el archivo correspondiente al activo a ser monitoreado, en el ejmplo utilizaremos la switch “3Com_4200”:

# vim 3Com_4200

Agregamos a este archivo las verificaciones necesarias, como en el ejemplo a seguir:

###############################################################################
#
# archivo de monitoreamiento de SWITCH 
#
###############################################################################

# DEFINICIONES DEL SWITCH
define host{
   use            generic-switch
   host_name         3Com_4200        
   alias            Switch 3Com 4200 50 portas  
   address            192.168.3.200      
   parents            3Com_4200
   max_check_attempts                 2
   check_interval                     10
   retry_check_interval               10
   check_period                       workhours
   notification_interval              60
   notification_period                workhours
   notification_options               d,u,r
   contact_groups                     admins
   hostgroups         switches      
   }

###############################################################################
# DEFINICIONES DE GRUPO
###############################################################################
# La definición de grupo de Switchs funciona de la siguiente forma, este grupo es agregado
# a uno de los archivos de monitoreamiento, y en los otros archivos es adicionado la linea
# hostgroups en la definición de host como esta encima, seguido del nombre de grupo definido aqui

define hostgroup{
   hostgroup_name      switches
   alias            Network Switches  
   }

# VERIFICACION DE SERVICOS
#
# PING
define service{
   use            generic-service
   host_name         3Com_4200  
   service_description      PING
   check_command      check_ping!200.0,20%!600.0,60%
   max_check_attempts                 2
   normal_check_interval              10
   retry_check_interval               10
   check_period                       workhours
   notification_interval              120
   notification_period                workhours
   notification_options               w,c,r
   contact_groups                     admins
   }

# UPTIME
define service {
           use                              generic-service
           host_name                     3Com_4200
           service_description           Uptime
           check_command                 check_switch_uptime!public!80!90
   max_check_attempts                 2
   normal_check_interval              10
   retry_check_interval               10
   check_period                       workhours
   notification_interval              120
   notification_period                workhours
   notification_options               w,c,r
   contact_groups                     admins
   }

En el ejemplo de arriba utilizamos el plugin “check_switch_uptime”, haga la descarda del script y ejecute los mismos pasos del plugin ckeck_printer, copie esta para el directorio libexec y de permiso de ejecución para el archivo plugin:



# wget https://www.monitoringexchange.org/attachment/download/Check-Plugins/Hardware/Network/Switch-%2526-Router/Uptime-of-router-or-switch/check_uptime.pl
# mv check_uptime.pl /usr/local/nagios/libexec/check_switch_uptime.pl
# chmod +x /usr/local/nagios/libexec/check_switch_uptime.pl


Activando el monitoreamiento
Después de crear los archivos de monitoreamiento del hosts, agregue este archivo al archivo nagios.cfg para que el Nagios consigua efectuar lectura de estos archivos:

# vim /usr/local/nagios/etc/nagios.cfg

Agregue las siguientes lineas a este archivo, luego de la linea “log_file”:


####################################################################
#                                   SERVIDORES                                      #
####################################################################
#
cfg_file=/usr/local/nagios/etc/servidores/srv-linux.cfg
cfg_file=/usr/local/nagios/etc/servidores/srv-ruindows.cfg #
####################################################################
#SERVIDORES                                  SWITCHS                                       #
####################################################################
#
cfg_file=/usr/local/nagios/etc/switchs/3Com_4200.cfg
#
####################################################################
#                                  IMPRESORAS                                      #
####################################################################
#
cfg_file=/usr/local/nagios/etc/printers/hp_produccion.cfg
#

Ahora, agregue los hosts monitoreados al archivo hostextinfo.cfg, este archivo sera responsable por los iconos exhibidos en la interface web del Nagios, asi como las coordenadas definidas en el Status Map y 3D Map:

# vim /usr/local/nagios/etc/hostextinfo.cfg

Agregue los hosts a este archivo:

define hostextinfo{
      host_name             srv-linux  # Nombre del host
      notes_url            http://192.168.1.1:1000  # Dirección Webmin del host
      icon_image            ubuntu.png  # Imagen utilizada en las propiedades del activo
      icon_image_alt        Ubuntu      # Texto mostrado al pasar el mouse encima del icono del activo
      vrml_image            ubuntu.png   & # Imagen utilizada en el statusmap
      statusmap_image       ubuntu.gd2   & # Imagen tambien utilizada en el statusmap, comprimida para reducir el consumo de CPU del servidor
      2d_coords             500,500    # Coordenadas geográficas para la localización de los hosts en el StatusMap
      3d_coords             300.0,50.0,75.0     & # Coordenadas 3D para a localización de los hosts en el 3D Map
      }

define hostextinfo{
      host_name             srv-ruindows
      #notes_url             http://      
# Windows não possui interface web
      icon_image            vista.png
      icon_image_alt        Windows_Server_2008
      vrml_image            vista.png
      statusmap_image       vista.gd2
      2d_coords             100,400
      3d_coords             200.0,50.0,75.0
      }

define hostextinfo{
      host_name             3Com_4200
      notes_url             http://192.168.3.200
      icon_image      r      switch.png
      icon_image_alt        3Com_4200
      vrml_image            switch.png
      statusmap_image       switch.gd2
      2d_coords             400,700
      3d_coords             200.0,50.0,75.0
      }

define hostextinfo{
      host_name             hp_produccion
      notes_url             http://192.168.3.100
      icon_image      r      printer.png
      icon_image_alt        HP_Produccion
      vrml_image            printer.png
      statusmap_image       printer.gd2
      2d_coords             300,700
      3d_coords             200.0,50.0,75.0
      }

Los iconos utilizados por el hostextinfo quedan almacenados en  /usr/local/nagios/share/images/logos/, para el ejemplo de arriba usted puede utilizar el excelente pack de icono fnagios, para tal haga la descarga del pack y extraiga estos archivos para el directorio logos:
[code]
# wget http://www.intec.***/bin/fnagios/fnagios.tar.gz
# tar xvf fnagios.tar.gz
# cd fnagios
# mv equipaments/* /usr/local/nagios/share/images/logos
# mv other/* /usr/local/nagios/share/images/logos
# mv vendors/* /usr/local/nagios/share/images/logos


Instalando el Frontend Nuvola
El Nuvola es un tema completo para interface web del Nagios, incluyendo nuevos menus, imagenes, logos, haga la descarga del archivo y copie al directorio de Nagios:

# wget http://exchange.nagios.org/components/com_mtree/attachment.php?link_id=46&cf_id=29# tar xvf nagios_skyns.tar.gz # mv /usr/local/nagios/share /usr/local/nagios/share.bkp # cp –R share /usr/local/nagios/


Asi como la interface original de Nagios, el Novula es compuesto basicamente por PHP y JavaScript, siendo asi podemos configurar su interface a nuestro gusto, una configuración simple que puede ser realizada es la modificación de su menu lateral, haciendo con que determinado conjunto de menus quede expandido o no luego de la abertura de la página de Nagios, para eso accedemos al archivo config.js, el archivo de configuración del JavaScript de Nuvola:

# vim /usr/local/nagios/share/config.js


var homeMenuTitle       = "Home";
var homeMenuOpen        = false;

var monitMenuTitle      = "Monitoring";
var monitMenuOpen       = true;

var reportMenuTitle     = "Reporting";
var reportMenuOpen      = true;

var configMenuTitle     = "Configuration";
var configMenuOpen      = false;


Instalando el PNP4Nagios
El PNP4Nagios nos auxiliará y mucho en la (e muito) na generación de grafico de diversos servicios verificados por el Nagios. Este creará gráficos diários, semanales, mensuales, en fin de acuerdo con la necesidad del administrador y posibilitando la generación de PDF de este contenido para la presentación de un relatorio por ejemplo

Habilite el modulo mod_rewrite de Apache:


# a2enmod rewrite

Haga la descarga del pnp4nagios, compile e instale este:

# wget http://downloads.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.3.tar.gz?use_mirror=ufpr
# tar xvf pnp4nagios-0.6.3.tar.gz
# cd pnp4nagios-0.6.3
# ./configure
# make all
# make fullinstall

Habilite la lectura de datos en el Nagios, accede a la siguiente linea del nagios.cfg y modifique el valor de la misma para "1":

# vim /usr/local/nagios/etc/nagios.cfg


...
process_performance_data=1


En el archivo nagios.cfg, agregue las siguientes lineas :

...
service_perfdata_command=process-service-perfdata
host_perfdata_command=process-host-perfdata



Por defecto, el pnp4nagios generará los gráficos de todos los servicios verificados (los que generan datos de performance), por si acaso necesite que un determinado servicio no genere gráfico, adicione la siguiente linear al archivo de monitoreamiento del host, en el respectivo servicio que no debe generar gráficos:

# vim /usr/local/nagios/etc/servidores/srv-linux.cfg


...
define service {
   ...
   process_perf_data 0
...
}


Ahora, agregue al command.cfg las definiciones de lectura del pnp4nagios:


define command {
       command_name    process-service-perfdata
       command_line    /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl
}

define command {
       command_name    process-host-perfdata
       command_line    /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
}


Verifique el funcionamiento del pnp4nagios accediendo a la siguiente dirección:

    http://ip_del_servidor/pnp4nagios
[code]

Para integrar el pnp4nagios al Nuvola, acceda al archivo del activo monitoreado, y agregue las siguientes lineas
[code]
# vim /usr/local/nagios/etc/servidores/srv-linux.cfg

Agregue las siguientes lineas a los servicios que tendrán graficos generados por el pnp4nagios:

define service {
   ...
   action_url    /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
   register      0
}

Ahora, reinicie el servicio del Nagios y acceda a su interface Web, observe que despues del nombre del servicio que fue agregado en la linea superior ahora posee el icono de acceso al pnp4nagios.

Notificaciones por email
Utilizaremos el aplicativo Email para el envio de notificaciones para tal cosa haga la descarga del Email e instale este:

# wget http://webftp.seduc.ce.gov.br/Nagios/email-2.5.1.tar.gz
# tar xvf email-2.5.1.tar.gz
# cd email-2.5.1
# ./configure
# make
# make install

Después de efectuar la instalación del Email, edite el archivo email.conf modificando el servidor SMTP de este archivo para el servidor de email local de su empresa:

# vim /usr/local/etc/email/email.conf


...
SMTP_SERVER = ‘192.168.2.34’
...

Reinicie el servicio de Nagios, siguiendo las definiciones que fueron atribuidas al archivo contacts.cfg, el email enviará todas las notificaciones del Nagios para el grupo o contacto definido en el contacts.cfg.

# /etc/init.d/nagios restart
Datos archivados del Taringa! original
82puntos
3,488visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
1visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

c
cagl86🇦🇷
Usuario
Puntos0
Posts54
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.