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):
Instale el compilador GCC y mas algunas librerias necesarias como el OpenSSL para la comunicación del NRPE:
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/):
Realizamos la descarga del Nagios y dos plugins:
Instalando el Nagios
Agregamos el usuario nagios al sistema, utilizamos la contraseña que mejor nos parezca:
Descomprimimos el Nagios Core, compilamos y realizamos la instalación del mismo:
Agregamos el Nagios al inicio del sistema:
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:
Modificamos las lineas del archivo cgi.cfg que contengan el usuario "nagiosadmin" para el usuario escogido como administrador del Nagios:
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:
Instalando los plugins
Accedemos nuevamente al directorio creado por usted para guardar los archivos del Nagios:
Descompacte e instale los archivos del Nagios-Plugins:
Modifique el dueño de los siguientes directorios para el usuario nagios:
Verifique si no hay ningún error en las configuraciones del Nagios:
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.
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:
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:
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:
Ejemplo de configuración del archivo commands.cfg:
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:
Ejemplo de configuración del archivo timeperiods.cfg:
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:
Ejemplo de configuración del archivo contacts.cfg:
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:
Haga la descarga del source del NRPE:
Descompacte e instale el NRPE:
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:
Reinicie el servicio del Xinetd:
Probando el funcionamiento del NRPE:
El retorno deve ser:
Ahora, instale el plugin del NRPE tambien en el servidor Nagios:
Haga la descarga del source del NRPE:
Descompacte e instale el NRPE:
Instale el SNMP en el servidor Nagios:
Pruebe el funcionamiento del plugin en el servidor:
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:
Ahora, creamos un archivo con el nombre del servidor a ser monitoreado, como por ejemplo utilizaremos el servidor "server-linux".:
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:
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:
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):
Procesos
Verifica la cantidad de procesos que estan ejecutandose en el servidor:
Procesador
Verifica la cantidad de procesador utilizado por el servidor en %:
Espacio en DISCO (HD)
Verifica el espacio total del disco y el espacio disponible del mismo:
Memória RAM
Verifica la cantidad de memoria RAM utilizada por el sistema remoto, el também verifica el SWAP del sistema:
Uptime
Verifica el tiempo que el servidor esta funcionando desde su ultimo reinicio:
SSH
Verifica el servicio de SSH que esta ejecutandose en el servidor
Apache (HTTP)
Verifica si el servicio http del Apache esta ejecutandose:
BIND
Verifica si el servicio de DNS Bind esta ejecutandose en el servidor:
Samba
Verifica si el servicio de Samba esta ejecutandose en el servidor:
Agregando servidores Windows al Nagios
Accedemos al directorio “servidores” del Nagios:
Cree un archivo con el nombre de servidor a ser monitoreado, en este ejemplo utilizaremos el servidor “srv-ruindows”:
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:
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:
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.:
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:
Para verificar por ejemplo el controlado de páginas de una impresora, ejecute:
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”:
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:
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:
Cree en este directorio el archivo correspondiente al activo a ser monitoreado, en el ejmplo utilizaremos la switch “3Com_4200”:
Agregamos a este archivo las verificaciones necesarias, como en el ejemplo a seguir:
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:
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:
Agregue las siguientes lineas a este archivo, luego de la linea “log_file”:
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:
Agregue los hosts a este archivo:
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:
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:
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:
Haga la descarga del pnp4nagios, compile e instale este:
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":
En el archivo nagios.cfg, agregue las siguientes lineas :
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:
Ahora, agregue al command.cfg las definiciones de lectura del pnp4nagios:
Verifique el funcionamiento del pnp4nagios accediendo a la siguiente dirección:
Agregue las siguientes lineas a los servicios que tendrán graficos generados por el pnp4nagios:
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:
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:
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.
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