Manuales Nagios Cayu - Wiki de Sergio Cayuqueo - Libre PDF
Manuales Nagios Cayu - Wiki de Sergio Cayuqueo - Libre PDF
Manuales Nagios Cayu - Wiki de Sergio Cayuqueo - Libre PDF
Las redes de cmputo de las organizaciones, se vuelven cada vez ms complejas y la exigencia de la operacin es cada vez mas demandante. Las redes, cada
vez mas, soportan aplicaciones y servicios estratgicos de las organizaciones. Por lo cual el anlisis y monitoreo de redes se ha convertido en una labor cada vez
mas importante y de carcter pro-activo para evitar problemas. Con el termino Monitoreo nos referimos a un sistema que constantemente monitorea una red de
computadoras para detectar sistemas lentos o en mal funcionamiento y que notifica al administrador de la red en caso de falla va correo electrnico, sms u otros
medios.
Para prevenir errores en un sistema podemos utilizar una aplicacin que se ocupe de estar controlado y observando el funcionamiento de la red, esto podemos
realizarlo por medio de un software llamado Nagios. Nagios es un sistema de monitoreo de servidores, aplicaciones y redes. Comprueba clientes y servicios,
especifcados alertando en caso de problemas como cadas de servicio restauracin de los mismos.
Nagios es un sistema de monitorizacin de equipos y de servicios de red, escrito en C y publicado bajo la GNU General Public License, el lenguage con el cual esta
desarrollado nos asegura una rpida ejecucin y su licencia que lo determina como Software Libre nos asegura que siempre tendremos actualizaciones
disponibles y que hay una gran comunidad de desarrolladores soportndolo.
Creado para ayudar a los administradores a tener siempre el control de qu est pasando en la red que administran y conocer los problemas que ocurren en la
infraestructura que administran antes de que los usuarios de la misma los perciban, para as no slo poder tomar la iniciativa, sino asumir la responsabilidad de
hacer que las cosas sucedan; decidir en cada momento lo que queremos hacer y cmo lo vamos a hacer, debido a que este software nos permite obtener datos,
interpretarlos y tomar decisiones en base a ello como:
Conservar y almacene datos de la red para manejar reportes y tendencias
Ver y analizar la red, as como el trfico de la red a travs del tiempo
Monitorear el estado de la red en comparacin a los reportes de anlisis
Generar reportes sustentados para justificar las necesidades de actualizacin de la red
Para facilitar tareas de explotacin de datos, hay diferentes aditivos como un visor de reportes integrados, en el cual se puede ver el histrico de actividad y
performance de servicios, y adems un visor de diagramas de red con el estado actual de cada equipo.
El mismo, esta constituido por un Ncleo que construye la interfaz de usuario y por plugins los cuales representan los ojos y odos de Nagios y por lo cual se
encargan de recopilar informacin (bajo demanda). Los mismos pueden estar programados en diversos lenguajes como C, C++, Python, Perl, PHP, Java, Bash
etc, ya que Nagios es independiente del lenguaje en el cual que se desarrolle el plugin y solo procesa los datos recibidos de este, para la posterior elaboracin y
envo de notificaciones a los encargados de la administracin del sistema en cuestin.
Objetivos y necesidades
Conocer el estado de diferentes servicios brindados por un conjunto heterogneo de dispositivos y equipos como servidores corriendo diferentes sistemas
operativos, routers de los cuales dependen varios equipos, sistemas SCADA y sistemas de analizadores de humedad/temperatura/gases etc. Obtener informacin
de los mismos como estado en red, tiempo arriba, puertos abiertos, servicios y procesos corriendo, carga de CPU, carga de memoria fsica, carga de memoria
virtual, espacio en disco, interfaces de red activas.
Para poder tener esta informacin se debe establecer un control que asegure el mantenimiento de los dispositivos y se puedan efectuar acciones en forma
preventiva o correctiva segn corresponda en tiempo y forma ante eventuales anomalas de los servicios.
Es posible conocer los estados y datos de estos diferentes equipos para una posterior elaboracin de reportes etc, elaborando una configuracin personalizada de
Nagios para cada caso en particular, por medio de testeo de paquetes de red, o haciendo uso de diferentes funciones que provee el protocolo SNMP (Simple
Network Management Protocol) que nos permite gestionar y/o supervisar datos de diferentes elementos y componentes de la red como routers, switches,
servidores etc y al ser un protocolo standard es posible monitorizar una amplia variedad de casos en escenarios con sistemas equipos diferentes.
Con lo cual podremos concluir si el sistema :
Lleva a cabo eficazmente su finalidad
Utiliza eficientemente los recursos.
Ya que podemos :
Detectar de forma sistemtica el uso de los recursos y los flujos de informacin dentro de una organizacin.
Determinar qu informacin es crtica para el cumplimiento de su misin y objetivos, identificando necesidades, duplicidades, costos, valor y barreras, que
obstaculizan flujos de informacin eficientes.
Anlizar de eficiencia del sistema.
Verificar el cumplimiento de Normativas.
Revisin de la gestin de recursos.
Con esto podemos elaborar informes, responder ante evaluaciones externas y documentar la evaluacin para reflejar el desarrollo y los resultados de la misma.
Fortalecer bases de informacin para grupos y personas de apoyo que trabajan con los sistemas.
Puntos principales a tener en cuenta
Aplicacin estable para entornos productivos.
Licencia de cdigo abierto.
Debe monitorear equipos idenpendientemente de sistemas operativos : Windows, Linux, Unix, CISCO iOS.
Generar alertas cuando se identifican incidencias.
Los datos se deben poder exportar para su posterior anlisis.
El sistema debe poder trabajar tanto con agentes instalados en los equipos clientes como sin ellos.
Poder generar complementos (plugs in) independientemente del lenguaje de programacin o ubicacin de los mismos.
Documentacin suficiente y clara disponible del sistema de monitoreo.
El sistema debe tener una comunidad que lo respalde y preferentemente empresas.
El sistema debe ser muy conocido o utilizado. Existencia de empresas clientes o usuarios a los que se puede referenciar.
Actualizaciones regulares.
Redundancia
Escalabilidad
Eficiencia
Servicios extras con interdependencia y relacin de unos con otros :
Backup administrador por el proovedor
Servicio manos y ojos
Alertas proactivas 724
Descuentos aleatorios
Todos estos factores deben estar esclarecidos ya que no solo puede existir la necesidad de asegurarle y garantizarle efectivamente esto a los utilizadores
externos, sino tambin a los internos, ya que la Disponibilidad es el factor determinante de la contratacin del servicio. Por lo general se establecen acuerdos de
Disponibilidad de Servicio - SLA, con diferentes niveles y con un accionar y escalamiento determinado para cada caso.
Lo comentado anteriormente en la mayora de los casos y por lgica y sentido comn suele encuadrarse dentro de un marco legal por medio de un contrato y
dentro del mismo suele haber clusulas por multas monetarias debido a tiempos de indisponibilidad o mal funcionamiento del servicio. El proceso de costeo para
realizar la calificacin de incidentes y su posterior valorizacin monetaria debe estar detallado en una norma que regle dicho procedimiento definido en la
contratacin del servicio.
Por y para eso para nosotros es necesario como proovedores de servicio que somos y al estar abasteciendo a otras empresas con exigencias necesarias para el
desarrollo de su actividad, en este caso la base material para correr su infraestructura informtica :
Tengamos un registro minucioso y reportado de eventos ya que estos pueden afectarnos directamente de forma legal y monetaria en el desarrollo de nuestras
actividades sino llevamos control de los mismos.
Estrategias
Monitoreo Activo
Este tipo de monitoreo se realiza enviando paquetes desde sl sistema de monitoreo a los clientes que necesitamos monitorear. Ya sea un PING o pedidos a
determinadas aplicaciones en los mismos.
Ventajas
No hay que instalar un agente especializado en el cliente. En algunos casos solo SNMP. Es una opcin para casos en los que no es posible instalar
aplicaciones en los clientes
Desventajas
Tiene mtricas menos especificas por consiguiente se pueden realizar anlisis menos detallados. Pueden ser afectadas por hechos que sucedan en la red..
Monitoreo Pasivo
Esta estrategia se basa en la obtencin de datos a partir desde los clientes a monitorear hacia el sistema de monitoreo. Este enfoque bien planificado puede ser
mas perfomante a lo que trafico de red se refiere comparndolo con la tcnica de Monitoreo Pasivo.
Ventajas
Informacin ms especfica y ms detallada. Mayor flexibilidad para realizar monitoreos personalizable. Posibilidad de crear soluciones de monitoreo que
controlen estados de servicios o mtricas no estndares sobre aplicaciones o hardware. El control de las aplicaciones y servicios se realiza directamente en
el nodo monitoreado. Mayor seguridad en la red ya que se manejan protocolos encriptacin. Menor riesgo de deteccin de inactividades.
Desventajas
Puede provocar mayor carga de actividad en el cliente. Se debe instalar el agente en todos los equipos que se van a monitorear.
Capas
Aspectos generales
Monitoreo de objetos o cajas negras con agentes o sin agentes
Reportes estadsticos
Infraestructura / Funcionalidad de Hardware
Uptime
Respuesta
Infraestructura / Sistema Operativo
Recursos
Procesos
Ncleo
Servicios y aplicaciones
Procesos
Tiempos de respuesta
Usuarios
Notificaciones y alertas en caso de incidente
organizacin de las actividades que se recomiendan en las mejores prcticas y se recomiendan posibles mejoras para acercarse.
Nagios cubre estas reas de ITIL :
Service Desk
Incident Management
Service Level Management
Capacity Management
IT Service Continuity Management
Availability Management
ICT infrastructure Management
Gestin de la disponibilidad
La disponibilidad Availability Management es un proceso del Service Delivery, definido en las especificaciones de ITIL.
Su meta es asegurar que el nivel de disponibilidad requerido est proporcionado.
La supervisin y anlisis de informes de la disponibilidad es una actividad clave para asegurar que los niveles del servicio se estn cumpliendo.
En la base de la gestin se debe supervisar contnuamente la disponibilidad de la Infraestructura, servicios y alertar a los administradores para iniciar los
procedimientos oportunos.
Administracion de la capacidad
Objetivos
Nuestras necesidades
Estan en orden de prioridad, pero todas van atadas de la mano una con otra
Solucin de Monitoreo Integral
Registro y Correlacin de Eventos, tanto en equipos de red como en servidores
Documentacin Rpida, Participativa,Colaborativa
Debe ser va Web, con edicin individual de secciones y versionado
Descripcin
Que se puede hacer con Nagios
Monitorizacin de servicios de red (SMTP, POP3, HTTP, NTTP, ICMP, SNMP).
Monitorizacin de los recursos de un host (carga del procesador, uso de los discos, logs del sistema) en varios sistemas operativos, incluso Microsoft Windows
con el plugin NRPE_NT o tambin por medio del protocolo SNMP.
Monitorizacin remoto, a travs de tneles SSL cifrados o SSH.
Diseo simple de plugins, que permiten a los usuarios desarrollar sus propios chequeos de servicios dependiendo de sus necesidades, usando sus
herramientas preferidas (Bash, C++, Perl, Ruby, Python, PHP, C#, Java, etc.).
Chequeo de servicios paralizados.
Posibilidad de definir la jerarqua de la red, permitiendo distinguir entre host cados y host inaccesibles.
Notificaciones a los contactos cuando ocurren problemas en servicios o hosts, as como cuando son resueltos ( Va email, pager, Jabber, SMS o cualquier
mtodo definido por el usuario junto con su correspondiente complemento).
Posibilidad de definir manejadores de eventos que ejecuten al ocurrir un evento de un servicio o host para resoluciones de problemas proactivas.
Rotacin automtica del archivo de registro.
Soporte para implementar hosts de monitores redundantes.
Interfaz web opcional, para observar el estado de la red actual, notificaciones, historial de problemas, archivos de registros, etc.
Reportes y estadsticas del estado cronolgico de disponibilidad de servicios y hosts.
Que se va a monitorear
Hay que definir o acotar que niveles y aspectos se van a monitorear
Sistema Operativo
Utilizacin de red
Trafico
Servicios (SAP, Web, Bases de datos, DHCP)
Como impacta
Mejora de productividad
Antelacion de problemas
Reporte y aviso de incidentes
Agilidad en su tratamiento
Mejor y mayor relacion e integracion de sectores adjuntos
Requerimientos Operativos
Plan de accin bien diagramado
Personal con conocimiento medio/avanzado en redes
impacto_urgencia.dia.gz
Recursos tecnolgicos
Hardware acorde a la inversion y criticidad de los datos
Si se van a monitorear >= 600 host y >= 2000 servicios hay que plantear bien esto, no sobrevaluar pero tampoco escatimar
Ejemplo un vez tuve que monitorear una red con 700 hosts y 2000 servicios que a su vez guardaba estadisticas completas en un MySQL dentro del mismo equipo
para luego generar informes SLA y mostrar datos en pantalla en una interfaz personalizada y disponia de un Intel Quad Core 2.8 GHz a 32 bits con un disco SATA
de 320 GB y se quedo algo corto el hardware para los requerimientos
Tareas
Dependencias
Para una correcta instalacin de Nagios, con todas sus caractersticas es necesario tener instalados ciertos paquetes de software en el sistema, la instalacin
puede variar segn la distribucin de Linux que elijamos, si los tenemos empaquetados, o si los tenemos que compilar en instalar manualmente.
Paquete
Descripcin
Perl
Sitio web
http://www.perl.org [http://www.perl.org]
Net::SNMP
http://search.cpan.org/dist/Net-SNMP [http://search.cpan.org/dist/Net-SNMP]
Crypt::DES
Digest::HMAC
Digest::SHA1
http://search.cpan.org/dist/Digest-SHA1/ [http://search.cpan.org/dist/Digest-SHA1/]
RRDTool
http://oss.oetiker.ch/rrdtool [http://oss.oetiker.ch/rrdtool]
Zlib
http://search.cpan.org/dist/Digest-HMAC/ [http://search.cpan.org/dist/Digest-HMAC/]
LibJPEG
http://www.ijg.org/ [http://www.ijg.org/]
LibPNG
http://www.libpng.org/pub/png/ [http://www.libpng.org/pub/png/]
Freetype2
http://www.freetype.org/ [http://www.freetype.org/]
Graphviz
http://www.graphviz.org/ [http://www.graphviz.org/]
XFree86-libs
http://koala.ilog.fr/lehors/xpm.html [http://koala.ilog.fr/lehors/xpm.html]
Apache 2
Servidor Web
http://httpd.apache.org/ [http://httpd.apache.org/]
PHP
http://www.php.net [http://www.php.net]
MySQL
http://www.mysql.com [http://www.mysql.com]
Postfix
http://www.postfix.org/ [http://www.postfix.org/]
GD
http://www.libgd.org/ [http://www.libgd.org/]
Nagvis
http://www.nagvis.org/ [http://www.nagvis.org/]
PNP4Nagios
NDO
http://www.nagios.org [http://www.nagios.org]
Plugins
http://www.nagios.org [http://www.nagios.org]
SNMP Plugins
Nagios
http://www.nagios.org [http://www.nagios.org]
NagiosQL
http://www.nagiosql.org/ [http://www.nagiosql.org/]
Dokuwiki
http://www.dokuwiki.org/ [http://www.dokuwiki.org/]
Syslog-Ng
http://www.balabit.com/network-security/syslog-ng/ [http://www.balabit.com/network-security/syslog-ng/]
SNARE
http://www.intersectalliance.com/projects/index.html [http://www.intersectalliance.com/projects/index.html]
MK Livestatus
http://mathias-kettner.de/checkmk_livestatus.html [http://mathias-kettner.de/checkmk_livestatus.html]
Gnokii
http://gnokii.org [http://gnokii.org]
Thruk
Interfacetable_v3t
Check TSM
Check Iostat
Cliente Oracle
Basic
SQL*Plus
Eventdb
https://www.netways.org/projects/eventdb [https://www.netways.org/projects/eventdb]
http://sourceforge.net/projects/highchartfornag/ [http://sourceforge.net/projects/highchartfornag/]
Highchart
Nagios
for
https://github.com/osklil/nagios-misc [https://github.com/osklil/nagios-misc]
http://sysengineers.wordpress.com/2010/05/27/check_iostat-pl-version-0-9-7/
[http://sysengineers.wordpress.com/2010/05/27/check_iostat-pl-version-0-9-7/]
http://www.oracle.com/technetwork/database/features/instant-client/
[http://www.oracle.com/technetwork/database/features/instant-client/]
Nota:
Hay algunos plugins que no estan mas disponibles en su sitio, aca los incluyo
nagios_lotus-blackberry.tgz
Descarga y compilacin
En este apartado nos concentraremos en la descarga y compilacin de los diferentes paquetes bajados en formato de codigo fuente.
Nagios
Para empezar deberemos descargar el cdigo fuente del software Nagios desde su sitio web, en formato tar.gz, a la fecha la ltima versin es la 3.0.
Para ello descomprimiremos el paquete descargado y luego procederemos a compilarlo.
root@localhost # tar xvfzp nagios- .0. .tar.gz
root@localhost nagios- .0. # ./configure
*** Configuration summary for nagios
.0.
-0 - 00
***:
General Options:
------------------------Nagios executable:
Nagios user/group:
Command user/group:
Embedded Perl:
Event Broker:
Install ${prefix}:
Lock file:
Check result directory:
Init directory:
Apache conf.d directory:
Mail program:
Host OS:
nagios
nagios,nagios
nagios,nagios
no
yes
/usr/local/nagios
${prefix}/var/nagios.lock
${prefix}/var/spool/checkresults
/etc/rc.d/init.d
/etc/httpd/conf.d
/bin/mail
linux-gnu
http://localhost/nagios/
http://localhost/nagios/cgi-bin/
/bin/traceroute
# make all
# make fullinstall
# make install-config
Para correr el daemon del servicio nagios y realizar tareas de administracin y configuracin sobre el, se debi crear el usuario nagios y el grupo nagios con
privilegios de usuario normal del sistema, con su home ubicado en el directorio de instalacin de nagios /usr/local/nagios, luego se le atribuyeron permisos de
acceso y escritura para dicho usuario.
root@localhost # groupadd nagios
root@localhost # useradd nagios -d /usr/local/nagios -G nagios
root@localhost # chown nagios:nagios -R /usr/local/nagios
PNP4Nagios
PNP4Nagios es un addon para Nagios que bsicamente, nos genera grficas con los resultados de los anlisis de Nagios, para poder llevar un control ms general
de la monitorizacin de un determinado servidor o servicio en las ltimas horas, das, semanas, meses o incluso aos.
Una vez que tenemos instalado y configurado Nagios procederemos a descargar y descomprimir el paquete pnp4nagios,
root@localhost # tar xvfzp pnp-0. . .tar.gz
root@localhost pnp-0. .
# ./configure
*** Configuration summary for pnp 0. .
General Options:
------------------------Nagios user/group:
Install directory:
HTML Dir:
Config Dir:
Path to rrdtool:
RRDs Perl Modules:
RRD Files stored in:
process_perfdata.pl Logfile:
Perfdata files NPCD stored in:
0-
***
------------------nagios nagios
/usr/local/nagios
/usr/local/nagios/share/pnp
/usr/local/nagios/etc/pnp
/usr/bin/rrdtool Version . .
FOUND Version . 0
/usr/local/nagios/share/perfdata
/usr/local/nagios/var/perfdata.log
/usr/local/nagios/var/spool/perfdata/
- 00
# make all
# make fullinstall
NDOUtils
El generador de graficas Nagvis necesita acceder a los datos que Nagios genera, una de las formas de acceder a los mismos es que Nagios almacene sus datos
dentro de una base de datos MySQL ya que por defecto lo hace en archivos de texto, para que Nagios pueda hacer eso, deberemos instalar el modulo NDO que
viene dentro del paquete NDOUtils descargable via el sitio web de Nagios. Este mdulo es el que se encarga de generar las consultas en formato MySQL, que
son cargadas sobre un socket El proceso NDO2DB corriendo como daemon lee de ese socket y carga los datos en una base de datos MySQL.
root@localhost # tar xvfzp ndoutils- . b .tar.gz
root@localhost ndoutils- . b # ./configure
*** Configuration summary for ndoutils
. b
0-
- 00
***:
General Options:
------------------------NDO DB user:
nagios
NDO DB group:
nagios
Review the options above for accuracy. If they look okay,
type 'make' to compile the NDO utilities.
MK Livestatus
La forma clsica de acceder a la informacion actual de sus hosts y servicios es mediante la lectura y anlisis del archivo status.dat, que es creado por Nagios en
una base regular. El intervalo de actualizacin se configura a travs status_update_interval en nagios.cfg. Un valor tpico es de 10 segundos. Si la instalacin es
cada vez ms grande, usted podra tener que aumentar este valor con el fin de reducir al mnimo el uso de CPU y de E / S de disco. La interfaz web de Nagios
utiliza status.dat para mostrar sus datos.
Analizar status.dat no es muy popular entre los desarrolladores de addons. As que muchos utilizan otro enfoque: NDO. Este es un mdulo de ORC que se carga
directamente en el proceso de Nagios y enva todas las actualizaciones de estado a travs de un socket UNIX a un proceso de ayuda. Eso crea sentencias SQL y
actualizaciones de varias tablas en una base de datos MySQL o PostgreSQL. Este enfoque tiene varias ventajas sobre status.dat:
Los datos se actualizan de inmediato, no slo cada 10 o 20 segundos.
Las solicitudes tienen acceso fcil a los datos a travs de SQL. N analizador para status.dat es necesario.
En las grandes instalaciones el acceso de los addons a los datos es ms rpida que la lectura status.dat.
Despues tenemos que especificar que Nagios cargue el archivo objeto compilado livestatus.o, para eso debemos agregar a nagios.cfg:
broker_module=/usr/local/lib/mk-livestatus/livestatus.o /var/lib/nagios/rw/live
event_broker_options=-
live
[
] livestatus: Opened UNIX socket /var/lib/nagios/rw/live
[
] livestatus: successfully finished initialization
[
] Event broker module '/usr/local/lib/mk-livestatus/livestatus.o' initializ
ed successfully.
[
] Finished daemonizing... New PID=
[
] livestatus: Starting 0 client threads
[
] livestatus: Entering main loop, listening on UNIX socket
Valor por
Que significa
default
debug
Set this to 1 in order to make Livestatus log each query it executes in nagios.log
max_cached_messages 500000
Livestatus' access to Nagios logfiles caches messages in-memory. Here you can set the maximum number of cached messages. Each message takes about 250
bytes (in the current implementation)
max_response_size
104857600
Livestatus constructs each response in-memory before sending it to the clients. In order to avoid a crash in case of extensive queries, the maximum response size
is limited. The default limit is 100 MB
num_client_threads
10
Livestatus needs one thread for each concurrent client connection. A fixed number of threads is created when Nagios starts
thread_stack_size
65536
This parameter sets the size of the stack of each client thread. In versions before 1.1.4, the stack size was set to 8 MB (pthread default). The new default value is
64 KB. A small stack reduces virtual memory usage and also save CPU ressources. A too small value will probably crash your Nagios process, though. You have
been warned
query_timeout
10000
This value is in ms. In order to avoid being hung by broken clients, Livestatus imposes a limit on the time for reading the query from the client. A value of 0
disables the timeout
idle_timeout
300000
This value is in ms. Livestatus is waiting at most that much time for the next query. A value of 0 disables the timeout
Ejemplo de como dejar MK Livestatus escuchando en un socket tcp para consultarlo por red, por ejemplo por un sistema de reportes al estilo Jasper Reports o
alguna interfaz alternativa como Thruk.
service livestatus
{
type
= UNLISTED
port
=
socket_type
= stream
protocol
= tcp
wait
= no
# limit to 00 connections per second. Disable
secs if above.
cps
= 00
# set the number of maximum allowed parallel instances of unixcat.
# Please make sure that this values is at least as high as
# the number of threads defined with num_client_threads in
# etc/mk-livestatus/nagios.cfg
instances
= 00
# limit the maximum number of simultaneous connections from
# one source IP address
per_source
=
0
# Disable TCP delay, makes connection more responsive
flags
= NODELAY
user
= nagios
server
= /usr/local/nagios/bin/unixcat
server_args
= /usr/local/nagios/var/rw/live
# configure the IP address es of your Nagios server here:
#
only_from
=
.0.0.
0.0. 0.
0.0. 0.
disable
= no
}
Nagvis
Nagvis es un addon para Nagios, con el cual podemos tener grficos a modo de diagrama estructural de red, dinmicos, con lo cual podemos conocer el estado
actual de la red mirando un grfico amigable al usuario final para que pueda tomar acciones y/o informar sobre el estado de los mismos a personal responsable.
Se pueden utilizar imgenes propias de fondo (denominadas mapas) y luego integrarle iconos representativos de las mquinas y servicios de la red que muestren
el estado actual de los mismos.
Deberemos bajar el paquete Nagvis desde su sitio web, y descomprimirlo y copiarlo a un directorio visible desde la interfaz web de Nagios.
root@localhost # tar xvzf nagvis- . .x.tar.gz
root@localhost # mv nagvis /usr/local/nagios/share
Para instalar la configuracin por defecto deberemos dentro de /usr/local/nagios/share/nagvis renombrar o mover el archivo etc/nagvis.ini.php-sample a
etc/nagvis.ini.php.
Para su correcto funcionamiento necesitaremos establecer una serie particular de permisos
root@localhost
root@localhost
root@localhost
root@localhost
root@localhost
root@localhost
root@localhost
#
#
#
#
#
#
#
chmod
chmod
chmod
chmod
chmod
chmod
chmod
/usr/local/nagios/share/nagvis/etc/nagvis.ini.php
/usr/local/nagios/share/nagvis/nagvis/images/maps
/usr/local/nagios/share/nagvis/nagvis/images/maps/*
/usr/local/nagios/share/nagvis/etc/maps
/usr/local/nagios/share/nagvis/etc/maps/*
/usr/local/nagios/share/nagvis/var
/usr/local/nagios/share/nagvis/var/*
<tr><td class="label"><label>[lang_service_description]</label></td><td>[service_description]</td></tr>
<!-- END service -->
<tr><td class="label"><label>[lang_alias]</label></td><td>[obj_alias]</td></tr>
<!-- BEGIN host -->
<tr><td colspan=" " style="text-align:center;"><img src="/nagios/pnp/index.php?host=[obj_name]&srv=_HOST_&source= &view=0&display=image" with=" 00px" height=" px"></td></tr>
<tr><td class="spacer" colspan=" "></td></tr>
<tr><td class="label[obj_state]"><label>[lang_state] [lang_state_type] </label></td><td class="state[obj_state]">[obj_state] [obj_state_type] [obj_in_downtime][obj_acknowledged]
<tr><td class="label"><label>[lang_output]</label></td><td>[obj_output]</td></tr>
<tr><td class="label"><label>[lang_perfdata]</label></td><td>[obj_perfdata]</td></tr>
<tr><td class="label"><label>[lang_current_attempt]</label></td><td>[obj_current_check_attempt]/[obj_max_check_attempts]</td></tr>
<tr><td class="label"><label>[lang_last_check]</label></td><td>[obj_last_check]</td></tr>
<tr><td class="label"><label>[lang_next_check]</label></td><td>[obj_next_check]</td></tr>
<tr><td class="label"><label>[lang_last_state_change]</label></td><td>[obj_last_state_change]</td></tr>
<!-- END host -->
<tr><td class="spacer" colspan=" "></td></tr>
<tr><td class="label[obj_summary_state]"><label>[lang_summary_state]</label></td><td class="state[obj_summary_state]">[obj_summary_state] [obj_summary_in_downtime][obj_summary_acknowledged]
<tr><td class="label"><label>[lang_summary_output]</label></td><td>[obj_summary_output]</td></tr>
<!-- BEGIN service -->
<tr><td colspan=" " style="text-align:center;"><img src="/nagios/pnp/index.php?host=[obj_name]&srv=[service_description]&source= &view=0&display=image" with=" 00px" height=" px"><
<tr><td class="label"><label>[lang_perfdata]</label></td><td>[obj_perfdata]</td></tr>
<tr><td class="label"><label>[lang_current_attempt]</label></td><td>[obj_current_check_attempt]/[obj_max_check_attempts]</td></tr>
<tr><td class="label"><label>[lang_state_type]</label></td><td>[obj_state_type]</td></tr>
<tr><td class="label"><label>[lang_last_check]</label></td><td>[obj_last_check]</td></tr>
<tr><td class="label"><label>[lang_next_check]</label></td><td>[obj_next_check]</td></tr>
<tr><td class="label"><label>[lang_last_state_change]</label></td><td>[obj_last_state_change]</td></tr>
<!-- END service -->
<!-- BEGIN childs -->
<tr><td class="spacer" colspan=" "></td></tr>
<tr><td colspan=" ">
<table width=" 00%">
<tr>
<!-- BEGIN servicegroup --><td class="label"><label>[lang_child_name ]</label></td><!-- END servicegroup --><td class="label"><label>[lang_child_name]</label></td><
</tr>
<!-- BEGIN loop_child -->
<tr><!-- BEGIN servicegroup_child --><td>[obj_name ]</td><!-- END servicegroup_child --><td>[obj_name]</td><td class="state[obj_summary_state]">[obj_summary_state][obj_summa
<!-- END loop_child -->
</table>
</td></tr>
<!-- END childs -->
</table>
MySQL
MySQL es uno de los Sistemas Gestores de Bases de Datos Relacional multihilo y multiusuario, ms populares,
Compilacion
Debemos descargar el paquete de su web oficial y proceder a compilarlo.
root@localhost
root@localhost
root@localhost
root@localhost
root@localhost
root@localhost
root@localhost
root@localhost
root@localhost
root@localhost
root@localhost
root@localhost
root@localhost
root@localhost
#
#
#
#
#
#
#
#
#
#
#
#
#
#
groupadd mysql
useradd -g mysql mysql
gunzip < mysql-VERSION.tar.gz | tar -xvf cd mysql-VERSION
./configure --prefix=/usr/local/mysql
make
make install
cp support-files/my-medium.cnf /etc/my.cnf
cd /usr/local/mysql
bin/mysql_install_db --user=mysql
chown -R root .
chown -R mysql var
chgrp -R mysql .
bin/mysqld_safe --user=mysql &
0.0
0.00 sec
sec
Ahora deberemos crear un usuario con privilegios de SELECT, INSERT, UPDATE, DELETE
CREATE USER nagios IDENTIFIED BY 'nagios
';
Apache y PHP
Nagios muestra los estados de todos los servicios configurados a travs de pginas web, esto implica que debe instalarse un servidor web con la informacin
correspondiente para hacerlo.
En esta etapa se hace dicha instalacin siguiendo las mejores prcticas de instalacin de Apache poniendo nfasis en su seguridad.
Apache es un software libre servidor HTTP de cdigo abierto para plataformas Unix (BSD, GNU/Linux, etc.), Windows, Macintosh y otras, es el mas usado en
internet.
PHP es un lenguaje de programacin interpretado, diseado originalmente para la creacin de pginas web dinmicas, en nuestro caso nos servira realizar una
interpretacin extra de los datos de Nagios via web.
CentOS
Para instalar los paquetes desde CentOS ejecutaremos :
yum install httpd php php-common
Para dejar el servicio corriendo :
/etc/init.d/httpd start
Debian
Para instalar los paquetes de Debian, deberemos ejecutar :
apt-get install apache2 php5
Para dejar el servicio corriendo :
/etc/init.d/apache2 start
Configuracin
Ahora nos referiremos a la configuracin de los elementos instalados para su posterior articulacin y funcionamiento en conjunto.
Implementacin
Para el correcto funcionamiento de Nagios, y asegurar escalabilidad con orden, se debe seguir una estructura de configuracin y tener previamente planteados
temas como:
Definicin una estructura de archivos y directorios acorde a la situacin, hacindolo a su vez mas entendible para su posterior administracin
Configurar Apache para su permitir su acceso via web por HTTP o HTTPS
En la mayora de los equipos a monitorear mientras fuera posible instalar y dejar corriendo los servicios de SNMP
Configurar servicio de envo de emails
Definir grupos de contactos a los cuales se les enviaran los avisos de notificaciones, dependiendo de que hosts o servicio se trate.
Definir grupos de hosts y servicios, al tenerlos agrupados y verlos mas facilmente
A continuacin se detalla como llevar a cabo dichos pasos necesarios para su implementacin.
En el servidor
Configuraciones necesarias en el servidor de monitoreo.
Nagios
Algunos puntos basicos previos a la instalacion :
PATH Esta es la ruta de instalacin. Por defecto es /usr/local/nagios
Usuario Usuario que va a usar nagios par ejecutarse. Debe crearse con adduser especificarle el PATH de Nagios como su directorio home de inicio,
usualmente deberemos llamarlo nagios y debe estar dentro del grupo nagios
Grupo Grupo de usuario que va a usar Nagios. Este grupo tendr permisos sobre todos los ficheros y directorios de Nagios. Por defecto es nagios. Puede
crearse con groupadd.
URL Nagios utiliza una interfaz web para ejecutarse. Esta URL determina cual va a ser el directorio virtual que debe usar para instalarse. Por defecto /nagios,
es decir, las peticiones irn dirigidas a http://host/nagios [http://host/nagios]
Estructura de archivos
Una vez que compilamos e instalamos el paquete Nagios nos termina quedando una nomenclatura de directorios como la siguiente :
bin
Aqui se almacenan los binarios ejecutables
etc
Guarda la configuracion de Nagios
libexec
Se almacenan los plugins que efectuaran los chequeos a monitorear
sbin
Dentro de este directorio se mantienen los ejecutables CGI de la interfaz web
share
Organiza el contenido web a mostrar, iconos, html, php etc
var
Guarda los datos de ejecucion del monitoreo, estado de servicios, hosts, y logs
bin
Dentro de este directorio encontramos los ejecutable principales, como el binario nagios que es el que se ejecuta como proceso en segundo plano, el objeto
ndomod.o que es el modulo que se encarga de traducir las estadisticas de nagios en formato de consultas MySQL, y ndo2db que el proceso en segundo plano
que se encarga conectarse con la base de datos para posteriormente ejecutar esas consultas.
etc
Este directorio guarda la configuracin de Nagios, sus componentes, hosts/servicios a chequear, comandos de ejecucion, contactos de notificacin, intervalos de
chequeos. Dentro de el hay diferentes subdirectorios y archivos.
libexec
Alli se contienen lo ejecutables de los plugins que efectuan los chequeos, SNMP, SAP, Oracle, SSH, que pueden ser binarios, scripts en Perl, PHP, Shell, Java, etc.
sbin
Aqui se almacenan los ejecutables cgi que se ejecutaran para la visualizacion por web de la consola Nagios.
share
Aqui encontramos el contenido web, imagenes, logos, los aditivos como PNP, Nagvis y los datos que necesitan para funcionar estos.
var
Aqui se guardan los datos internos de Nagios, estadisticas de los chequeos, informacion de ejecucion actual, archivos de sockets, registros de logs, colas de
ejecucin de chequeos.
objects/timeperiods.cfg
Plantilla inicial para definir periodos de chequeos, aqu se definen los rangos de tiempo donde son vlidos el envo de alertas y las verificaciones de los
servicios que estn funcionando
objects/windows.cfg
Plantilla de ejemplo de chequeo de equipos Windows
services/
Aqui vamos a definir los servicios que usaremos en los chequeos. Se define la mtrica o el servicio a monitorizar y el host/grupo de hosts sobre el que se
ejecuta
var/rw/
Alli se encuentra un archivo special de socket que realiza la comunicacion de los comando y ordenes de la interfaz web hacia nagios, como cambiar horarios de
chequeo, deshabilitar notificaciones etc.
El archivo que alli se encuentra nagios.cmd debe tener permisos de escritura y lectura por el propietario y el grupo de pertenencia nagios:nagcmd (660),
nagcmd es un grupo especial en el cual vamos a incluir al usuario que ejecuta el servidor web (ej. en apache sobre Debian www-data), y asi poder enviar
ordenes desde la interfaz web CGI. Esta es una caracterstica avanzada de Nagios es que permite va web la ejecucin de ciertas tareas ms all del propio
conjunto de CGIs que vienen de serie, como por ejemplo la
cada o el reinicio del propio Nagios, etctera. Para poder ejecutar este tipo de comandos es necesario tambin configurar el sistema de una forma un tanto
especial. No hay que olvidar que al configurar Nagios de este modo se est permitiendo desde la web activar o desactivar opciones que en principio slo estaban
disponibles desde la consola del sistema. Para configurar Nagios de esta forma, hay que editar el fichero principal nagios.cfg y aadir (o modificar si ya existen)
las siguientes lneas:
check_external_commands=
command_check_interval=command_file=/usr/local/nagios/var/rw/nagios.cmd
Lo que har que Nagios active el chequeo para buscar comandos externos, con tanta frecuencia como sea posible por el sistema y buscar los comandos en el
archivo nagios.cmd.
En el siguiente grfico detalla la organizacin recomendada de la configuracin de Nagios.
diagrama_nagios.dia.gz
Si por ejemplo tenemos estos dos casos :
Nagios un pas multiples provincias o localidades
Buenos Aires
Lans
Florencio Varela
CABA
Olavarria
Bahia Blanca
Santa Fe
Rosario
Neuqun
Zapala
San Martin
En este caso, simplemente deberemos tener templates para hosts y servicios, que se dividan por tipo. Si es un servidor, equipo de red, scada etc.
Nagios mltiples pases y multiples provincias o localidades
Argentina
Buenos Aires
Neuquen
Tucuman
Brasil
Rio
Cajati
Paraguay
Ciudad del este
Villa hayes
Portugal
Lisboa
En este caso algo mas complejo, deberemos tener templates para hosts divididos para cada pas, templates para servicios divididos para cada pas, templates
para contactos divididos para cada pas.
Siempre debemos utilizar templates para todo, porque cuando debemos hacer un cambio en masa es mucho mas simple y con menos posibilidad a errores.
SNMP Traps
Una trap es generado por el agente snmp en el dispositivo a monitorear para reportar ciertas condiciones y cambios de estado en un procesp
Se cae un servicio
Hay un problema de memoria o de hardware
La carga de procesos excede un lmite
Se llena una particin de disco
En debian para instalar el manejador de traps SNMP deberemos ejecutar los siguiente :
apt-get install snmptt
/etc/snmp/snmptt.ini
mode = daemon
log_system_enable =
unknown_trap_log_enable =
mysql_dbi_enable =
mysql_dbi_host = localhost
mysql_dbi_port =
0
mysql_dbi_database = snmptt
mysql_dbi_table = snmptt
mysql_dbi_table_unknown = snmptt_unknown
mysql_dbi_table_statistics = snmptt_statistics
mysql_dbi_username = snmptt
mysql_dbi_password = mytrap
/etc/snmp/snmptt.conf
EVENT linkDown . . . . . . . . . .
/etc/snmp/snmptrapd.conf
disableAuthorization yes
traphandle default /usr/sbin/snmptthandler
Configuracin de permisos :
usermod -a -G nagios snmptt
/etc/default/snmpd
TRAPDRUN=yes
Schema MySQL
CREATE DATABASE snmptt;
USE snmptt;
DROP TABLE snmptt;
CREATE TABLE snmptt
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
eventname VARCHAR 0 ,
eventid VARCHAR 0 ,
trapoid VARCHAR 00 ,
enterprise VARCHAR 00 ,
community VARCHAR 0 ,
hostname VARCHAR 00 ,
agentip VARCHAR
,
category VARCHAR 0 ,
severity VARCHAR 0 ,
uptime VARCHAR 0 ,
traptime VARCHAR 0 ,
formatline VARCHAR
USE snmptt;
DROP TABLE snmptt_unknown;
CREATE TABLE snmptt_unknown
trapoid VARCHAR 00 ,
enterprise VARCHAR 00 ,
community VARCHAR 0 ,
hostname VARCHAR 00 ,
agentip VARCHAR
,
uptime VARCHAR 0 ,
traptime VARCHAR 0 ,
formatline VARCHAR
;
USE snmptt;
DROP TABLE snmptt_statistics;
CREATE TABLE snmptt_statistics
stat_time VARCHAR 0 ,
total_received BIGINT,
total_translated BIGINT,
total_ignored BIGINT,
total_unknown BIGINT ;
Ref.:
http://exchange.nagios.org/directory/Addons/SNMP/Nagios-SNMP-Trap-Interface-%28NSTI%29/details
[http://exchange.nagios.org/directory/Addons/SNMP/Nagios-SNMP-Trap-Interface-%28NSTI%29/details]
Apache
Para permitir y tener una correcta visualizacion de la consola web de Nagios, procederemos a realizar una configuracin personalizada dentro del servidor web
Apache.
Deberemos crear un archivo de configuracion preferentemente con el nombre nagios.conf para tenerlo de una manera mejor organizada, y deber ir dentro del
directorio de donde el Apache obtiene su configuracin, el mismo depender del mtodo de instalacin elegido o con que distribucin de Linux estemos
trabajando.
CentOS /etc/httpd/conf.d
Debian /etc/apache2/site-available y luego crear un link simbolico a ese archivo dentro de /etc/apache2/site-enabled
SuSE /etc/apache2/vhosts.d
Archivo de configuracin por defecto de Nagios
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
# SSLRequireSSL
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
# Order deny,allow
# Deny from all
# Allow from
.0.0.
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
</Directory>
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
# SSLRequireSSL
Options None
AllowOverride None
Order allow,deny
Configuracin SSL
La configuracin HTTPS con SSL se realiza por defecto en la instalacin del paquete Debian y CentOS, no asi en SuSE para ellos deberemos realizar
configuraciones extra.
Primero procederemos a crear las claves SSL
localhost:~
localhost:~
localhost:~
localhost:~
localhost:~
localhost:~
localhost:~
#
#
#
#
#
#
#
Dentro del archivo /etc/sysconfig/apache2 deberemos agregarle el siguiente FLAG de arranque para especificar la utilizacin del protocolo SSL dentro del
servidor web Apache.
APACHE_SERVER_FLAGS="-D SSL"
A continuacin mostramos un archivo de configuracin de Apache mas elaborado con autenticacin por ActiveDirectory
<VirtualHost *:
>
SSLEngine on
SSLCertificateFile /etc/apache /ssl.crt/server.crt
SSLCertificateKeyFile /etc/apache /ssl.key/server.key
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
AuthType Basic
AuthName "Nagios Access"
AuthLDAPEnabled On
AuthLDAPURL ldap://
.
. . :
/OU=Usuarios,DC=test,DC=com,DC=ar?SamAccountName?sub? & objectClass=user
AuthLDAPBindDN [email protected]
AuthLDAPBindPassword *****
Options All
Order allow,deny
Allow from all
SSLRequireSSL
AllowOverride None
Require valid-user
</Directory>
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
AuthType Basic
AuthName "Nagios Access"
AuthLDAPEnabled On
AuthLDAPURL ldap://
.
. . :
/OU=Usuarios,DC=test,DC=com,DC=ar?SamAccountName?sub? & objectClass=user
AuthLDAPBindDN [email protected]
AuthLDAPBindPassword *****
Options All
Order allow,deny
Allow from all
SSLRequireSSL
AllowOverride None
Require valid-user
</Directory>
memberOf=CN=Monitoreo,OU=Tech,OU=Grupos,DC=test,DC=com,DC=ar
memberOf=CN=Monitoreo,OU=Tech,OU=Grupos,DC=test,DC=com,DC=ar
El usuario Bind debe ser un usuario solo con privilegios necesarios para saber que usuarios existen (ver documentacin LDAP), y su contrasea debe estar
almacenada en texto plano en la configuracin, y el archivo de configuracin debe tener los debidos permisos para que no sean ledos por otros usuarios.
En la directiva AuthLDAPURL, especificamos
IP del servidor de autenticacion
DN donde buscar
OU=Usuarios,DC=test,DC=com,DC=ar
Que buscar, en este caso usuarios
objectClass=user
Que sean miembros del grupo Monitoreo a su vez dentro del grupo Tech
memberOf=CN=Monitoreo,OU=Tech,OU=Grupos,DC=test,DC=com,DC=ar
En caso de tener requerimientos mas exhaustivos con respecto a la autenticacin, como restringir el acceso por ip se puede agregar a cada campo <Directory>
los siguientes parmetros.
Order deny,allow
Deny from all
Allow from
.0.0.
.deb'.
Con eso tenemos el paquete libapache2-mod-auth-cas listo para funcionar, para instalarlo deberemos ejecutar el comando dpkg -i libapache2-mod-authcas_1.0.8-3_i386.deb, luego ejecutar el comando a2enmod auth_cas, con lo cual habilitamos ese modulo en la ejecucion del servicio Apache.
En el archivo de configuracin del site de Nagios, deberemos incluir las siguientes lineas.
CASAllowWildcardCert On
#CASCookiePath /tmp/mod_auth_cas/
CASDebug On
CASValidateServer Off
CASValidateDepth
CASLoginURL https://servidorcas/cas/login
CASValidateURL https://servidorcas/cas/proxyValidate
CASTimeout
00
CASIdleTimeout
00
En la directiva CASCookiePath, especificamos un directorio temporal donde alojar las cookies, por default en debian es /var/cache/apache2/mod_auth_cas
Luego en cada entrada Directory eliminamos todas las entradas de autenticacion y las cambiamos a solo esta AuthType CAS.
Deberemos reiniciar el servicio Apache para que los cambios tengan efecto.
Configuracin de Email
Para el envo de notificaciones por parte de Nagios es necesario configurar un MTA (Agente de Transporte de Correos), por lo general suele estar previamente
configurado el Sendmail en el caso de que nos basemos en un CentOS, o un Postifx tratndose de un SuSE o Debian.
En caso de que utilizemos el paquete de Postfix disponible en la distribucin, y debamos utilizar otro servidor saliente SMTP dentro de la red, deberemos
configurar el relayhost apuntando al servidor SMTP de la red local ej 192.168.1.110, quedando el archivo /etc/postfix/main.cf con las siguientes entradas de
configuracin.
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
myhostname = nagios
mydomain = midominio.net
inet_interfaces = $myhostname
unknown_local_recipient_reject_code =
0
debug_peer_level =
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X R /bin
xxgdb $daemon_directory/$process_name $process_id & sleep
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = maildrop
html_directory = /usr/share/doc/packages/postfix/html
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/packages/postfix/samples
readme_directory = /usr/share/doc/packages/postfix/README_FILES
mail_spool_directory = /var/mail
canonical_maps = hash:/etc/postfix/canonical
virtual_maps = hash:/etc/postfix/virtual
relocated_maps = hash:/etc/postfix/relocated
transport_maps = hash:/etc/postfix/transport
sender_canonical_maps = hash:/etc/postfix/sender_canonical
masquerade_exceptions = root
masquerade_classes = envelope_sender, header_sender, header_recipient
program_directory = /usr/lib/postfix
inet_interfaces =
.
. .
masquerade_domains =
mydestination = $myhostname, localhost.$mydomain
defer_transports =
disable_dns_lookups = no
relayhost =
.
. . 0
content_filter =
mailbox_command =
mailbox_transport =
smtpd_sender_restrictions = hash:/etc/postfix/access
smtpd_client_restrictions =
smtpd_helo_required = no
smtpd_helo_restrictions =
strict_rfc
_envelopes = no
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination
smtp_sasl_auth_enable = no
smtpd_sasl_auth_enable = no
smtpd_use_tls = no
smtp_use_tls = no
alias_maps = hash:/etc/aliases
mailbox_size_limit = 0
message_size_limit = 0 0000
Siendo los parmetros : inet_interfaces la ip propia por cual salir, si tenemos una sola placa de red, pondremos esa ip, relayhost es el host que nos realizar
el envo SMTP.
PNP4Nagios
Para la ejecucin de almacenamiento de grficas deberemos configurar ciertos comandos que obtengan los resultados de la ejecucin de comandos y servicios,
para ellos deberemos agregar y/o modificar en la configuracin de Nagios ciertos parmetros :
Modo Sncrono
El modo sncrono es la forma ms fcil de integrar en nagios el recolector de datos process_perfdata.pl. Cada evento dispara la ejecucin de process-serviceperfdata.
enable_environment_macros=
service_perfdata_command=process-service-perfdata
host_perfdata_command=process-host-perfdata
define command {
command_name
command_line
}
process-service-perfdata
/usr/bin/perl /usr/local/nagios/pnp nagios/libexec/process_perfdata.pl
define command {
command_name
command_line
}
process-host-perfdata
/usr/bin/perl /usr/local/nagios/pnp nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
Modo Masivo
En el modo masivo, Nagios escribe los datos a un fichero temporal en un formato predefinido. Este fichero se procesa mediante process_perfdata.pl a intervalos
regulares. Nagios controla el arranque y ejecucin peridica del recolector de datos. .
commands.cfg
define command{
command_name
command_line
}
process-service-perfdata-file
/usr/local/nagios/pnp nagios/libexec/process_perfdata.pl --bulk=/usr/local/nagios/pnp nagios/var/service-perfdata
define command{
command_name
command_line
}
process-host-perfdata-file
/usr/local/nagios/pnp nagios/libexec/process_perfdata.pl --bulk=/usr/local/nagios/pnp nagios/var/host-perfdata
process_performance_data=
#
# service performance data
#
service_perfdata_file=/usr/local/nagios/var/service-perfdata
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOM
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=
service_perfdata_file_processing_command=process-service-perfdata-file
#
# host performance data starting with Nagios .0
#
host_perfdata_file=/usr/local/nagios/var/host-perfdata
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::
host_perfdata_file_mode=a
host_perfdata_file_processing_interval=
host_perfdata_file_processing_command=process-host-perfdata-file
commands.cfg
define command{
command_name
command_line
}
process-service-perfdata-file
/bin/mv /usr/local/nagios/var/service-perfdata /usr/local/nagios/var/spool/perfdata/service-perfdata.$TIMET$
define command{
command_name
command_line
}
process-host-perfdata-file
/bin/mv /usr/local/nagios/var/host-perfdata /usr/local/nagios/var/spool/perfdata/host-perfdata.$TIMET$
Y luego ejecutar :
/etc/init.d/npcd start
Datos de configuracin
service_perfdata_file
Ruta al archivo temporal que debe contener los datos de rendimiento.
service_perfdata_file_template
Formato del archivo temporal. Los datos se definen utilizando Nagios macros.
service_perfdata_file_mode
Opcin a especifica que los datos se insertan como anexo.
service_perfdata_file_processing_interval
El intervalo de procesamiento es de 15 segundos
service_perfdata_file_processing_command
El comando que habr de ejecutarse durante dicho intervalo.
Luego se deja ejecutando en segundo plano el demonio npcd para procesar la cola de mensajes.
En modo masivo con NPCD se puede deshabilitar la opcion enable_environment_macros para ahorrar carga de CPU, ya que en este modo esta ya no es
requerida.
Si en algn momento se llega a colgar el demonio NPCD o si por algo falla el procesamiento de los archivos de perfdata, reiniciamos NPCD y va a reprocesar los
archivos en el spool de perfdata para volver a incluir la informacin faltante en RRD.
Interfaz web
Luego en el template que vayamos a utilizar deberemos agregar estas directivas :
Para los hosts
action_url /pnp nagios/index.php/graph?host=$HOSTNAME$
En los clientes
Podemos elegir monitorear los clientes por medio del protocolo ICMP, SNMP o de mecanismos como ver si tenemos x puerto abierto, o ciertos mensajes de
respuesta, aqui se comentan los protocolos mas comunes para monitorear estados de equipos (ICMP/SNMP) o servicios (SNMP).
ICMP
El protocolo ICMP (Internet Control Message Protocol) puede ser considerado como parte de la capa IP. La especificacin completa de este protocolo se encuentra
en RFC 792 [http://www.ietf.org/rfc/rfc792.txt]. Aunque sus mensajes son encapsulados en datagramas IP como cualquier otro protocolo de capa superior, su uso
corresponde a mensajes especiales de la propia capa de red, aunque tambin pueden acceder a l las propias aplicaciones (por ejemplo el programa ping).
Algunos ejemplos de uso de ICMP son: obtencin de mscaras de red (solicitud y respuesta), obtencin de marcas de tiempo (solicitud y respuesta), condiciones
de error del tipo port unreachable o se necesita fragmentar el datagrama habindose solicitado la no-fragmentacin, peticin y respuesta de eco para
comprobar la actividad de otro host, informacin sobre el estado de las comunicaciones en una red, etc.
Algunas consultas ICMP
Los mensajes de query incluyen tras la cabecera 2 bytes de identificacin, para que el cliente distinga las respuestas dirigidas a l de las dirigidas a otros
procesos, y 2 btes de nmero de secuencia, para que el cliente pueda identificar 'requests' con 'replays'. La generacin de replys suele correr a cargo del kernel
(no es un proceso de usuario). Los mensajes ICMP de 'query' ms importantes son:
Peticin/respuesta de mscara: Aunque normalmente se usa DHCP, tambin es posible para el host hacer una peticin durante el proceso de arranque
para obtener la mscara y una peticin RARP para obtener su IP. La peticin de mscara suele enviarse en difusin. Un servidor de mscaras se encarga de
contestar.
Peticin/respuesta de marca de tiempo: Se utiliza para conocer el tiempo que un host tarda en procesar un mensaje y contestarlo o para sincronizar
relojes entre hosts. Los tiempos se ponen en milisegundos desde las 0h UTC (Tiempo Coordinado Universal). Se proveen tres campos, a parte de los
anteriormente citados para este tipo de mensajes. 'Marca de tiempo de generacin', a rellenar por el emisor, y 'Marca de tiempo de recepcin', y 'Marca de
tiempo de transmisin', a rellenar por el receptor. Los significados de los campos resultan evidentes.
Solicitud/anuncio de router: Se trata de una forma de inicializar la tabla de enrutamiento. Tras el arranque, un host enva en broadcast o multicast un
mensaje de solicitud de router. Uno o ms routers respondern con mensajes de anuncio de router. Esto lo podrn hacer peridicamente permitiendo a los
hosts actualizar sus tablas de enrutamiento.
Peticin/respuesta de eco: Se utiliza para conocer si un host est en red. El mensaje ICMP contiene unos datos OPCIONALES cuyo contenido es irrelevante.
Muchos SO implementan este mensaje mediante el programa ping. En las implementaciones UNIX de ping el campo identificador suele asociarse con el ID del
proceso que enva el request. Esto permite identificar las respuestas si hubiera varias instancias de ping corriendo en el mismo host. En el campo de
secuencia, se suele llevar un contador que permite ver si se han perdido, duplicado o desordenado paquetes, cosa tpica en la capa IP sobre la que se
encapsulan los mensajes ICMP.
Veamos un ejemplo de la salida del programa ping.
[deivid@localhost ~]$ ping www.virtuamanager.com
PING virtuamanager.com
.
.
.
bytes of data.
bytes from virtuamanager.com
.
.
.
: icmp_seq= ttl=
bytes from virtuamanager.com
.
.
.
: icmp_seq= ttl=
bytes from virtuamanager.com
.
.
.
: icmp_seq= ttl=
bytes from virtuamanager.com
.
.
.
: icmp_seq= ttl=
bytes from virtuamanager.com
.
.
.
: icmp_seq= ttl=
bytes from virtuamanager.com
.
.
.
: icmp_seq= ttl=
bytes from virtuamanager.com
.
.
.
: icmp_seq= ttl=
--- virtuamanager.com ping statistics --packets transmitted,
received, 0% packet loss, time
rtt min/avg/max/mdev =
.
/ .0 / . 0/ .
ms
time=
time=
time=
time=
time=
time=
time=
.
.
.
.
.
.
.
ms
ms
ms
ms
ms
ms
ms
00 ms
. .
bytes of
Destination Host
Destination Host
Destination Host
Destination Host
Destination Host
Destination Host
--.
. . ping statistics --packets transmitted, 0 received, +
, pipe
errors,
data.
Unreachable
Unreachable
Unreachable
Unreachable
Unreachable
Unreachable
00% packet loss, time
00 ms
Se han producido mensajes ICMP de error en respuesta a mensajes ICMP de query, lo cual SI est permitido, como ya se ha dicho.
Source quench: Este tipo de mensaje es generado por un router con problemas de congestin para avisar al host fuente de que reduzca el flujo de
transmisin. Es muy poco usado, normalmente los routers se limitan a tirar paquetes y a intentar solucionar la congestin mediante algoritmos de
enrutamiento.
Parameter problem: Si un router intermedio o el host destino encuentran un problema en la cabecera IP que le obliga a desecharlo, puede enviar un
mensaje ICMP de este tipo al host fuente. Si el cdigo es cero, un puntero marca el lugar de la cabecera en el que se produjo el error.
Redireccin: Son enviados por un router al remitente de un datagrama IP cuando ste debera haber sido enviado a travs de otro router.
Time Exceeded: Son enviados al remitente de un datagrama IP cuando se cumple el tiempo de vida mximo del paquete. Esto puede ocurrir porque el
campo TTL del datagrama se haya puesto a 0 en un router, o bien el tiempo de reensamblado de fragmentos se haya cumplido en el destino. Basndose en
este mensaje, y variando el campo TTL de un mensaje de peticin de eco es posible obtener la ruta a un destino. Si el TTL es insuficiente, se recibir un
mensaje de tiempo excedido por cada router donde al recalcular el TTL valga 0, y un mensaje de respuesta de eco cuando el TTL sea suficiente para llegar al
destino. El comando
dispositivos de red. Es parte de la familia de protocolos TCP/IP. SNMP permite a los administradores supervisar el desempeo de la red, buscar y resolver sus
problemas, y planear su crecimiento. Podemos conocer datos internos de dispositivos a monitorear, ej uso de CPU, Memoria, Disco, Uptime etc.
Se basa entre gestor y agentes.
Los agentes se centran en recopilar cierta informacin y mantenerla organizada para que el gestor pueda acceder a ella cuando lo necesite. El agente tambin
puede mandar notificaciones al gestor sobre problemas o informacin relevante sin que el gestor se lo solicite.
El gestor controla y acta sobre los elementos de la red, controlando la informacin que recopilan los agentes se pueden tomar decisiones y actuar sobre la red
para mejorar los aspectos que se necesiten. Para ello se basa en tres elementos:
SNMP: Es el protocolo entre el gestor y el elemento de red, se suele utilizar UDP
SMI: (Structure of Management Information): conjunto de estructuras y esquemas de identificacin para definir las MIBs
MIB: (Management Information Base): especifica qu variables mantienen los elementos de la red (agentes)
SMI (Structure of Management Information)
SMI es el conjunto de estructuras y esquemas para definir elementos de las MIB. Dichas estructuras estn formateadas en ASN.1 (Abstract Synstax Notation
One), indicando cmo debe ser el nombre, la sintaxis y el mtodo de codificacin de los datos para su transmisin por la red.
Un objeto en SMI consta de los siguientes campos:
Objeto: Literal (Object descriptor) con la etiqueta que identifica el objeto
Sintaxis: Puede ser alguno de los siguientes tipos ASN.1:
SimpleSyntax (INTEGER, OCTET STRING, OBJECT IDENTIFIER, NULL)
ApplicationSyntax (NetworkAddress (direcciones ip de 32 bits), Counter (enteros no negativos de tamao 32bits), Gauge (contadores que mantienen el
maximo valor alcanzado, pueden decrementarse en algun momento), TimeTicks (centsimas de segundo desde el evento deseado), Opaque (informacin
arbitraria))
Otros tipos (RFC 1155).
Acceso: Puede ser: read-only, read-write, write-only, not-acessible. SMIv2 incluye adems read-create, y deja de usar write-only
Status: Puede ser: mandatory (en SMIv2 se indica como current), que tienen que ser implementadas por cualquier versin de la MIB que incluya ese modulo,
optional, que pueden faltar sin que eso cause ningn problema ( en vez de optional, SMIv2 incluye deprecated, para objetos que ya no se usan, y que por
tanto, no tienen por qu estar implementados), u obsolete, que han dejado de mantenerse y revisarse.
Descripcin: Definicin textual de la semntica del tipo de objeto. No es codificable mediante una computadora, es una descripcin para programadores y
administradores que pueden leerla para entender el funcionamiento de la MIB.
La definicin termina indicando bajo qu nodo del rbol de OIDs (ver la siguiente seccin) debe situarse y con qu nmero a efectos de identificacin
MIB: (Management Information Base)
La informacin requerida de un sistema se almacena en las MIBs usando una estructura jerrquica que contiene los identificadores de objeto descritos mediante
ASN.1.
Esta jerarqua de rbol contiene los elementos que pueden ser de tipo escalar o tablas de datos. Estos objetos cuelgan en el rbol de la MIB de la rama
correspondiente a la organizacin que mantiene dicha estructura. Se nombra a los ejemplares de la MIB mediante su identificador de objeto que es una cadena
de enteros que representa como cuelga el objeto del nodo raz. Por ejemplo IP es el (1.3.6.1.2.1.4.)
Esta es la estructura de la MIB-II (RFC 1213) y sus diferentes subgrupos. Estas son algunas de las variables que se mantienen en cada grupo:
Grupo system: Descripcin de la entidad, identificador, tiempo desde arranque, nombre del administrador, localizacin fsica, servicios ofrecidos
Grupo interfaces: Nmero de interfaces del sistema
Grupo at: Nmero de interfaz, Direccin fsica, Direccin IP
Grupo ip: Si el sistema hace forward, valor del TTL, nmero de datagramas recibidos y enviados, errores, datagramas con protocolo no vlido, etc.
Grupo icmp: cuatro contadores generales: nmero total de mensajes ICMP de entrada y salida con o sin errores y 22 contadores para los diferentes mensajes
ICMP
Grupo tcp: Algoritmo de retransmisin, timeout en milisegundos, nmero de conexiones TCP, nmero de transiciones entre los diferentes estados de TCP,
nmero de segmentos recibidos y enviados, nmero de segmentos retransmitidos, con error y con el flag RST activado.
Grupo udp: Nmero de datagramas enviados y recibidos, datagramas sin proceso receptor
Grupo egp: Nmero de mensajes de encaminamiento recibidos con y sin error, nmero de mensajes generados en el sistema, estado del sistema.
Funcionamiento del protocolo
Como sigue el paradigma gestor-agente la los comandos son para solicitar, modificar o devolver informacin de la MIB, as como envar notificaciones (traps).
Las operaciones disponibles en SNMPv1 son:
Get-request : Solicitar el valor de una o varias variables
Get-next-request : Solicitar el valor de la siguiente variable o grupo de variables. Se utiliza para recorrer tablas, celda a celda.
Set-request : Dar valor a una variable
Get-response : Devolver el valor de una o varias variables
Trap : El agente notifica al gestor de alguna situacin especial sucede en el elemento de red. Reinicializacin, fallo y recuperacin en un enlace
Posteriormente, a partir de la versin 2 se introdujo la operacin de get-bulk-request, que permite realizar varios get-next seguidos sin tener que hacer varias
peticiones. Tambin se introdujo la operacin de inform, para que distintos gestores puedan intercambiarse notificaciones.
SNMPv1
Ejemplo de configuracin SNMPv3 para un sistema tpico Linux/UNIX/AIX/Solaris etc
rocommunity public
.
. .
syscontact Sysadmin root@localhost
syslocation Server Room
view all included .
access notConfigGroup "" any noauth exact systemview none none
access notConfigGroup "" any noauth exact all none none
Donde rocommunity es una comunidad de solo lectura, de nombre public y que solo se le permita el acceso desde la ip 192.168.1.4, el nombre de la comunidad
define la dificultad de adivinar su acceso, por eso es recomendable que tenga un nombre similar a una contrasea.
SNMPv3
Configuramos un usuario que se llama nagios con autenticacion, en la siguiente linea lo creamos con una clave almacenada en texto plano en este archivo y
luego encriptada en MD5 y DES
Ejemplo de configuracin SNMPv3 para un sistema tpico Linux/UNIX/AIX/Solaris etc
rouser nagios auth
createUser nagios MD
Debemos reiniciar el servicio SNMP y luego podemos hacer algo como esto
snmpget -v 3 -u nagios -l authNoPriv -a MD5 -A ClaV3RfsTtD2 127.0.0.1 sysUpTime.0
TIPS
NOTA: En Debian deberemos editar el archivo /etc/default/snmpd, modificando la siguiente linea
De:
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid
.0.0. '
A:
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid'
/bin/sh /usr/local/bin/var.sh
.
.
.
.
.
.
.
.
. =
. =
. =
00.
0 .
0 .
0 .
0 .
INTEGER:
STRING: "/bin/sh"
STRING: "/tmp/bar.sh"
= INTEGER: 0
= STRING: "hola"
= STRING: "chau"
= INTEGER: 0
= ""
SNMPv1 en Windows
En los equipos Windows se configurara una community RO (read only) denominada public, acceso para la ip que corresponda al servidor que tiene acceso al
SNMP, en este caso nuestro nagios.
Para ello nos situamos en el panel de control dentro de agregar programas en la seccin de componentes.
Una vez dentro nos situamos dentro de Herramientas de administracin y supervisin o Management and Monitoring tools
Luego en la Administracin de Servicios, nos dirigiremos a las propiedades del servicio SNMP
Luego de realizados los cambios de configuracin procederemos a reiniciar el servicio para que estos surtan efecto.
A veces en Windows es necesario configurar el servicio de Firewall para permitir las consultas por medio SNMP.
Ref.: http://support.microsoft.com/kb/324263/es [http://support.microsoft.com/kb/324263/es]
NRPE
NSClient++
nsclient.ini
[/settings/external scripts/scripts]
check_pagefile="C:\Program Files\Nagios Plugin Collection\check_pagefile.exe"
En el Monitoreo
Creando directivas
Debemos crear algunas entradas de configuracin para especificar donde encontramos los servicios, grupos, contactos etc, las mismas debemos incluirlas en
nuestro archivo de configuracin nagios.cfg
# Directorio con la configuracin de grupos de Hosts de los Servidores
cfg_dir=/usr/local/nagios/etc/hostgroups
# Directorio con la configuracin de grupos de servicios de los Servidores
cfg_dir=/usr/local/nagios/etc/servicegroup
# Directorio con la configuracin de contactos
cfg_dir=/usr/local/nagios/etc/contacts
# Directorio con la configuracin de grupos de contacto
cfg_dir=/usr/local/nagios/etc/contactgroups
# Directorio con la configuracin de servicios
cfg_dir=/usr/local/nagios/etc/services
# Directorio con la configuracin de los comandos
cfg_dir=/usr/local/nagios/etc/commands
# Directorio con la configuracin de los equipos a monitorear
cfg_dir=/usr/local/nagios/etc/servers
Con la directiva cfg_dir el indicamos Nagios que tome como configuracin los archivos con extencion cfg encontrados en tal directorio.
Configuracin de alertas
Agregando Grupos de contacto
Para que el Nagios enve notificaciones sobre el estado de los servicios es necesario definir grupos a los cuales envirselas, y dentro de ellos estarn los
miembros a cuales enviarlos
A continuacin podemos ver una configuracin tpica de un grupo de contactos
define contactgroup{
contactgroup_name
alias
members
}
admin
Administrators
admin-sap,admin-windows
define contactgroup{
contactgroup_name
alias
members
}
contactgroup_name
Nombre que se le asignara al grupo de contacto
alias
Descripcin corta para identificar al grupo
members
Miembros del grupo separados por comas
Se deber crear el archivo {nagios-dir}/etc/contactgroups/{nombregrupodecontacto.cfg} con las entradas correspondientes anteriormente explicadas.
Agregando Contactos
Para recibir las notificaciones de Nagios es necesario generar contactos que estn incluidos en diferentes grupos de contactos, una configuracin simple para un
contacto se ve como la siguiente entrada
define contact{
contact_name
alias
contactgroups
service_notification_period
host_notification_period
service_notification_options
host_notification_options
service_notification_commands
host_notification_commands
email
}
admin
Administrador Nagios
admin
x
x
w,u,c,r
d,u,r
notify-by-email
host-notify-by-email
root@localhost
define contact{
contact_name
alias
contactgroups
service_notification_period
host_notification_period
service_notification_options
host_notification_options
service_notification_commands
host_notification_commands
email
}
contact_name
Nombre literal a asignarle al contacto
alias
Alias descriptivo del contacto, ej Administrador de Routers
contactgroups
Grupos de contactos a los cuales pertenece
service_notification_period
Periodo de tiempo en el cual recibir notificaciones sobre el estado de los servicios
host_notification_period
Periodo de tiempo en el cual recibir notificaciones sobre el estado de los hosts
service_notification_options
Opciones de cuando realizar una notificacin sobre el estado de un servicio
host_notification_options
Opciones de cuando realizar una notificacin sobre el estado de un host
service_notification_commands
Comando para realizar la notificacin del estado del servicio, podemos definir mltiples comandos
host_notification_commands
Comando para realizar la notificacion del estado del host, podemos definir mltiples comandos
email
Email perteneciente al contacto en el cual recibira las notificaciones por email. Para que esto funcione se debe tener correctamente configurado el mail delivery
local.
Se deber crear el archivo {nagios-dir}/etc/contacts/{nombredecontacto.cfg} con las entradas correspondientes anteriormente explicadas.
nagios_send_host_mail.pl.gz
nagios_send_service_mail.pl.gz
Modo de uso :
echo Hola mundo | sudo gnokii sendsms 1155667798
Definicin como comando de notificacin, (podemos agregarlo como comando extra al contacto, para que ademas del comando comn de notificacin por email
tambien se ejecute este para el envo de la alerta por sms).
Notemos que lo ejecutamos por ssh, es para una situacin hipottica de que el modem USB 3G de nuestro proovedor de telefona celular este enchufado en otra
maquina de nuestra red.
define command {
command_name
host-notify-by-sms
command_line
ssh nagios@ 0. . .
}
define command {
command_name
service-notify-by-sms
command_line
ssh nagios@ 0. . .
}
"echo "Host '$HOSTNAME$' esta $HOSTSTATE$ $HOSTOUTPUT$" | sudo gnokii --sendsms $CONTACTPAGER$"
"echo 'Servicio $SERVICEDESC$ en Host $HOSTNAME$ IP $HOSTADDRESS$ State $SERVICESTATE$ Info $SERVICEOUTPUT$' | sudo gnokii --sendsms $CONTACTPAGER$"
nagios_sms.svg.gz
Agregando Comandos
En Nagios los encargados de recabar los datos del monitoreo, de mostrar alertas, de todas las tareas, son los comandos.
Los mismos se dividen en comandos de performance y en comandos de chequeo, los primeros son utilizados para algunos casos en particular.
Los comandos de chequeo no traen datos de los equipos a monitorear, como consumo de CPU, Memoria, Disco, procesos corriendo, puertos abiertos etc, es decir
todos los datos necesarios de la monitoria.
Los comandos de performance se utilizan cuando hay que guardar ciertos datos o enviarlos a algn host externo etc, con informacin de algn servicio.
Una entrada en un archivo de configuracin de comandos puede ser como la siguiente
define command{
command_name check_snmp_mem
command_line $USER $/check_snmp_mem.pl -H $HOSTADDRESS$ $ARG $ -w $ARG $ -c $ARG $ $ARG $
}
define command{
command_name {nombre del comando}
command_line {datos de ejecucion}
}
command_name
El nombre que el comando tendra para nuestra configuracin personal de Nagios
command_line
Modo del cual Nagios ejecutara el comando en cuestin, con su ruta fsica y argumentos Lo que vemos en entre signos $ son variables internas de nagios,
llamadas macros, las mas comunes son:
$USER1$ : Contiene datos del path de ejecucin de los plugins de Nagios
$HOSTADDRESS$ : Tiene la IP de hosts desde el cual se esta corriendo el servicio
$ARG1$ $ARG2$ $ARG3$ $ARG4$ : Son los nmeros en orden de argumentos que recibe el comando a ejecutar
Podemos definir nuestros propios macros seteando variables en el archivo resource.cfg
Se debern agregar al archivo {nagios-dir}/etc/commands.cfg las entradas correspondientes anteriormente explicadas.
lotus_response
Lotus Reponse Services
define servicegroup{
servicegroup_name
alias
}
Se deber crear el archivo {nagios-dir}/etc/servicegroup/{nombregrupodeservicios.cfg} con las entradas correspondientes anteriormente explicadas.
Agregando Servicios
A continuacion se muestra una tipica entrada de configuracin de un servicio
define service {
use
host_name
hostgroup_name
service_description
servicegroups
is_volatile
check_period
max_check_attempts
normal_check_interval
retry_check_interval
contact_groups
notification_interval
notification_period
notification_options
check_command
}
define service {
use
host_name
hostgroup_name
service_description
servicegroups
is_volatile
check_period
max_check_attempts
normal_check_interval
retry_check_interval
contact_groups
max_check_attempts
notification_interval
notification_period
notification_options
check_command
}
windows
srv ,srv
servidores-windows
Verification disco F:
storage
0
x
windows
0
x
c,r
check_snmp_storage!^F! 0! 0!-C public!-r
use
Template de servicio a utilizar
host_name
Nombre del o los host a los cuales esta asignado dicho servicio
hostgroup_name
Nombre del grupo de host en los cuales esta asignado dicho servicio, es til para cuando se vuelve tedioso poner uno por uno los nombres de los hosts a los
cuales se asigna el servicio
service_description
Alias descriptivo del nombre del servicio
contact_groups
Grupos de contacto a los que enviar las notificaciones
max_check_attempts
Maxima cantidad de chequeos a efectuar por Nagios, antes de enviar un OK como resultado
normal_check_interval
Host A
Service A
Host B
Service D
u
n
define servicedependency{
host_name
service_description
dependent_host_name
dependent_service_description
execution_failure_criteria
notification_failure_criteria
}
host_name
Nombre del o los host dentro de los cuales se ejecuta el servicio dependiente
service_description
Descripcion del servicio dependiente, debe ser igual a la entrada que aparece en la configuracion del servicio.
dependent_host_name
Host donde se esta ejecutando el servicio del cual se depende
dependent_service_description
Nombre descriptivo que corresponde al servicio del cual se depende, debe ser igual al de su configuracion de servicio
execution_failure_criteria
Criterios para definir el estado del servicio
notification_failure_criteria
En base a que estado realizar las notificaciones, si esta caido, si esta ok o no realizar notificaciones
linux
Carga del sistema Linux
Carga sistema
http://localhost/cargalinux.pl?host=linux &service=Carga+Sistema
carga.png
Alertas de carga
notes
notes_url
icon_image
icon_image_alt
}
host_name
Host donde se ejecuta dicho servicio
service_description
Nombre descriptivo del servicio al cual corresponde la informacion extra
notes
Descripcion sobre que es o a que corresponde la informacin extra a mostrar
notes_url
Url donde encontrar la informacion extra
icon_image
Icono a referenciar el link de la informacin extra
icon_image_alt
Texto alternativo del icono
ramallo
Equipos de Ramallo
ramallo,slnra0 ,srvrmlofs
define hostgroup {
hostgroup_name
alias
members
}
hostgroup_name
Nombre del grupo de hosts
alias
Alias descriptivo del grupo
members
Host que son miembros del grupo, debemos ingresar el host_name de cada uno separado por comas ,
Se deber crear el archivo {nagios-dir}/etc/hostgroups/{nombregrupodehosts.cfg} con las entradas correspondientes anteriormente explicadas.
Agregando Hosts
Para configurar un host con o sin SNMP previamente instalado y configurado como lo indicado anteriormente, para su posterior monitoreo. Se debe crear una
entrada en la configuracion de Nagios.
Un tipico archivos hosts.cfg
define host{
use
host_name
hostgroup_name
alias
address
parents
contact_groups
max_check_attempts
notification_interval
notification_period
notification_options
}
servidores
servidorsap
servidores-linux
SAP SERVER
.
. 0.
buenos_aires
linux;
0
0
x
d,u,r
define host{
use
host_name
hostgroup_name
alias
address
parents
contact_groups
max_check_attempts
notification_interval
notification_period
notification_options
}
{template-host}
{nombre-host}
{grupos al que pertenece este host}
{alias-descriptivo}
{ip}
{host del que depende}
{grupo de contacto};
{maxima cantidad de chequeos}
{intervalo de tiempo entre notificaciones}
{priodo de tiempo de notificaciones}
{cuando enviar notificaciones}
use
Template de host a utilizar
host_name
Nombre del host
hostgroup_name
Grupos a los que pertenece este host
address
Direccion IP del host
parents
Host del que depende y que esta delante suyo, por ejemplo puede ser un router o un equipo que le brinde la conectividad etc, y en el mapa se dibujara como
dependiente de ese nodo
contact_groups
Grupos de contacto a los que enviar las notificaciones
max_check_attempts
Maxima cantidad de chequeos a efectuar por Nagios, antes de enviar un OK como resultado
notification_interval
Esta directiva se utiliza para definir el nmero de las unidades del tiempo para esperar antes de re-notificar a un contacto que este servidor todava est abajo
o inalcanzable. A menos que se haya cambiado la directiva interval_length del valor prefijado de 60, este nmero significar minutos. Si este valor se establece a
0, Nagios re-no notificar contactos sobre los problemas para este host - solamente una notificacin del problema ser enviada.
notification_period
Periodo de tiempo en el cualse envia notificacion y notificacion
notification_options
Esta directiva indica a Nagios en que momentos debe enviar notificaciones de estado
d = DOWN cuando el host esta caido
u = UNREACHABLE cuando el host no es visible o es inalcanzable
r = RECOVERY (OK) cuando el host se recupero
f = FLAPPING cuando es de estado cambiante
n = NONE no enviar notificaciones
Se deber crear el un subdirectorio correspondiente al nombre del host y segun corresponda ubicarlo en el directorio servers/{linux-windows-lotus} o routers y
deentro crear un archivo hosts.cfg con la configuracin anteriormente explicada,
linuxoracle
Servidor Oracle de uniface
oracle.png
Oracle
oracle.png
oracle.gd
define hostextinfo{
host_name
notes
icon_image
icon_image_alt
vrml_image
statusmap_image
}
{nombre de host}
{descripcion para el
{logo para ver en la
{texto para el logo}
{logo para ver en el
{logo para ver en el
host}
interfaz web}
mapa
mapa
D}
D}
host_name
Nombre del host al cual corresponde la informacin dada
notes
Pequea nota descriptiva de la informacion del host a presentar en los mapas de estado
icon_image
Icono a visualizar en el entorno html de la consola Nagios
icon_image_alt
Texto alternativo para mostrar al logo
vrml_image
Icono a visualizar en el mapa 3D
statusmap_image
mi-icono.png mi-icono.gd
El primer parametro es mi ya existente imagen png, el segundo parametro es el nombre de archivo de salida en formato gd2, el parametro 1 se refiere a que la
cree en formato raw (crudo), y el segudo parametro es para que lo cree sin compresion, todo esto se realiza dentro del directorio logos anteriormente explciado.
linuxsap
linuxoracle
d
define hostdependency{
host_name
dependent_host_name
notification_failure_criteria
}
host_name
Nombre del host al cual corresponde la informacin dada
dependent_host_name
Nombre del host del cual depende
notification_failure_criteria
Opciones de notificacion en caso de cada estado
Se deber crear en el archivo hostdependency.cfg dentro subdirectorio correspondiente al host con las entradas de configuracin anteriormente explicadas.
x
Hours A Day,
00:00- :00
00:00- :00
00:00- :00
00:00- :00
00:00- :00
00:00- :00
00:00- :00
Days A Week
workhours
Normal Work Hours
0 :00- :00
0 :00- :00
0 :00- :00
0 :00- :00
0 :00- :00
us-holidays
us-holidays
U.S. Holidays
00:00-00:00
00:00-00:00
00:00-00:00
00:00-00:00
00:00-00:00
00:00-00:00
;
;
;
;
;
;
New Years
Memorial Day last Monday in May
Independence Day
Labor Day first Monday in September
Thanksgiving last Thursday in November
Christmas
Definimos un periodo de tiempo que chequee las 24 horas del dia los 7 dias de la semana, pero que incluya las excepciones anteriormente mostradas
define timeperiod{
timeperiod_name
alias
use
sunday
monday
tuesday
wednesday
thursday
friday
saturday
}
x _sans_holidays
x Sans Holidays
us-holidays
00:00- :00
00:00- :00
00:00- :00
00:00- :00
00:00- :00
00:00- :00
00:00- :00
; Agregar excepciones
weekdays
weekdays
00:00- :00
00:00- :00
00:00- :00
00:00- :00
00:00- :00
weekends
weekends
00:00- :00
00:00- :00
holidays
holidays
00:00- :00
00:00- :00
00:00- :00
00:00- :00
00:00- :00
00:00- :00
00:00- :00
00:00- :00
:00- :00
;
;
;
;
;
;
;
;
;
Ahora definimos un timeperiod llamadas por ejemplo, incluya los dias de la semana, pero excluya los dias festivos
define timeperiod{
timeperiod_name
use
exclude
}
llamadas
weekdays
holidays
; Include weekdays
; Exclude holiday dates/times defined elsewhere
Alternando dias, o sea desde el primero de agosto de 2007 cada dos dias notificar, si en vez de / 2 ponemos / 14 lo realizara cada 14 dias
define timeperiod{
timeperiod_name
00 -0 -0 /
}
john-oncall
00:00- :00
st,
00
En la entrada del contacto deberemos especificarle los timeperiods para hosts y servicios
define contact{
contact_name
...
host_notification_period
service_notification_period
}
john
john-oncall
john-oncall
Programando plugins
Desarrollar plugins de chequeos para Nagios es extremadamente flexible, ya que no dependemos del lenguaje de programacin debido a que Nagios toma la
salida resultante de su ejecucin.
Deberemos conocer bien lo que queremos chequear y conocer los indicadores que nos mostraran si deberemos expresarlos como un OK, un WARNING o un
CRITICAL.
Luego deberemos reflejar esos estados en su cdigo de retorno o Exit status, dependiendo del cdigo del mismo Nagios entender que debe mostrar.
Exit
status
Estado
Servicio
de
OK
UP
WARNING
UP/DOWN/UNREACHABLE
El plugin es capaz de verificar el servicio, pero que pareca estar por encima de un umbral de advertencia o parece no estar funcionando
correctamente
CRITICAL
DOWN/UNREACHABLE
El plugin detecta que o bien el servicio no funciona o que est por encima de un umbral crtico
UNKNOWN
DOWN/UNREACHABLE
Argumentos de lnea de comandos no vlida o fallas internas del plugin (por ejemplo error en un socket o dns) que le impiden realizar las
operaciones especificadas
Estado de Host
Descripcion
comando
comando
comando
comando
/bin/comando
/bin/comando
/bin/comando
/bin/comando
consultorsnmp
Luego podemos ver los resultados obtenidos realizando una consulta SNMP a UCD-SNMP-MIB::extTable o .1.3.6.1.4.1.2021.8, obteniendo resultados similares a
:
snmpwalk -v 3 -l authNoPriv -a MD5 -u consultorsnmp -A consultorsnmp123 127.0.0.1 UCD-SNMP-MIB::extTable*
UCD-SNMP-MIB::extIndex. = INTEGER:
UCD-SNMP-MIB::extIndex. = INTEGER:
UCD-SNMP-MIB::extIndex. = INTEGER:
UCD-SNMP-MIB::extIndex. = INTEGER:
UCD-SNMP-MIB::extNames. = STRING: comando
UCD-SNMP-MIB::extNames. = STRING: comando
UCD-SNMP-MIB::extNames. = STRING: comando
UCD-SNMP-MIB::extNames. = STRING: comando
UCD-SNMP-MIB::extCommand. = STRING: /bin/comando
UCD-SNMP-MIB::extCommand. = STRING: /bin/comando
UCD-SNMP-MIB::extCommand. = STRING: /bin/comando
UCD-SNMP-MIB::extCommand. = STRING: /bin/comando
UCD-SNMP-MIB::extResult. = INTEGER: 0
UCD-SNMP-MIB::extResult. = INTEGER: 0
UCD-SNMP-MIB::extResult. = INTEGER: 0
UCD-SNMP-MIB::extResult. = INTEGER: 0
UCD-SNMP-MIB::extOutput. = STRING: salida-comando
UCD-SNMP-MIB::extOutput. = STRING: salida-comando
UCD-SNMP-MIB::extOutput. = STRING: salida-comando
UCD-SNMP-MIB::extOutput. = STRING: salida-comando
UCD-SNMP-MIB::extErrFix. = INTEGER: 0
UCD-SNMP-MIB::extErrFix. = INTEGER: 0
UCD-SNMP-MIB::extErrFix. = INTEGER: 0
UCD-SNMP-MIB::extErrFix. = INTEGER: 0
UCD-SNMP-MIB::extErrFixCmd. = STRING:
UCD-SNMP-MIB::extErrFixCmd. = STRING:
UCD-SNMP-MIB::extErrFixCmd. = STRING:
UCD-SNMP-MIB::extErrFixCmd. = STRING:
Ramas SNMP :
UCD-SNMP-MIB::extNames
En esta rama obtendremos el nombre que le hemos asignado a dicho comando
UCD-SNMP-MIB::extCommand
Esta rama nos devolvera la ruta completa al ejecutable del comando
UCD-SNMP-MIB::extResult
Nos devolvera el resultado de la ejecucion del comando fue exitosa o no, devolviendonos su exit status
UCD-SNMP-MIB::extOutput
Aqui obtendremos la salida del comando con el string o expresion que necesitemos conocer
Referencias sobre consultas SNMP a la tabla UCD
http://net-snmp.sourceforge.net/docs/mibs/ucdavis.html [http://net-snmp.sourceforge.net/docs/mibs/ucdavis.html]
!defined $result {
printf "ERROR: %s.\n", $session->error
$session->close ;
exit ;
exit 0;
Ejemplo simple de como consultar una variable SNMPv3, igualmente se pueden consultar mas de una variable por sesion. En este caso estamos consultado la
variable extOutput.1 para ver la salida del primer comando.
#!/usr/bin/perl
use Net::SNMP;
$oid = ". . . . . . . 0
. . . 0 . ";
nagios_hostgroup_members.host_object_id=nagios_hosts.host_object_id
AND
nagios_hostgroups.hostgroup_object_id=nagios_objects.object_id
AND
nagios_objects.name = '{grupo_de_host_a_consultar}'
ORDER BY nagios_hosts.display_name ASC
apache
servidor-sql
sap-db
Para conocer el estado de un servicio, independientemente de los hosts en los que se encuentre disponible
En este caso el servicio HTTP
SELECT obj .name AS host_name,
nagios_services.service_object_id,
obj .name AS service_description,
nagios_servicestatus.current_state
FROM `nagios_servicestatus`
LEFT JOIN nagios_objects AS obj ON nagios_servicestatus.service_object_id = obj .object_id
LEFT JOIN nagios_services ON nagios_servicestatus.service_object_id = nagios_services.service_object_id
LEFT JOIN nagios_instances ON nagios_services.instance_id = nagios_instances.instance_id
WHERE nagios_services.config_type = ' '
AND obj .name = 'HTTP'
concentrador_mpls 18
HTTP
router-vpn
23
HTTP
central
28
HTTP
router-45
33
HTTP
Consulta simple para obtener un pantallazo general del estado de servicios de un hostgroup
SELECT
CASE st.current_state
WHEN 0 THEN 'OK'
WHEN
THEN 'WARNING'
WHEN
THEN 'CRITICAL'
WHEN
THEN 'UNKNOWN'
END AS states,
COUNT st.current_state AS number
FROM nagios_hostgroup_members m, nagios_services s,
nagios_servicestatus st
WHERE m.host_object_id = s.host_object_id
AND s.service_object_id = st.service_object_id
AND hostgroup_id IN
SELECT hostgroup_id
FROM nagios_hostgroups hg, nagios_objects o
WHERE hg.hostgroup_object_id = o.object_id
AND o.name = '{nombre_hostgroup}'
GROUP BY st.current_state;
number
OK
1754
WARNING
13
CRITICAL
84
UNKNOWN 20
Consulta simple para obtener un conteo general de los estados generales ordenados por meses de un ao determinado.
SELECT
FROM
WHERE
ETAT
QUANTITE
November OK
1754
November WARNING
13
November CRITICAL
84
November UNKNOWN 20
object_id int
, state int
Ese trigger hace un update as que hay que cronear esto para mantener al da con los objetos la tabla.
INSERT INTO last_state
SELECT obj.object_id, 0
FROM nagios.nagios_objects AS obj
WHERE obj.object_id NOT IN
SELECT object_id FROM last_state ;
Luego estas consultas podemos integrarlas en PHP o Perl, y obtener resultados que necesitemos para reflejarlos en un visor web, o en los resultados de un
plugin.
NOTA: Importante el modulo mysql de PHP no soporta la consulta a los PROCEDURE de MySQL, para ello deberemos utilizar el modulo mysqli de PHP, otra cosa
tambien importante es que mysqli soporta conecciones persistentes, asi que para evitarse tiempo de implementacion a veces es necesario o implementar un
script en Perl, o hacer que el resultado del PROCEDURE se almacene en una tabla temporal y realizar una consulta simple desde ahi.
Correlacin de eventos
Si bien Nagios provee de monitoreo en vivo para saber el estado de nuestros servicios, a veces necesitamos un proceso para analizar los datos de eventos e
identificar patrones, que nos ayudaran a entender causas comunes y causas iniciales, por medios de reglas para estados predefinidos.
Para poder determinar estos casos deberemos implementar una Bitcora centralizada de eventos del sistema (SYSLOG).
Objetivos
Simplificar y optimizar la administracin de diferentes servicios para conocer su estado minuto a minuto, y elaborar planes de accin. A su vez el sistema debe
ser simple de utilizar por el administrador, y ser posible de ver via web los registros del sistema, realizar busquedas etc.
Es til registrar, por ejemplo:
Un intento de acceso con contrasea equivocada
Un acceso correcto al sistema
Anomalas: variaciones en el funcionamiento normal del sistema
Alertas cuando ocurre alguna condicin especial
Informacin sobre las actividades del sistema operativo
Errores del hardware o el software
Tambin es posible registrar el funcionamiento normal de los programas; por ejemplo, guardar cada acceso que se hace a un servidor web, aunque esto suele
estar separado del resto de alertas.
Puede logguear tanto por UDP como por TCP, teniendo compatibilidad con el viejo syslog, soportando a su vez muchas mas opciones y tareas que el syslog
comun.
Sobre Syslog-NG
Syslog-NG es un sistema para el envo de mensajes de registro en una red.
Es til registrar, por ejemplo:
Un intento de acceso con contrasea equivocada
Un acceso correcto al sistema
Anomalas: variaciones en el funcionamiento normal del sistema
Alertas cuando ocurre alguna condicin especial
Informacin sobre las actividades del sistema operativo
Errores del hardware o el software
Tambin es posible registrar el funcionamiento normal de los programas; por ejemplo, guardar cada acceso que se hace a un servidor web, aunque esto suele
estar separado del resto de alertas.
Puede logguear tanto por UDP como por TCP, teniendo compatibilidad con el viejo syslog, soportando a su vez muchas mas opciones y tareas que el syslog
comun.
Explicacion tecnica simple
Syslog-NG se compone en capas de funcionamiento
Osea tengo en primer lugar opciopnes generales, luego fuentes de donde obtener datos de los registros, ya sean locales, externos por red (udp, tcp, archivos de
texto), y luego tenemos destinos y filtros configurados, uniendolos forman los registros de sistema
Tareas
Se instalo el software syslog-ng dentro de un servidor Debian.
apt-get install syslog-ng
f_local
;
{ facility local
; };
filter f_auth {
facility auth, authpriv ;
};
log {
source src ;
filter f_auth ;
destination syslog_server ;
};
log {
source src ;
filter f_local ;
destination syslog_server ;
};
syslog.conf
syslog.conf
auth.*;authpriv.*;auth.notice;auth.error;auth.info;authpriv.none;
local .*
@ 0. . .
@ 0. . .
/etc/profile.local
Esto es para logguear todos los comandos que ejecutan los usuarios, funciona aunque ejecuten un sudo o un su sin perder el rastro del usuario original, siempre
y cuando no modifiquen la variable de entorno.
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local .debug "$ whoami
[$$]: $ history
[$RETRN_VAL]"'
};
# Log Interno
source interno {
# message generated by Syslog-NG
internal ;
# standard Linux log source this is the default place for the syslog
# function to send logs to
unix-stream "/dev/log" ;
# messages from the kernel
file "/proc/kmsg" log_prefix "kernel: " ;
};
# Create destination to LogZilla
destination d_logzilla {
program "/usr/local/nagios/syslog/scripts/db_insert.pl"
template "$HOST\t$FACILITY\t$PRIORITY\t$LEVEL\t$TAG\t$YEAR-$MONTH-$DAY\t$HOUR:$MIN:$SEC\t$PROGRAM\t$MSG\n"
;
};
source externo {
# use the following line if you want to receive remote UDP logging messages
# this is equivalent to the "-r" syslogd flag
# Ampliamos el limite de conexiones para recibir gran cantidad de datos de LOGS externos
udp ip 0.0.0.0 port
;
tcp ip 0.0.0.0 port
max-connections
0
;
};
# Tell syslog-ng to log to our new destination
log {
source externo ;
destination d_logzilla ;
};
# Alertas de Nagios Eventdb
destination d_eventdb {
pipe
"/usr/local/nagios/var/rw/syslog-ng.pipe",
template "$HOST\t$SOURCEIP\t$PRI\t$YEAR-$MONTH-$DAY\t$HOUR:$MIN:$SEC\t$PROGRAM\t$MSG\n"
template_escape no
;
};
log {
source externo ;
destination d_eventdb ;
};
PHP-Syslog-ng
Para la visualizacion de los logs via web, busqueda y demas operaciones para su administracion se instalo, configuro y modifico a necesidad parte de codigo del
sofware php-syslog-ng que provee de una interfaz web con soporte de busquedas y que servia para cubrir la necesidad planteada.
Una vez instalado se configuro el apache para su puesta en marcha de la siguiente manera (se omitieron las directivas de autenticacion).
Alias /syslog "/usr/local/php-syslog-ng/html"
<Directory "/usr/local/php-syslog-ng/html">
Options All
Order allow,deny
Allow from all
SSLRequireSSL
AllowOverride None
</Directory>
Eventdb
Que es Eventdb?
EventDB es una herramienta para facilitar el tratamiento de los datos basados en eventos de Syslog para herramientas de monitoreo como Nagios o Icinga y su
integracin con los mismos se logra a travs de un plug-in de chequeo. Cuenta con varios plugins para diferentes fuentes de datos. La interfaz web permite a los
usuarios buscar, filtrar y reconocer todos los eventos.
Cmo funciona?
El EventDB toma los eventos recibidos y los almacena en una base de datos MySQL. Se tomando los datos de syslog-ng desde un pequeo demonio perl (syslogng2mysql.pl). syslog-ng2mysql.pl abre una unix-pipe por un lado desde donde recibe los mensajes de syslog-ng, y utiliza DBI en el otro para escribir datos en
MySQL.
Referencias
TIPs varios
Sobre performance
Compilar Nagios y NDO con optimizaciones para nuestro procesador
http://en.gentoo-wiki.com/wiki/Safe_Cflags [http://en.gentoo-wiki.com/wiki/Safe_Cflags]
Ver los tips de la documentacion oficial
http://nagios.sourceforge.net/docs/3_0/tuning.html [http://nagios.sourceforge.net/docs/3_0/tuning.html]
Modificar opciones de buffer y cache de MySQL
Establecer los valores que necesitemos de timeouts de Nagios
Ubicar el archivo de estado de Nagios, sus archivos temporales en el sistema de archivos de memoria compartida
nagios.cfg : status_file=/dev/shm/status.dat
nagios.cfg : temp_file=/dev/shm/nagios.tmp
nagios.cfg : temp_path=/dev/shm
Nagios utiliza cada vez que necesita ejecutar un check dos forks en vez de uno, esto le trae entre otros beneficios el aislamiento del proceso hijo. Sin embargo la
utilizacin de CPU se incrementa necesariamente. Deshabilitando esta opcin puede incrementarce la performance en instalaciones grandes.
Configuracin por defecto:
child_processes_fork_twice=
Configuracin recomendada:
child_processes_fork_twice=0
Flap Detection
Flap detection es un mecanismo mediante el cual Nagios induce que un servicio esta cambiando de estado continuamente sin entrar en un rgimen permanente.
El procedimiento del que se vale flap detection para detectar que un servicio o host esta en ese estado (flapping), es tomar los ltimos 21 resultados de los
checks y verificar cuantos cambios de estado hay en los mismos. Analizando ms en detalle, dentro de 21 resultados hay 20 posibles cambios de estado.
Suponiendo que dentro de estos 20 cambios de estado posibles, hubo 10 cambios de estado reales, la relacin dara como resultado 10/20=0,50, es decir, 50%.
Mediante dos parmetros se configuran los umbrales para que el mecanismo considere que el servicio o host se encuentra en ese estado.
Es interesante entender que el concepto de flapping se puede asignar por servicio ya sea en el template utilizado o en la definicin de un servicio en particular.
Igualmente es conveniente dejar la configuracin general en su estado original y solo alterar la configuracin particular del servicio que presenta problemas de
esta ndole.
Otra consideracin importante es que se pueden quitar estados a interpretarse como cambio de estado, por ejemplo el estado UNKNOWN podra considerarse
como que no hubo cambio respecto del estado anterior. Para ello hay que utilizar la directiva flap_detection_options dentro de la configuracin del servicio o
host.
Sobre los flags de compilacion
Ejemplo para un Pentium Dual E2160 o un Intel Quad Core
CHOST="i
-pc-linux-gnu"
CFLAGS="-march=prescott -O
CXXFLAGS="${CFLAGS}"
-pipe -fomit-frame-pointer"
-pc-linux-gnu" CFLAGS="-march=prescott -O
-pc-linux-gnu" CFLAGS="-march=prescott -O
NDO
Cuando la base de datos esta cargada con una gran cantidad de registros, el NDO comienza a tener un comportamiento erratico, y los datos reflejados no son los
correctos, por lo tanto cada cierto tiempo hay que purgar algunas tablas, ese tiempo sera dependiendo de la cantidad de objetos a monitorear.
Podemos crear un script que realize dicha tarea
#!/bin/bash
echo "TRUNCATE
echo "TRUNCATE
echo "TRUNCATE
echo "TRUNCATE
TABLE
TABLE
TABLE
TABLE
Para luego incluirlo en el crontab, por ejemplo si tenemos alrededor de mas de 600 hosts y alrededor de 2000 servicios o mas, chequeando ambos en intervalos
de ente 1 y 5 minutos, podemos establecer su ejecucion en 15 minutos.
0,
, 0,
* * * root
/usr/local/nagios/sbin/truncar_db.sh
Igualmente en las opciones de configuracion del daemon ndo2db tenemos opciones referidas a esto, aunque igualmente dependeremos del script a realizar ya
que el NDO en si mismo puede fallar. La configuracion se refiere a valores en minutos.
# Keep timed events for
hours
#max_timedevents_age=
0
max_timedevents_age= 0
# Keep system commands for
week
#max_systemcommands_age= 00 0
max_systemcommands_age=
# Keep service checks for
week
#max_servicechecks_age= 00 0
max_servicechecks_age= 0
# Keep host checks for
week
#max_hostchecks_age= 00 0
max_hostchecks_age= 0
# Keep event handlers for
days
#max_eventhandlers_age=
0
max_eventhandlers_age= 0
Reparar tabla de NDO : En caso de que una tabla se corrompa, deberemos bajar el servicio NDO para que nagios no siga escribiendo registros y ejecutar la
siguiente orden desde el shell.
mysqlcheck -auto-repair nagios nagios_servicechecks;
Lo cambiaremos como :
if output_format==HTML_OUTPUT
printf "Content-type: text/html\r\n\r\n" ;
else{
printf "Content-Disposition: attachment;filename=informe_mensual-nagios.csv
Content-type:application/csv\r\n\r\n" ;
return;
}
Scripts tiles
A continuacion se detallan scripts que pueden ser de utilidad para el dia a dia con Nagios
Volcado de estado actual : Haciendo uso de la clase StatusLog disponible en CPAN podemo parsear el contenido del archivo status.dat de Nagios, para luego
exportar su contenido
#!/usr/bin/perl
use Nagios::StatusLog;
my $log = Nagios::StatusLog->new
Filename => "/dev/shm/status.dat",
Version => .0
;
print "Content-type: text/xml\n\n" ;
print "<?xml version=' .0'?>" ;
print "<status>\n" ;
foreach my $host $log->list_hosts
{
print "<host>\n<name>$host</name>\n<services>" ;
foreach my $serv $log->list_services_on_host $host
print "<service>\n" ;
print ref $serv ;
my $st = $log->service $host, $serv ;
foreach $tag $st->list_tags
{
print "<$tag>$$st{$tag}</$tag>\n" ;
}
print "</service>\n" ;
}
print "</services>\n</host>\n"
}
print "</status>" ;
sub {
$F = shift @_;
$F->{PERCENT_TOTAL_TIME_UP} =~
s/%//;
$F->{TIME_UP_HHMMSS}
=
t hms $F->{TOTAL_TIME_UP} ,
$F->{TIME_DOWN_HHMMSS}
=
t hms $F->{TOTAL_TIME_DOWN} ,
$F->{TIME_UNREACH_HHMMSS}
=
t hms $F->{TOTAL_TIME_UNREACHABLE}
qw TIME_UP_HHMMSS TIME_DOWN_HHMMSS TIME_UNREACH_HHMMSS
}
;
$x->csv_dump ;
Volcado de variables de entorno de Nagios (esto es til cuando programamos plugins que requiren variables de entorno y no sabemos como las tenemos que ver
o capturar) :
#!/usr/bin/perl -w
my $o_hoststate
= $ENV{NAGIOS_HOSTSTATE};
# Nagios monitored host check output data
my $o_hostoutput
= $ENV{NAGIOS_HOSTOUTPUT};
# Nagios date when the event was recorded
my $o_datetime
= $ENV{NAGIOS_LONGDATETIME};
# The recipients defined in $CONTACTEMAIL$
my $o_to_recipients
= $ENV{NAGIOS_CONTACTEMAIL};
use Data::Dumper::Concise;
print "<pre>";
print Dumper %ENV ;
print "</pre>";
Ejemplo de mk_livestatus
#!/usr/bin/python
#
# Sample program for accessing the Livestatus Module
# from a python program
socket_path = "/var/lib/nagios/rw/live"
import socket
s = socket.socket socket.AF_UNIX, socket.SOCK_STREAM
s.connect socket_path
# Write command to socket
s.send "GET hosts\n"
# Important: Close sending direction. That way
# the other side knows, we are finished.
s.shutdown socket.SHUT_WR
# Now read the answer
answer = s.recv 00000000
# Parse the answer into a table a list of lists
table = [ line.split ';' for line in answer.split '\n' [:- ] ]
print table
/e'
/e'
NetMySLA
netMySLA es una variedad de procedimientos almacenados de MySQL. Se cre un procedimiento para calcular un nico valor de disponibilidad de servicio. El otro
itera a travs de todos los hosts y servicios para crear valores de disponibilidad de servicio y lo divide en plazos. Por lo tanto, usted puede calcular los valores
una vez al da y consulta la tabla de resultados para obtener sus datos.
https://www.nagiosforge.org/gf/project/netmysla/ [https://www.nagiosforge.org/gf/project/netmysla/]
Ejemplo de consulta con netMySLA
Lista de argumentos
1. Hostname varchar (objects)
2. Servicename varchar (objects) can be null
3. Consider Downtime boolean
4. Consider Acknowledge boolean
5. Consider Unknown boolean
6. Consider Warning boolean
7. The initial state boolean (true = up, false = down)
8. Startdate datetime
9. Stopdate datetime
10. Debugflag boolean (Display some workflow output)
11. quiet (No resultset, only inserts the values into a table np_sla)
call np_checkAvailability 'srv-web ', 'HTTP', true, true, true, true, NULL, ' 00 -0 -
00:00:00', ' 00 -0 -0
122
srv-web1
1761
HTTP
0.0227476
99.9772
Ejemplo de como llamar al procedimiento desde PHP5, para por ejemplo conocer el SLA de x servicio en n cantidad de hosts.
$consulta ="SELECT nagios_hosts.display_name
FROM
nagios_hostgroups,nagios_instances,
nagios_hosts,nagios_hostgroup_members,
nagios_objects
WHERE
nagios_hostgroups.hostgroup_id=nagios_hostgroup_members.hostgroup_id
AND
nagios_hostgroup_members.host_object_id=nagios_hosts.host_object_id
AND
nagios_hostgroups.hostgroup_object_id=nagios_objects.object_id
AND
nagios_objects.name = '{hostgroup_a_consultar}'
ORDER BY nagios_hosts.display_name ASC";
Tambien podemos utilizar el script np_aggregate.sh para ejecutarlo por medio de cron y tener autogenerados los informes, por cada hosts y cada servicios,
organizados diaria, semanal, mensual y anualmente.
Documentacion al vuelo
Para tener una documentacion actualizada de los equipos y sus servicios, lo ideal es implementar un wiki.
DokuWiki es un software para gestin de webs colaborativas de tipo wiki, escrito en lenguaje PHP y distribuido en cdigon abierto bajo la licencia GPL.
Est enfocado para ser usado por grupos de desarrolladores, grupos de trabajo en general y pequeas compaas.
Su sintaxis es similar a la de MediaWiki, aunque a diferencia de este software, la informacin se almacena en archivos de texto planos, por lo que no requiere el
uso de una base de datos.
Caractersticas:
Gestin de espacios de contenidos que permite un almacenamiento ordenado de los documentos.
Soporte para imgenes y otros contenidos multimedia.
ndices automatizados de contenidos.
Control de versiones.
Corrector ortogrfico opcional.
Interfaz traducido a mltiples idiomas, incluyendo el castellano.
Posibilidad de utilizar plantillas de diseo.
Disponibilidad de complementos (plugins) para extender la funcionalidad.
Control de bloqueos para solucionar problemas de concurrencia.
Gestin de usuarios.
Bsqueda de texto completo.
Para integrarlo con Nagios podemos implementar un script en PHP como este :
<?php
/**
* Forwarder to doku.php
*
* @license
GPL
http://www.gnu.org/licenses/gpl.html
* @author
Joerg Linge <[email protected]>
*/
$host=str_replace ' ', '_',strtolower $_GET['host']
$srv=str_replace ' ', '_',strtolower $_GET['srv']
if
;
;
Desde Dokuwiki haciendo uso de la extension PHP, podemos embeber los datos actuales de los objetos de Nagios, gracias a MK Live Status
<php>
$lista_servidores = shell_exec "/bin/echo -e \"GET hosts\nColumns: name address alias state\n\" | /usr/local/bin/unixcat /usr/local/nagios/var/rw/live" ;
$lista_hosts = str_getcsv $lista_servidores, "\n" ;
echo "<div class='level '>
<div class='table sectionedit '>
<table class='inline'>
<th>Host</th><th>IP</th><th>Descripcion</th><th>Estado Actual</th><th>Metricas / Informes</th>
";
Tambien desde dokuwiki por ejemplo si necesitamos podemos consultar comandos por SSH para mostrar su salida en la documentacin de nuestro equipo, como
un plus de un dato en tiempo real.
<php>
if !function_exists "ssh _connect"
die "function ssh _connect doesn't exist" ;
if ! $con = ssh _connect "oracle",
{
echo "No puedo establecer una conexion SSH\n";
} else {
if ssh _auth_pubkey_file $con, 'root',
'/home/usuario/.ssh/id_rsa.pub',
'/home/usuario/.ssh/id_rsa', 'secret'
{
// echo "Public Key Authentication Successful\n";
} else {
die 'Public Key Authentication Failed' ;
}
if ! $stream = ssh _exec $con, "/home/usuario/dokuwiki_archlogs.pl"
{
echo "fail: unable to execute command\n";
} else {
// collect returning data from command
stream_set_blocking $stream, true ;
$data = "";
while $buf = fread $stream, 0
{
$data .= $buf;
}
fclose $stream ;
print $data;
}
}
</php>
dokuwiki_archlogs.pl
!/usr/bin/perl
use strict;
use warnings;
sub get_sorted_files {
my $path = shift;
opendir my $dir , $path or die "no puedo abrir $path: $!";
my %hash = map {$_ => stat $_ [ ] || undef} # saltar listas vacias
map { "$path$_" }
grep { m/.dbf/i }
readdir $dir;
closedir $dir;
return %hash;
}
my %files = get_sorted_files "/oracle/arclog/DBID/" ;
print "
<table class='inline'>
<th>Archivo</th><th>Timestamp</th>";
foreach my $key sort{$files{$a} <=> $files{$b}} keys %files {
my $filename = $key;
$filename =~ s/\.\///g;
$filename =~ s/\.\.//g;
print "<tr><td>$filename</td><td>", scalar localtime $files{$key} , "</td></tr>\n";
}
print "</table>";
Plugins interesantes
check_multiaddr
A menudo sucede que tenemos hosts a monitorear con multiples ip disponibles, y dado el caso por ejemplo que necesitemos chequear por cualquiera de las dos
IP para consultar disponibilidad, y que nuestro plugin intente por una o por otra con un timeout definido, para eso ya existe la solucion check_multiaddr, con la
cual no necesitamos realizar ninguna modificacion a el cdigo existente de nuestros plugins, por ejemplo en la direccion ip del host a monitorear puede ir
192.168.0.1,192.168.0.11,192.168.0.21. Luego en la entrada de nuestro comando de chequeo realizamos modificaciones para que quede algo como esto :
define command{
command_name check_multiple_dns
command_line $USER $/check_multiaddr.pl $USER $/check_dns -H $ARG $ -s $HOSTADDRESS$
}
Con lo cual el utilitario check_multiaddr actuara simplemente de envoltorio de nuestros plugins, encargandose del timeout entre cada consulta a cada direccion y
de devolver su salida con su exit status correspondiente.
Adjunto : check_multiaddr y una version alternativa basada en el mismo cdigo
check_multiaddr.pl.txt.gz
check_all_ips.pl.txt.gz
apache
/etc/apache2/conf.d/security
Ciertos parametros son tiles para evitar cierta exposicin de nuestro Apache.
ServerTokens Prod
ServerSignature Off
TraceEnable Off
check_sap
Para que funcionen correctamente algunas cosas de los plugins de Nagios CCMS, hay que realizar algunas minimas modificaciones por ejemplo en : En el plugin
Nagios SAP CCMS hay que modificar algunas lineas de los archivos agnt_mon.h y sap_moni_ccm.h ya que en estos se establece el path de acceso a los
archivos de configuracin que por defecto los busca en /etc/sapmon, pero nuestro objetivo es que los busque en /usr/local/nagios/etc/sapmon, de una cierta
manera quede mas centralizao u ordenado. Para mas informacin sobre SAP pueden ver el apartado aprendiendo SAP.
agnt_mon.h
#define AGENT_INI_FILE /usr/local/nagios/etc/sapmon/agent.cfg
#define AGENT_LOGIN_FILE /usr/local/nagios/etc/sapmon/login.cfg
#define AG_EZ_FILE /usr/local/nagios/etc/sapmon/moni_tr.cfg
sap_moni_ccm.h
#define AGENT_INI_FILE /usr/local/nagios/etc/sapmon/agent.cfg
#define AGENT_LOGIN_FILE /usr/local/nagios/etc/sapmon/login.cfg
00 -h
0. . . 0 -s 00
MessageContext \AverageMSProcessTime"
[TEMPLATE_
]
DESCRIPTION=SAP Avg. DB Request Time dehq0srm
MONI_SET_NAME=CENTRAL MONITORING SYSTEM SAP Basis Kerpen
MONI_NAME=Test Systems SAP
PATTERN_0=SID\hostname\Dialog\DBRequestTime
[TEMPLATE_
]
MONI_SET_NAME = "SAP CCMS Technical Expert Monitors"
MONI_NAME
= "All Contexts on Local Application Server"
PATTERN_0
= "*"
[TEMPLATE_
]
MONI_SET_NAME = "SAP CCMS Technical Expert Monitors"
MONI_NAME
= "All Contexts on Local Application Server"
PATTERN_0
= "*\SYSTEM\Free space"
[TEMPLATE_
]
MONI_SET_NAME = "SAP CCMS Technical Expert Monitors"
MONI_NAME
= "All Contexts on Local Application Server"
PATTERN_0
= "*\PSAPSR USR\Free space"
# Monitorear Extended memory en application Server
[TEMPLATE_
]
MONI_SET_NAME="SAP CCMS Monitor Templates"
MONI_NAME="Performance Overview"
PATTERN_0="SID\SID _00\*EsAct"
[TEMPLATE_
]
MONI_SET_NAME="SAP CCMS Monitor Templates"
MONI_NAME="Performance Overview"
PATTERN_0="SID\SID _00\*EsAct"
[TEMPLATE_
]
MONI_SET_NAME="SAP CCMS Monitor Templates"
MONI_NAME="Performance Overview"
PATTERN_0="SID\SID _00\*EsAct"
# Monitorear Extended memory en Central Instance
[TEMPLATE_
]
MONI_SET_NAME="SAP CCMS Monitor Templates"
MONI_NAME="Performance Overview"
PATTERN_0="SID\SID_00\*EsAct"
[TEMPLATE_
]
MONI_SET_NAME = "SID - Monitor"
MONI_NAME
= "All Monitoring Contexts"
PATTERN_0
= "*"
[TEMPLATE_ 0]
MONI_SET_NAME="SID - Monitor"
MONI_NAME="All Monitoring Contexts"
PATTERN_0="SID\*\*Oracle messages*\ORA*"
Si
queremos
agregar
en
CCMS
el
monitoreo
de
X
http://help.sap.com/saphelp_nw04/helpdata/en/1c/48803d48de0610e10000000a114084/content.htm
jobs
debemos
seguir
esta
guia
[http://help.sap.com/saphelp_nw04/helpdata/en/1c/48803d48de0610e10000000a114084/content.htm]
# Monitoreo de Delay + Runtime de X job
[TEMPLATE_
]
MONI_SET_NAME="SID - Monitor"
MONI_NAME="All Monitoring Contexts"
PATTERN_0="SID\Background\E_00 _RB_0 \Delay + Runtime"
check_sap
$USER $/ccms/check_sap $ARG $ $_HOSTSAPID$
define command {
command_name
command_line
register
}
check_sap_np
$USER $/ccms/check_sap_np.sh $ARG $ $_HOSTSAPID$
Por ejemplo si la salida del chequeo en SAP nos arroja pipes |, para que no tengamos problemas con un falso perfdata, podemos apelar a este script :
check_sap_np.sh
#!/bin/bash
CMD=`/usr/local/nagios/libexec/ccms/check_sap $
EXIT=$?
echo $CMD | /bin/sed -e 's/|/-/g'
exit $EXIT
$ `
Para poder hacer correctamente el chequeo deberemos defini la variable $_HOSTSAPID$ dentro de la configuracin del host :
_SAPID
PRD
jVectorMap
Con jVectorMap podemos dibujar mapas dinmicos vectoriales en AJAX, podemos hacer que por ejemplo al pasar el mouse por cada pas por medio de datos
obtenidos de MKLiveStatus muestre el estado de hosts y servicios de cada regin.
Interfaz administrativa
Anteriormente se vio de manera detallada las directivas de configuracion necesarias para el funcionamiento de un servicio Nagios, igualmente esta configuracion
se puede establecer por medio de una interfaz web, la misma es NagiosQL, es una aplicacion desarrollada en PHP.
Para funcionar dentros de nuestro actual servidor Nagios:
PEAR Module: HTML_Template_IT 1.1 o superior
PHP Extension: gettext
PHP Extension: mysql
PHP Extension: ftp
Javascript en el navegador
Para instalar por ejemplo el soporte HTML_Template_IT, deberemos ejecutar:
pear install HTML_Template_IT
Ademas si queremos soporte de idiomas deberemos asegurarmos que los locales de nuestro sistema tengan generado su enconding, ej. es_ES.utf8. Para ver los
enconding disponibles deberemos ejecutar locale -a.
Si realizamos la instalacion en un hosts con HTTPS, deberemos modificar el campo nagiosql.tbl_settings, de http a https.
Deberemos instalar NagiosQL donde residen los archivos HTML de Nagios, usualmente en /usr/local/nagios/share. Nuestra configuracion actual de Nagios debera
ser importada dentro de NagiosQL, para asi poder administrarla. Al realizar la importacion nos quedara una nomenclatura de directorios como esta
/etc/nagiosql/
"
"
"
"
"
/hosts
/services
/backup/
" /hosts
" /services
->
->
->
->
->
->
Archivos de configuracion
Configuracion de Hosts
Configuracion de Servicios
Backups
Backups de Hosts
Backups de Servicios
Por cada cambio que se realiza NagiosSQL hace una copia de seguridad de dicha configuracion.
Para comenzar con la instalacion deberemos crear un archivo dentro del directorio de nagiosQL touch nagiosql3/install/ENABLE_INSTALLER. Ahora podremos
comnezar la instalacion via web, una vez finalizada la instalacion deberemos eliminar el archivo creado rm -f nagiosql3/install/ENABLE_INSTALLER
Una vez ingresados al sistema, nos aparecera un menu con enlaces de uso a la izquierda, con diferentes secciones
SubSeccin Hosts: Dentro de este apartado, tendremos un listado de los hosts presentes en la configuracion, indicando su estado si es activo o no, y a su vez
dandonos la posibilidad de modificarlos y personalizar su modo de chequeo, alarmas etc.
SubSeccin Servicios: Dentro de este apartado, tendremos un listado de los servicios asignados a sus correspondientes hosts, indicando su estado si es activo
o no, y a su vez dandonos la posibilidad de modificarlos.
SubSeccin Grupos de Hosts: Dentro de este apartado, tendremos un listado de los grupos de hosts, en donde queramos definir un conjunto de hosts que
tengan que ver entre s por algn servicio o alguna funcin que cumplan.
SubSeccin Grupo de Servicios: Dentro de este apartado, tendremos un listado de los grupos de servicios, en donde queramos definir un conjunto de servicios
que tengan que ver entre s por alguna dependencia o que cumplan funciones parecidas.
SubSeccin Plantillas de Hosts: Dentro de este apartado, tendremos las plantillas que utilizaremos para afectar a los hosts de manera comn en lo que
respecta a intervalos de alarmas/notificaciones, modo de chequeo, contactos a quienes enviar datos, agrupacin, servicios asignados, auto definido como una
forma centralizada de cambiar la configuracin de determinado conjunto de hosts.
SubSeccin Plantillas de Servicios: Dentro de este apartado, similar al anterior tendremos las plantillas que utilizaremos para afectar a los servicios de
manera comn en lo que respecta a intervalos de alarmas/notificaciones, modo de chequeo, contactos a quienes enviar datos, agrupacin, hosts en cuales
ejecutarse, auto definido como una forma centralizada de cambiar la configuracin de determinado conjunto de servicios.
SubSeccin Hosts
Al ingresar a este apartado de administracin nos encontraremos con una pantalla similar a esta con la lista de hosts presentes en el sistema de monitoreo,
indicndonos cuales se encuentran activos y si su configuracin se encuentra actualizada con respecto a la presente en el archivo de configuracin.
Hacia su derecha podremos observar diferentes botones :
De izquierda a derecha
El primer botn es para acceder a la informacin de configuracin del host, con la correspondiente posibilidad de su posterior modificacin.
El segundo botn es para copiar y as duplicar la configuracin de dicho host, en caso de que tengamos un equipo con similares caractersticas al realizar esto
se nos har mucho ms fcil su implementacin.
El tercer botn es para generar la escritura en la configuracin de Nagios para dicho host en caso de que hayamos cambiado algo.
El cuarto botn es para descargados el archivo con la configuracin individual de dicho equipo.
El quinto y ltimo botn es para mostrarnos informacin de las relaciones de configuracin de dicho equipo, si es posible borralo y no afectar otras
configuraciones mostrndonos un resumen como el siguiente:
Refirindonos al primer botn para proceder a editar un hosts existente o dar de alta uno nuevo, nos aparecera una pantalla como esta, donde podremos ir
agregando los datos pertinentes del hosts en cuestion que necesitamos monitorear.
Al editar un host existente o dar de alta uno nuevo, nos aparecera una pantalla como esta, donde podremos ir agregando los datos pertinentes del host en
cuestion que necesitamos monitorear.
A su vez deberemos utilizar una plantilla, en este caso la de generic-host o podemos utilizar otra con opciones y ajustes predefinidos para el tipo de monitoreo a
utilizar para esta clase de host (intervalos de chequeo, notificaciones, alarmas, dependencias, grupo de hosts).
Como datos fundamentales tenemos:
Nombre del Host: Aqu definiremos el nombre real o de configuracin para nosotros, sin espacios, comas, guiones otros caracteres que no correspondan.
Descripcin: Mnimo dato descriptivo de que funcin cumple el hosts, ejemplo smon0002lx Servidor de monitoreo
Direccin: Direccin IP del equipo
Como datos adicionales tenemos:
Padres: Podremos definir una lista de hosts de los que depende la ruta de llegada hacia ese determinado host dentro de la topologa de red.
Grupo de Hosts: Conjuntos a los cuales pertenece dicho hosts, igualmente si son muchos hosts de similares servicios que utilizan una misma plantilla, es mas
practico definir este dato en ella.
Comando de comprobacin: Comando para ejecutar el chequeo de comprobacin del hosts, igualmente si son muchos hosts de similares servicios que utilizan
una misma plantilla, es mas practico definir este dato en ella.
Activo: Podemos activar o desactivar de la configuracin el equipo.
$ARG1$ - $ARG8$: Lista de argumentos ordenados uno a uno para pasarle al comando de comprobacin de dicho host.
Plantillas: Plantillas de las cuales depende el host para obtener determinados datos de configuracin, dichos datos contenidos en estas se pueden omitir en la
configuracin del host ya que se desprenden de esta.
Estado inicial: Por defecto Nagios al iniciar asume que el host esta activo, pero esto no necesariamente puede ser as, entonces podemos definirlo como:
O = UP
D = DOWN
U = UNREACHABLE
Mximos intentos de comprobacin: Mxima cantidad de intentos de comprobacin antes de definir el estado final del host.
Intervalo de reintento: Intervalo de reintento entre cada intento de comprobacin.
Intervalo de comprobacin: Intervalo entre cada comprobacin, incluidos sus reintentos.
Comprobacin Activa: Es el tipo de chequeo por defecto y ms usado por Nagios, ejecutado por s mismo con un determinado margen de tiempo para su
ejecucin.
Comprobacin pasiva: Es un chequeo ejecutado por aplicaciones externas y su resultado devuelto a Nagios para su procesamiento.
Periodo de comprobaciones: Son los lapsos de tiempo en los cuales se ejecutaran los chequeos de dicho host, por ejemplo las 24 horas del da los 7 das de la
semana o solo horas laborales de Lunes a Viernes.
Umbral de refresco: Se utiliza en la implementacin de chequeos pasivos y en entornos distribuidos para poner nfasis sobre el refresco de los datos de
chequeo de un equipo.
Refresco de comprobacin: Activar el refresco de chequeos.
Concentracin en el equipo: Utilizar un comando luego de ejecutado el gestor de eventos.
Gestor de eventos: Comando a ejecutarse luego de obtenidos los resultados del chequeo del host.
Gesto de eventos activado: Aqu definiremos si utilizaremos o no un gestor de eventos luego de los chequeos.
Umbral bajo de oscilacin: Aqu definimos el umbral mnimo para considerar una deteccin correcta del flapping de estado (cambios de estados muy
repentinos)
Umbral alto de oscilacin: Aqu definimos el umbral mximo para considerar una deteccin correcta del flapping de estado (cambios de estados muy
repentinos)
Deteccin de oscilacin activada: Activar o desactivar la deteccin de oscilacin para el host.
Opciones de deteccin de estabilidad: Aqu definimos que estado consideramos para establecer el flapping de un host.
Mantener informacin de estado: En caso de que reinicie Nagios, mantener la ltima informacin de estadstica obtenida del chequeo del host
Mantener el resto de la informacin: Mantener otra informacin til sobre el host entre los reinicios de Nagios.
Datos sobre el rendimiento de los procesos: Procesar la informacin de performance de los chequeos, esto es til ya que varios plugins de chequeo y otras
utilidades utilizan esta informacin para coleccin de datos.
Interfaz administrativa
NOTA PERSONAL: Desde hace un par de aos no recomiendo usar NagiosQL, en su lugar recomiendo tener los archivos cfg, con la menor cantidad de lneas
posibles y siempre utilizar templates para todo.
Plugins
Plugins SNMP, caracteristicas generales
Script detail page
Description
check_snmp_storage
Yes
check_snmp_int
Yes
check_snmp_process
checks if process are running, the number that are running, memory and
No
cpu used.
check_snmp_load
Yes
check_snmp_vrrp
No
check_snmp_cpfw
Yes
Checkpoint Firewall
check_snmp_mem
Yes
check_snmp_win
No
Windows
check_snmp_css
No
CSS
check_snmp_env
No
check_snmp_nsbox
No
NetSecureOne Netbox
check_snmp_boostedge
No
Boostedge
No
Radware Linkproof
-V, version
Imprimir informacion de version
-H, hostname=ADDRESS
Hostname, direccion IP, or socket unix
-p, port=INTEGER
Puerto a chequear
-4, use-ipv4
Usar IPv
-6, use-ipv6
Usar IPv
-1, proto1
Usar protocolo
de SSH [optional]
-2, proto2
Usar protocolo
de SSH [optional]
-S, skip-stdout[=n]
Ignora todas o las primeras n lineas de STDOUT [optional]
-E, skip-stderr[=n]
Ignora todas o las primeras n lineas de STDERR [optional]
-f
Decirle al SSH que realize un fork en vez de una tty [optional]. Siempre devolver OK si ssh es ejecutado
-l, logname=USERNAME
Nombre de usuario SSH [optional]
-i, identity=KEYFILE
Llave SSH autorizada [optional]
-O, output=FILE
archivo de comando externo de Nagios [optional]
-s, services=LIST
lista de nombres de servicios Nagios separados por ':' [optional]
-n, name=NAME
nombre corto del host en la configuracion de Nagios [optional]
-o, ssh-option=OPTION
llamar ssh con la opcion '-o'
[optional]
-q, quiet
Tell ssh to suppress warning and diagnostic messages [optional]
-w, warning=DOUBLE
Response time to result in warning status
seconds
-c, critical=DOUBLE
Response time to result in critical status
seconds
-t, timeout=INTEGER
Seconds before connection times out
default:
-v, verbose
Mostrar detalles de la linea de comandos para debug
La forma mas comun de uso, es por medio de una llave ssh con el argumento '-i'. De este modo el par de llaves deben tener una contrasea nula y la llave
publica debe estar listada en el archivo authorized_keys del host remoto. Usualmente la llave debe estar restringida para correr solo un comando en el servidor
remoto. Si el script remoto permite la adicion de argumentos, puede actuar como una agente al estilo proxy para ejecutar otros comandos remotos.
Ejemplo de como configurarlo como comando
define command {
command_name
check_ssh_load
command_line
$USER $/check_by_ssh -H $HOSTADDRESS$ -C "/user/bin/check_load -w $ARG $ -c $ARG $"
}
local-service
ssh-nagios-services
Current Load
check_ssh_load! .0, .0, .0! 0.0, .0, .0
{
ssh-nagios-services
Nagios over SSH
remote ,remote
check_dig
Este comando sirve para comprobar el funcionamiento del servicio de DNS en un equipo remoto. Utiliza dig para esto.
Usage:check_dig -l <query_address> [-H <host>] [-p <server port>] [-T <query type>] [-w <warning interval>] [-c <critical interval>] [-t <timeout>] [-a
<expected answer address>] [-v]
Ejemplos: Esto enviara una consulta TCP al servidor DNS consultando por el nombre www.example.com [http://www.example.com]
check_dig -H DNSSERVER -l www.example.com -A "+tcp"
check_dig
$USER $/check_dig -H '$HOSTADDRESS$' -l '$ARG $'
generic-service
nombre_host
dig
check_dig!www.google.com
check_disk
Este comando sirve para comprobar el espacio libre de un volumen montado en el sistema de ficheros donde se est ejecutando Nagios. Permite especificar dos
umbrales y generar disparadores advertencias cuando se supera el menor, y errores crticos cuando se supera el segundo.
Usage: check_disk -w limit -c limit [-W limit] [-K limit] {-p path | -x device} [-C] [-E] [-e] [-g group ] [-k] [-l] [-M] [-m] [-R path ] [-r path ] [-t timeout] [-u
unit] [-v] [-X type]
Ejemplos: check_disk -w 10% -c 5% -p /tmp -p /var -C -w 100000 -c 50000 -p /
Checks /tmp and /var at
0% and
%, and / at
00MB and
0MB
00M/ 0M
check_all_disks
$USER $/check_disk -w '$ARG $' -c '$ARG $'
generic-service
nombre_host
Disk Space
check_all_disks! 0%! 0%
check_disk_smb
Planificacin, especificacin, diseo y evaluacin de redes Este comando funciona exactamente igual que check_disk pero realiza la comprobacin utilizando
samba para realizar la comprobacin de volmenes compartidos en quipos remotos, en redes Windows.
-s, share=STRING
Recurso compartido a testear
-W, workgroup=STRING
Grupo de trabajo o dominio usado
Default "WORKGROUP"
-u, user=STRING
Usuario a loguearse en el servidor.
Defaults "guest"
-p, password=STRING
Contrasea para loguearse en el servidor.
Defaults NULL
Default:
Defaults:
-P, port=INTEGER
Port to be used to connect to. Some Windows boxes use
, others
check_dns
Este comando permite hacer una consulta DNS para averiguar la direccin IP de un equipo dado el nombre o viceversa. Utiliza nslookup para ello; permite
especificar el servidor DNS a usar o si no usa el o los especificados en /etc/resolv.conf.
Usage:check_dns -H host [-s server] [-a expected-address] [-A] [-t timeout] [-w warn] [-c crit]
check_dummy
Este comando permite realizar una consulta a un dispositivo ficticio (devuelve el mismo parmetro que se le pasa). Puede ser utilizado para comprobaciones y
depuraciones.
Usage: check_dummy <estado numerico> [optional text]
check_flexlm
Este comando comprueba el funcionamiento de un sistema FlexLM. Este sistema es un servidor de licencias en red usado para obtener permisos de uso de
software en red. Devuelve distintos errores dependiendo del estado de estos servidores de licencias.
check_ftp
Este comando realiza comprobaciones de conexin a un servidor FTP remoto. Permite conocer el estado de este servicio.
This plugin tests FTP connections with the specified host (or unix socket).
Usage:check_ftp -H host -p port [-w <warning time>] [-c <critical time>] [-s <send string>] [-e <expect string>] [-q <quit string>][-m <maximum bytes>] [d <delay>] [-t <timeout seconds>] [-r <refuse state>] [-M <mismatch state>] [-v] [-4|-6] [-j] [-D <days to cert expiry>] [-S <use SSL>] [-E]
check_http
Este comando comprueba servicios HTTP y HTTPS en equipos remotos. Permite adems realizar el seguimiento de redirecciones, tiempos de conexin, la
expiracin de los certificados para SSL, etctera. Es especialmente til para servidores web que sirvan de base para aplicaciones de comercio electrnico.
Usage: check_http -H <vhost> | -I <IP-address> [-u <uri>] [-p <port>]
[-w
[-a
[-s
[-m
[-k
-p
0000 -u /irj/portal
-A "Mozilla/ .0
compatible; MSIE
.0; Windows NT
check_ifoperstatus
Este comando comprueba el estado de operacin de interfaces de red remotas por medio de SNMP v1 o SNMP v3.
check_ifstatus
Este comando comprueba el estado general de interfaces de red remotas por medio de SNMP v1 o SNMP v3.
check_imap
Este comando realiza conexiones contra un servidor IMAP para comprobar su estado de funcionamiento. Permite generar advertencias y errores crticos.
Definir como comando :
define command{
command_name
command_line
}
check_imap
$USER $/check_imap -H '$HOSTADDRESS$'
check_simap
$USER!$/plugins/check_imap -p
-H '$HOSTADDRESS$' -S
generic-service
nombre_host
imaps
check_simap
check_ircd
Este comando comprueba el funcionamiento de un servidor de IRC remoto. Realiza conexiones para ello, esta escrito en Perl.
check_ldap
Este comando realiza conexiones y bsquedas LDAP contra un servidor remoto y comprueba as su estado de funcionamiento y si responde dentro del tiempo
esperado o no.
Usage: check_ldap -H <host> -b <base_dn> [-p <port>] [-a <attr>] [-D <binddn>]
[-P <password>] [-w <warn_time>] [-c <crit_time>] [-t timeout]
[- |- ] [- |- ]
Notes: If this plugin is called via 'check_ldaps', method 'STARTTLS' will be implied (using default port 389) unless port=636 is specified. In that case 'SSL on
connect' will be used no matter how the plugin was called. This detection is deprecated, please use 'check_ldap' with the 'starttls' or 'ssl' flags to define the
behaviour explicitly instead.
check_load
Este comando trabaja en local en la mquina que est ejecutando el sistema Nagios. Comprueba la carga del sistema en funcin de unos umbrales que tiene
preestablecidos y permite generar advertencias o errores severos segn sea esta carga.
Uso:check_load [-r] -w WLOAD1,WLOAD5,WLOAD15 -c CLOAD1,CLOAD5,CLOAD15
-r, percpu
Divide la carga por el numero de CPU's siempre que fuera posible
Cambia a WARNING si el promedio de carga excede
Cambia a CRITICAL si el promedio de carga excede
WLOADn
CLOADn
check_load
$USER $/check_load --warning=$ARG $,$ARG $,$ARG $ --critical=$ARG $,$ARG $,$ARG $
define service{
use
host_name
service_description
check_command
}
check_log
generic-service
nombre_host
Current Load
check_load! .0! .0! .0! 0.0! .0! .0
Este comando es muy interesante para administradores del sistema. Funciona en local y permite buscar coincidencia de patrones en ficheros de suceso. Cuando
el patrn que se busca es encontrado, Nagios recoge esta incidencia.
Usage: check_log -F logfile -O oldlog -q query Usage: check_log help Usage: check_log version
check_mailq
Este comando funciona en local en la mquina que corre Nagios. Permite comprobar el nmero de mensajes que hay en espera en las colas de Sendmail. Se
puede establecer un lmite para que se genere una notificacin en ese caso.
Usage: check_mailq -w <warn> -c <crit> [-W <warn>] [-C <crit>] [-M <MTA>] [-t <timeout>] [-v verbose]
Checks the number of messages in the mail queue supports multiple sendmail queues, qmail
Feedback/patches to support non-sendmail mailqueue welcome
-w
-c
-W
-C
-t
-M
-h
-V
-v
--warning
--critical
--Warning
--Critical
--timeout
--mailserver
--help
--version
--verbose
=
=
=
=
=
W < C
= debugging output
check_mrtg
Este comando tambin trabaja en local en la mquina que est ejecutando Nagios y permite monitorizar los ficheros de sucesos de MRTG; en concreto permite
monitorizar cualquiera de los parmetros que se vuelcan sobre dichos ficheros como por ejemplo conexiones, carga del procesador, entrada, salida, etctera.
Permite establecer umbrales que si se superan generan notificaciones.
This plugin will check either the average or maximum value of one of the two variables recorded in an MRTG log file.
Usage:check_mrtg -F log_file -a <AVG | MAX> -v variable -w warning -c critical [-l label] [-u units] [-e expire_minutes] [-t timeout] [-v]
check_mrtgtraf
Este comando permite comprobar el servicio UPS en un equipo remoto y establecer umbrales para, segn el valor devuelto, disparar una advertencia, un error
severo o nada.
This plugin will check the incoming/outgoing transfer rates of a router, switch, etc recorded in an MRTG log. If the newest log entry is older than
<expire_minutes>, a WARNING status is returned. If either the incoming or outgoing rates exceed the <icl> or <ocl> thresholds (in Bytes/sec), a CRITICAL
status results. If either of the rates exceed the <iwl> or <owl> thresholds (in Bytes/sec), a WARNING status results.
Usage check_mrtgtraf -F <log_file> -a <AVG | MAX> -v <variable> -w <warning_pair>-c <critical_pair> [-e expire_minutes] [-t timeout] [-v]
Options: -h, help
Print detailed help screen
-V, version
Print version information
-F, filename=STRING
File to read log from
-e, expires=INTEGER
Minutes after which log expires
-a, aggregation=(AVG|MAX)
Test average or maximum
-w, warning
Warning threshold pair <incoming>,<outgoing>
-c, critical
Critical threshold pair <incoming>,<outgoing>
Notes: - MRTG stands for Multi Router Traffic Grapher. It can be downloaded from
http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/mrtg.html
- While MRTG can monitor things other than traffic rates, this
plugin probably won't work with much else without modification.
- The calculated i/o rates are a little off from what MRTG actually
reports.
I'm not sure why this is right now, but will look into it
check_nagios
Este comando se ejecuta en la mquina que est ejecutando Nagios y permite comprobar que el archivo de sucesos del sistema de monitorizacin no sea ms
antiguo de lo que se especifique.
Usage:check_nagios -F <status log file> -e <expire_minutes> -C <process_string>
Options: -h, help
Print detailed help screen
-V, version
Print version information
-F, filename=FILE
Name of the log file to check
-e, expires=INTEGER
Minutes aging after which logfile is considered stale
-C, command=STRING
Substring to search for in process arguments
-v, verbose
Show details for command-line debugging
check_rpc
Este comando comprueba si un servicio RPC remoto est registrado y funcionando correctamente. Utiliza para ello llamadas a rpcinfo.
check_sensors
Este comando funciona en la mquina local donde se ejecuta Nagios; necesita de paquetes adicionales instalados en el sistema de monitorizacin y su funcin es
comprobar el estado del hardware de la mquina.
check_smtp
Este comando permite conocer el estado de un servicio SNMP de una mquina remota. Realiza conexiones a este servicio para averiguar la informacin
necesaria.
check_snmp
Este comando permite conocer el estado de una mquina remota mediante la consulta a su agente SNMP. Utiliza para ello el protocolo SNMP en cualquiera de sus
versiones 1, 2 3.
check_ssh
Este comando permite controlar si el servicio SSH de una mquina remota est activo o no. Realiza peticiones a este servicio para obtener la informacin
necesaria.
check_swap
Este comando funciona en local, en la mquina donde est instalado Nagios. Permite monitorizar el tamao de la memoria de intercambio utilizada y generar
advertencias o errores cuando este valor sobrepaso los umbrales establecidos.
check_tcp
Este comando permite realizar peticiones arbitrarias a conexiones (sockets) TCP contra sistemas remotos. Por tanto permite monitorizar cualquier servicio que
utilice sockets TCP para recibir peticiones.
Definir como comando:
define command{
command_name
command_line
}
check_tcp
$USER $/check_tcp -H '$HOSTADDRESS$' -p $ARG $
define service{
use
host_name
service_description
check_command
}
generic-service
nombre_host
telnet
check_tcp!
check_time
Este comando permite comprobar si el servicio de hora (TIME) est funcionando en una mquina remota. Realiza conexiones a este servicio para obtener la
informacin.
check_udp
Este comando permite realizar peticiones arbitrarias a conexiones (sockets) UDP contra sistemas remotos. Por tanto permite monitorizar cualquier servicio que
utilice sockets UDP para recibir peticiones.
check_ups
Este comando permite monitorizar el estado del servicio UPS en mquinas remotas; para ello hace peticiones a este servicio. Necesita paquetes adicionales
instalados en el sistema de monitorizacin.
check_users
Este comando permite conocer el nmero de usuarios conectados actualmente en el sistema local, en el que se est ejecutando Nagios. Genera advertencias y
errores cuando el nmero supera el umbral fijado.
check_vsz
Este comando permite comprobar que el tamao en memoria de un programa determinado no sea mayor de un lmite fijado. Cuando se produzca el caso
contrario se generarn advertencias y/o errores.
urlize
Este comando permite, usando con otro comando, que la salida de este ltimo se pueda mostrar en la pantalla de un navegador en formato HTML como un
enlace hipertexto navegable.
Usage:urlize <url> <plugin> <arg1> <argN>
Options: -h, help
Print detailed help screen
-V, version
Print version information
Examples: Pay close attention to quoting to ensure that the shell passes the expected data to the plugin. For example, in:
urlize http://example.com/ [http://example.com/] check_http -H example.com -r 'two words'
the shell will remove the single quotes and urlize will see:
check_xml_url.sh
Esto lo necesite cuando tuve que XML de diferentes Webservices tengan la sintaxis correcta, para asi saber si habia una falla en los mismos.
check_xml_url.sh
#!/bin/bash
wget -q -O - --user-agent="Mozilla/ .0
EXIT_STATUS=$?
0. ; rv:
.0
Gecko/ 0 00 0
Firefox/
.0" $
| xmlstarlet val -
>/dev/null
>/dev/null
Ejemplo de configuracin :
check_command
check_command
check_xml_url!https://wsaa.afip.gov.ar/ws/services/LoginCms?wsdl
check_xml_url!https://serviciosjava.afip.gob.ar/wsmtxca/services/MTXCAService?wsdl
check_xml_afip.php
En Argentina tenemos un servicio de Factura Electronica, si queremos verificar su status, deberemos consumir este WebService
https://serviciosjava.afip.gob.ar/wsmtxca/services/MTXCAService/dummy [https://serviciosjava.afip.gob.ar/wsmtxca/services/MTXCAService/dummy] , del cual
obtendremos esta respuesta que debemos parsear :
<?xml version=" .0" encoding="UTF- "?>
<ns :dummyResponse xmlns:ns ="http://impl.service.wsmtxca.afip.gov.ar/service/">
<appserver>OK</appserver>
<authserver>OK</authserver>
<dbserver>OK</dbserver>
</ns :dummyResponse>
check_xml_afip.php
#!/usr/bin/php
<?php
/*
SimpleXMLElement Object
[appserver] => OK
[authserver] => OK
[dbserver] => OK
*/
$xml_cae_dummy = simplexml_load_file 'https://serviciosjava.afip.gob.ar/wsmtxca/services/MTXCAService/dummy' ;
$appserver_status
$authserver_status
$dbserver_status
= $xml_cae_dummy->appserver;
= $xml_cae_dummy->authserver;
= $xml_cae_dummy->dbserver;
if
check_nfe_status
En Brasil se utiliza la Nota Fiscal eletrnica, este plug esta en desarrollo. Por eso no lo publico, hay un desarrollo en java para realizar estos chequeo :
http://www.vivaolinux.com.br/dica/Plugin-NFe-2.00-Nagios [http://www.vivaolinux.com.br/dica/Plugin-NFe-2.00-Nagios]
check_heartbeat
Script simple para chequear el estado de HeartBeat y sus nodos, muy til por cierto
check_heartbeat
#!/bin/bash
# Author: Emmanuel Bretelle
# Date:
/0 / 0 0
# Description: Retrieve Linux HA cluster status using cl_status
# Based on http://www.randombugs.com/linux/howto-monitor-linux-heartbeat-snmp.html
#
# Autor: Stanila Constantin Adrian
# Date: 0/0 / 00
# Description: Check the number of active heartbeats
# http://www.randombugs.com
# Get program path
REVISION= .
PROGNAME=`/bin/basename $0`
PROGPATH=`echo $0 | /bin/sed -e 's,[\\/][^\\/][^\\/]*$,,'`
NODE_NAME=`uname -n`
CL_ST='/usr/bin/cl_status'
#nagios error codes
#. $PROGPATH/utils.sh
OK=0
WARNING=
CRITICAL=
UNKNOWN=
usage
{
echo "\
Nagios plugin to heartbeat.
Usage:
$PROGNAME
$PROGNAME [--help | -h]
$PROGNAME [--version | -v]
Options:
--help -l
--version -v
"
}
help
}
{
print_revision $PROGNAME $REVISION
echo; usage; echo; support
check_systemimager
Script para chequear que nuestras imgenes estn actualizadas a la fecha
check_systemimager
#!/usr/bin/php -q
# Sergio Cayuqueo <[email protected]>
# http://cayu.com.ar
<?php
$lista_imagenes = shell_exec "si_lsimage --verbose|grep Image" ;
$lista_imagenes = preg_split "/[\n]+/",$lista_imagenes ;
$fecha_actual = date 'Y.m.d' ;
check_dba_2pc_pending
Chequeo de Distributed transactions de Oracle, por medio de SSH.
check_dba_2pc_pending
#!/usr/bin/perl
open SQLPLUS_SELECT, "sqlplus -S \"/ as sysdba\" @/usr/local/bin/dba_ pc_pending_select.sql |"
while <SQLPLUS_SELECT> {
chomp $_ ;
if length $_ >
{
$select = $_;
}
}
close SQLPLUS_SELECT;
El script sql
SET pagesize 0
SET trimspool ON
SET headsep off
SELECT LOCAL_TRAN_ID FROM dba_ pc_pending;
exit;
check_microstrategy
Chequear que el servicio de MicroStrategy este corriendo
define command {
command_name
command_line
register
check_microstrategy
$USER $/check_microstrategy.sh $HOSTADDRESS$
}
define service {
service_description
use
check_command
max_check_attempts
check_interval
retry_interval
active_checks_enabled
check_period
notification_period
notification_options
notifications_enabled
register
}
Servicio MicroStrategy
generic-service
check_microstrategy
x
x
r,c
check_microstrategy.sh
check_microstrategy.sh
#!/bin/sh
SALIDA_SSH=`ssh $ -l monitoreo "sudo /msis/var/opt/MicroStrategy/bin/mstrctl -s IntelligenceServer gs | grep state|
if [ $SALIDA_SSH="running" ]
then
echo "OK - Proceso MicroStrategy corriendo"
exit 0;
else
echo "CRITICAL - Hay un problema con el proceso MicroStrategy"
fi
count_archlogs.pl
count_archlogs.pl
#!/usr/bin/perl
use strict;
use warnings;
my $ORACLE_SID=$ARGV[0];
sub get_sorted_files {
my $path = shift;
opendir my $dir , $path or die "no puedo abrir $path: $!";
my %hash = map {$_ => stat $_ [ ] || undef} # saltar listas vacias
map { "$path$_" }
grep { m/.dbf/i }
readdir $dir;
closedir $dir;
return %hash;
}
my %files = get_sorted_files "/oracle/arclog/".$ORACLE_SID."/" ;
my $count = keys %files;
if $count < 0 {
print "OK - Encontrados $count redo logs en /oracle/arclog/".$ORACLE_SID."/|'redologs'=$count\n";
exit 0;
} else {
print "CRITICAL - Encontrados $count redo logs en /oracle/arclog/".$ORACLE_SID."/|'redologs'=$count\n";
exit ;
}
select_count.sh
Si necesito alertar cuando crecen X registros en una tabla Oracle, en el dia de hoy se puede ejecutar esto :
echo -e "set head off\nset pagesize 0\nSELECT COUNT DATA
}'
case "$DATABASE_STATUS" in
MOUNTED
start
echo "CRITICAL - Los tablespaces de la base de datos estan $DATABASE_STATUS -" `date '+DATE: %m/%d/%y TIME:%H:%M:%S'`
exit ;
;;
OPEN
echo "OK - Los tablespaces de la base de datos estan $DATABASE_STATUS -" `date '+DATE: %m/%d/%y TIME:%H:%M:%S'`
exit ;
;;
*
echo "CRITICAL - Hay algun error con la base de datos $DATABASE_STATUS -" `date '+DATE: %m/%d/%y TIME:%H:%M:%S'`
exit
esac
check_snmp_ifstatus_v3.pl
Version modificada por mi del script check_snmp_ifstatus.pl para que pueda consultar por medio de snmp v3
check_snmp_ifstatus_v3.tgz
check_oracle_tablespace.sh
Version modificada por mi del script check_oracle_tablespace.sh para no tener que usar oratab y conectarse con el sqlplus sin necesidad de tnsnames.ora,
ademas soporta perfdata para graficarla en pnp4nagios
Ej ./check_oracle_tablespace.sh -s SID -H 10.1.1.98 -P 1521 -w 91 -c 96
Si se quiere saltear un tablespace, ej el UNDO agregamos al final de la query :
AND fs.TABLESPACE_NAME NOT LIKE '%UNDO%'
Tengo que agregar una opcin para agregarle a la linea de comandos que sea ignorar table space
check_oracle_tablespace.sh.gz
ssl-cert-check.sh
Script para chequear validez del certificados SSL
ssl-cert-check.sh -c Certificado.crt -n -x
ssl-cert-check.sh.gz
Notas importantes
Estos son los comandos que acompaan a Nagios y que deberan ser invocados cada uno con sus respectivos parmetros y su forma de ejecucin. Para saber
ms acerca de estos datos, necesarios para el uso de los comandos, se pueden invocar en lnea de comandos con el parmetro h lo que mostrar en la pantalla
una ventana de descripcin del comando, los parmetros que usa y cmo se invoca. Recordar que los ejecutables de los comandos se encuentran dentro del
directorio libexec de la instalacin de Nagios.
Archivos y directorios a tener en cuenta al realizar un backup
Script de inicio de Nagios
/etc/init.d/nagios
Directorio de Nagios
/usr/local/nagios
Sitios de consultas
Sitios de donde descargar plugins y agregados para Nagios
Paquete Standard de plugins
http://nagiosplug.sourceforge.net/ [http://nagiosplug.sourceforge.net/]
Plugins con soporte SNMP
http://nagios.manubulon.com/ [http://nagios.manubulon.com/]
Plugins SAP CCMS
http://sourceforge.net/projects/nagios-sap-ccms/ [http://sourceforge.net/projects/nagios-sap-ccms/]
Interfaz alternativa de Nagios para visualizar en BlackBerry
http://nagiosmobile.sourceforge.net/ [http://nagiosmobile.sourceforge.net/]
Plugins para chequeos en BlackBerry
http://www.1ight.fr/plugins/BlackBerry/ [http://www.1ight.fr/plugins/BlackBerry/]
Plugins de chequeo de Lotus Notes
http://barbich.net/ [http://barbich.net/]
Servidor de proyectos Nagios, plugins, templates etc en etapa de desarrollo
http://www.nagiosforge.org/ [http://www.nagiosforge.org/]
Servidor de proyectos Nagios, plugins, templates etc
http://www.nagiosexchange.org [http://www.nagiosexchange.org]
Agregado de chequeo de eventos Nagios para firefox
https://addons.mozilla.org/en-US/firefox/addon/3607 [https://addons.mozilla.org/en-US/firefox/addon/3607]
http://code.google.com/p/nagioschecker/ [http://code.google.com/p/nagioschecker/]
Visor de sucesos para el escritorio (Linux, Windows)
http://sourceforge.net/projects/nagstamon [http://sourceforge.net/projects/nagstamon]
[http://www.monografias.com/trabajos95/recursos-red-y-
TESIS Implementacin de NOC para el monitoreo de Servicios e Infraestructura de Redes para el Banco de Loja, basado en Software Libre, Sols lvarez , Camilo
Javier
http://dspace.utpl.edu.ec/bitstream/123456789/9187/1/SOLIS%20ALVAREZ%20CAMILO%20JAVIER%2028-03-2014.pdf
[http://dspace.utpl.edu.ec/bitstream/123456789/9187/1/SOLIS%20ALVAREZ%20CAMILO%20JAVIER%2028-03-2014.pdf]
TESIS GESTIN Y MONITOREO DE UN LABORATORIO CON HERRAMIENTAS OPEN SOURCE, Ramos Galicia, Juan Christian
http://132.248.52.100:8080/xmlui/bitstream/handle/132.248.52.100/2815/Tesis.pdf?sequence=1
[http://132.248.52.100:8080/xmlui/bitstream/handle/132.248.52.100/2815/Tesis.pdf?sequence=1]
http://www.ptolomeo.unam.mx:8080/xmlui/handle/132.248.52.100/2815 [http://www.ptolomeo.unam.mx:8080/xmlui/handle/132.248.52.100/2815]
Notas
Inicio del documento Junio de 2007 y a lo largo del tiempo le fui agregando cosas que descubri a lo largo de mi trabajo
Recientemente agregu algunas correciones al 29 de Marzo de 2011
Recientemente agregu algunas correciones al 04 de Abril de 2012
Recientemente agreg contenido al 07 de Diciembre de 2012
Este documento se puede utilizar libremente, lo nico que pido es que citen la fuente si van a utilizarlo en obras derivadas
Si estn leyendo este documento desde un pdf u odt, puede encontrar los archivos adjuntos en su fuente original
http://wiki.cayu.com.ar/doku.php?id=manuales:nagios [http://wiki.cayu.com.ar/doku.php?id=manuales:nagios]
Actualmente estoy trabajando por escribir una versin en Portugues (va algo lenta la traduccin) y posiblemente comienze otra en Italiano :
http://wiki.cayu.com.ar/doku.php?id=manuales:nagios:portugues [http://wiki.cayu.com.ar/doku.php?id=manuales:nagios:portugues]
Pueden encontrar mas sobre mi o hacerme consultas via http://cayu.com.ar [http://cayu.com.ar]
Este documento constituye una referencia para los administradores del sistema de monitoreo Nagios, y no tiene por objeto reemplazar a los manuales provistos
con el producto. Es sumamente recomendable efectuar lectura previa de dichos manuales para poder comprender los conceptos utilizados en este documento, as
como para realizar cualquier tarea de administracin sobre el sistema.
Sergio Cayuqueo [http://cayu.com.ar] 2014/04/28 11:32