You are on page 1of 151

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 existe podemos utilizar un equipo 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 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 equipos como servidores
corriendo diferentes sistemas operativos, routers de los cuales dependen varios
equipos. Obtener informacin de los mismos como estado en red, tiempo
arriba, puertos abiertos, servicios yprocesos corriendo, carga de C!, carga
de memoria fsica, carga dememoria virtual, espacio en disco, interfaces de red
activas. 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.
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
otificaciones y alertas en caso de incidente
Information !ec"nology Infrastructure #i$rary % I!I#
Situndonos en el marco ITIL (Biblioteca de Infraestructura de Tecnologas de
Informacin) para la provisin de servicios TI con calidad, los tres objetivos claves
de la Gestin de Servicios son:
Alinear los servicios informticos con las necesidades actuales y futuras
Mejorar la calidad de los servicios informticos entregados
Reducir el coste a largo plazo del suministro de servicios
&Como encuandra agios en I!I#'
En ITIL, los consultores acompaan a las empresas a disear y/o implementar sus
procesos. Tambin realizan GAPs para evaluar cuan cerca se encuentra la
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
(esti)n de la disponi$ilidad
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.
!iempo resoluci)n de Incidencias
El tiempo de identificacin de un problema mejora notablemente con la
utilizacin de Nagios
Su meta es asegurar que el administrador identifique el problema
antes que lo hagan los usuarios.
La supervisin y anlisis de todos los servicios crticos y la
notificacin correcta es clave para reducir el tiempo de resolucin
Los informes de incidencias y performance ayudarn en la prediccin
de problemas y en identificar la necesidad de crecimientos.
Mejorando la Gestion de capacidad, estando directamente conectado
con el processo de ITIL "Capacity Management
Ciclo de un incidente
Administracion de la capacidad
Aplicando las normas I!I#
Alinear los servicios de TI con las necesidades de la empresa (el negocio),
actuales y futuras.
Mejorar la calidad de los servicios de TI.
Reducir los costos por la proveedura de servicios de TI en el mediano y
largo plazos.
Mejora de rendimiento de la inversin de TI.
Se mide el sistema de TI de la organizacin evaluando los procesos de
Soporte Tcnico y Entrega de Servicios comparndolos con las Mejores
Prcticas.
O$*etivos
uestras 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
O$*etivos a largo pla+o
CM,- -i$lioteca para organi+ar el servicio de !I
.elaciones de muc"os a muc"os
Inventario de e/uipos
Detalle de responsable tcnico
IP
Software Instalado
-ase de IP
Detalle de las subredes
Equipos asociados con sus ip y MAC si coresponde
#istado de reglas de ruteo indivuales por e/uipo0 en caso de /ue
e1istan
-ase de Certificados SS#
Certificado con fecha de emisin y fecha de caducidad
Detalles tecnicos y equipos donde se utilizan los certificados
-ase de Proovedores0 Contratos y Contactos
Contactos determinados por tipo, y detalles de como contactarlos
Detalles de un proovedor que presta servicios y le compramos
equipos
Contratos detallados, con servicios y equipos asociados a los que
aplica
-ase de 2suarios y Contrase3as
Nombre de Usuario, Contrasea y equipo u aplicacin asociado
ecesario para enmarcar en I!I#
Historico de modificacines
Inventario de los activos del Departamento de IT
Estructura del inventario y relaciones entre los diferentes elementos
Manejo de Licencias
Gestin de problemas, incidentes
Quejas y reclamos
Posibilidad de adjuntar documentacin de cada item presente
SLA basados en contratos y horarios
Inventariado y gestion de Incidencias
&Como terminamos de cu$rir los puntos anteriores'
Para la gestion de inventario y de incidencias presentadas con los equipos y
servicios inventariados se puede implementar GLPI
Ademas se busca una herramienta que se integre y complemente al
el sistema de ivnentario, como FusionInventory, que es una variante de
OCS-Inventory, que se integra completamente con el Software GLPI
Descripcin
4ue se puede "acer con agios
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.
4uien va a usar agios
Administradores de Redes con alto conocimiento tecnico
Operadores con minimo conocimiento tecnico de la situacion, o conocimiento
puntual de algun servicio
Pudiedo avisar y ayudar a determinar posibles causas de efectos
producidos
Equipos de desarrollo
Coordinadores de Mesas de Ayuda
Areas relacionadas
4ue 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
.e/uerimientos Operativos
Plan de accin bien diagramado
Personal con conocimiento medio/avanzado en redes
impacto_urgen
cia.dia.gz
.ecursos tecnol)gicos
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
!areas
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 Sitio web
Perl
Interprete para
el lenguaje de
script Perl
http://www.perl.org
Net::SNMP
Modulo
de Perlpara
consultas
SNMP
http://search.cpan.org/dist/Net-SNMP
Crypt::DES
Modulo
de Perlpara
encripcin
DES!
necesario para
consultas
SNMP"#
http://search.cpan.org/$dparis/Crypt-DES/
Digest::%M&C
'eyed-
%ashing (or
Message
&uthentication
http://search.cpan.org/dist/Digest-%M&C/
Digest::S%&) Perl inter(ace
to the S%&-)
http://search.cpan.org/dist/Digest-S%&)/
algorith*
++D,ool
-tilitario para
generacin de
gr.(icas de red
y ade*.s
su *dulo de
integracin
con el
lenguajePerl
http://oss.oeti/er.ch/rrdtool
0li1
2i1rer3a de
co*presin
utili4ada por
las utilidades
gra(icas
http://www.g4ip.org/4li1/
2i15PE6
2i1rer3a para
e7portacin
jpg
http://www.ijg.org/
2i1PN6
2i1rer3a para
e7portacin
png
http://www.li1png.org/pu1/png/
8reetype9
2i1rer3a para
procesa*iento
de (uentes
http://www.(reetype.org/
6raph"i4
-tilitario para
generacin de
gra(icas
http://www.graph"i4.org/
:8ree;<-li1s
2i1rer3as
gr.(icas
generales
http:///oala.ilog.(r/lehors/7p*.ht*l
&pache 9 Ser"idor =e1 http://httpd.apache.org/
P%P
Interprete de
lenguaje de
script
http://www.php.net
MyS>2
Siste*a de
1ase de datos
http://www.*ys?l.co*
Post(i7
SM,P para
en"iar *ail
http://www.post(i7.org/
6D
2i1rer3a para
generacin de
(or*atos
gra(icos
http://www.li1gd.org/
Nag"is
&diti"o para la
generacin de
diagra*as
dina*icos
http://www.nag"is.org/
PNP@Nagios
&diti"o para la
generacin de
gr.(icos
estad3sticos y
reportes
"isuales
http://www.pnp@nagios.org/
NDA &gregado para
articular
http://www.nagios.org
Nagios con
MyS>2
Plugins
Plugins de
che?ueo
standard de
Nagios
http://www.nagios.org
SNMP Plugins
Plugins para la
integracin de
che?ueos
SNMP de
Nagios
http://nagios.*anu1ulon.co*/
Nagios
Sitio de
descarga
o(icial
http://www.nagios.org
Nagios>2
%erra*ienta
"isual de
con(iguracin
de Nagios "ia
=e1
http://www.nagios?l.org/
Do/uwi/i
%erra*ienta
de
docu*entaci
n cola1orati"a
http://www.do/uwi/i.org/
Syslog-Ng
2ogueo de
e"entos del
siste*a
http://www.1ala1it.co*/networ/-security/syslog-ng/
SN&+E
&gente Syslog
para clientes
=indows
http://www.intersectalliance.co*/projects/inde7.ht*l
M' 2i"estatus
&diti"o para
o1tener los
datos de
Nagios
en Bi"o "ia
Soc/et C*uy
Dtil para
a1andonar
NDAE
http://*athias-/ettner.de/chec/*/Fli"estatus.ht*l
6no/ii
&plicacin de
inter(a4 para
celulares y
*ode*s #6!
para la
reali4acin de
lla*adas y
alertas SMS
http://gno/ii.org
,hru/
Inter(a4
alternati"a
para Nagios!
con *uchas
(unciones
e7tras!
1asado en M'
2i"estatus
www.thru/.org
Inter(aceta1leF"#t
Plugin para
detectar y
che?uear las
inter(aces de
un +outer
http://www.tontonitch.co*/
Chec/ ,SM
Plugin para
hacer
che?ueos
generales en
,i"oli ,SM
https://githu1.co*/os/lil/nagios-*isc
Chec/ Iostat
Estadisticas y
alertas en 1ase
a los datos de
iostat
http://sysengineers.wordpress.co*/9G)G/GH/9I/chec/Fiosta
t-pl-"ersion-G-J-I/
Cliente Aracle
Kasic
S>2LPlus
Cliente de
Aracle para
reali4ar los
che?ueos
http://www.oracle.co*/technetwor//data1ase/(eatures/insta
nt-client/
E"entd1
Integracin de
che?ueos de
Syslog
https://www.netways.org/projects/e"entd1
%ighchart (or
Nagios
6r.(icos de
PNP@Nagios
en&5&:
http://source(orge.net/projects/highchart(ornag/
Nota:
Hay algunos plugins que no estan mas disponibles en su sitio, aca los incluyo
nagios_lotus-blackberry.tgz
,escarga y compilaci)n
En este apartado nos concentraremos en la descarga y compilacin de los
diferentes paquetes bajados en formato de codigo fuente.
agios
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-3.0.6.tar.gz
root@localhost nagios-3.0.6 # ./configure
*** Configuration summary for nagios 3.0.6 !-0-!00" ***#
$eneral %ptions#
-------------------------
&agios executa'le# nagios
&agios user/group# nagios(nagios
Comman) user/group# nagios(nagios
*m'e))e) +erl# no
*vent ,ro-er# yes
.nstall /0prefix1# /usr/local/nagios
2oc- file# /0prefix1/var/nagios.loc-
Chec- result )irectory# /0prefix1/var/spool/chec-results
.nit )irectory# /etc/rc.)/init.)
3pache conf.) )irectory# /etc/http)/conf.)
4ail program# /'in/mail
5ost %6# linux-gnu
7e' .nterface %ptions#
------------------------
5842 9:2# http#//localhost/nagios/
C$. 9:2# http#//localhost/nagios/cgi-'in/
8raceroute ;use) 'y 73+<# /'in/traceroute
:evie= the options a'ove for accuracy. .f they loo- o-ay(
type >ma-e all> to compile the main program an) C$.s.
root@localhost nagios-3.0.6 # ma-e all
*** Compile finishe) ***
.f the main program an) C$.s compile) =ithout any errors( you
can continue =ith installing &agios as follo=s ;type >ma-e>
=ithout any arguments for a list of all possi'le options<#
ma-e install
- 8his installs the main program( C$.s( an) 5842 files
ma-e install-init
- 8his installs the init script in /etc/rc.)/init.)
ma-e install-comman)mo)e
- 8his installs an) configures permissions on the
)irectory for hol)ing the external comman) file
ma-e install-config
- 8his installs *634+2** config files in /usr/local/nagios/etc
?ou>ll have to mo)ify these sample files 'efore you can
use &agios. :ea) the 5842 )ocumentation for more info
on )oing this. +ay particular attention to the )ocs on
o'@ect configuration files( as they )etermine =hat/ho=
things get monitore)A
ma-e install-=e'conf
- 8his installs the 3pache config file for the &agios
=e' interface
*** 6upport &otes *******************************************
.f you have Buestions a'out configuring or running &agios(
please ma-e sure that you#
- 2oo- at the sample config files
- :ea) the 5842 )ocumentation
- :ea) the C3Ds online at http#//===.nagios.org/faBs
'efore you post a Buestion to one of the mailing lists.
3lso ma-e sure to inclu)e pertinent information that coul)
help others help you. 8his might inclu)e#
- 7hat version of &agios you are using
- 7hat version of the plugins you are using
- :elevant snippets from your config files
- :elevant error messages from the &agios log file
Cor more information on o'taining support for &agios( visit#
http#//===.nagios.org/support/
*************************************************************
*n@oy.
root@localhost nagios-3.0.6 # ma-e fullinstall
root@localhost nagios-3.0.6 # ma-e install-config
Para correr el daemon del servicio nagios y realizar tareas de administracin y
configuracin sobre el, se debi crear el usuarionagios 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 # groupa)) nagios
root@localhost # usera)) nagios -) /usr/local/nagios -$ nagios
root@localhost # cho=n nagios#nagios -: /usr/local/nagios
Para dejar corriendo el servicio deberemos ejecutar :
"etc"init#d"nagios start
Luego deberemos bajarnos el paquete de plugins bsico de Nagios y
descomprimirlo para luego compilarlo
root@localhost # tar xvfzp nagios-plugins-.E.3.tar.gz
root@localhost nagios-plugins-.E.3 # ./configure
root@localhost nagios-plugins-.E.3 # ma-e all
root@localhost nagios-plugins-.E.3 # ma-e install
root@localhost nagios-plugins-.E.3 # ma-e install-root
Con esto ya tendremos un Nagios instalado y funcional en modo bsico.
PP5agios
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.E.!.tar.gz
root@localhost pnp-0.E.! # ./configure
*** Configuration summary for pnp 0.E.! 0--!00" ***
$eneral %ptions#
------------------------- -------------------
&agios user/group# nagios nagios
.nstall )irectory# /usr/local/nagios
5842 Fir# /usr/local/nagios/share/pnp
Config Fir# /usr/local/nagios/etc/pnp
+ath to rr)tool# /usr/'in/rr)tool ;Gersion .!.!H<
::Fs +erl 4o)ules# C%9&F ;Gersion .!0!H<
::F Ciles store) in# /usr/local/nagios/share/perf)ata
processIperf)ata.pl 2ogfile# /usr/local/nagios/var/perf)ata.log
+erf)ata files ;&+CF< store) in#
/usr/local/nagios/var/spool/perf)ata/
:evie= the options a'ove for accuracy. .f they loo- o-ay(
type >ma-e all> to compile.
root@localhost pnp-0.E.! # ma-e all
root@localhost pnp-0.E.! # ma-e fullinstall
,O2tils
El generador de graficas agvis necesita acceder a los datos queagios genera,
una de las formas de acceder a los mismos es queagios almacene sus datos
dentro de una base de datos MyS4# ya que por defecto lo hace en archivos de
texto, para que agios pueda hacer eso, deberemos instalar el modulo ,O que
viene dentro del paquete ,O2tils descargable via el sitio web de agios. Este
mdulo es el que se encarga de generar las consultas en formato MyS4#, que son
cargadas sobre un socket El proceso ,O6,- corriendo como daemon lee de ese
socket y carga los datos en una base de datosMyS4#.
root@localhost # tar xvfzp n)outils-.E'J.tar.gz
root@localhost n)outils-.E'J # ./configure
*** Configuration summary for n)outils .E'J 0-3-!00J ***#
$eneral %ptions#
-------------------------
&F%!F, user# nagios
&F%!F, group# nagios
:evie= the options a'ove for accuracy. .f they loo- o-ay(
type >ma-e> to compile the &F% utilities.
root@localhost n)outils-.E'J # ma-e
root@localhost n)outils-.E'J # c) )'
root@localhost )' #./install)' -u nagios -p nagios -h localhost -)
nagios
Hay 4 componentes principales que inician las utilidades NDO:
1. NDOMOD Event Broker Module (Modulo de evento corredor)
2. LOG2NDO Utility
3. FILE2SOCK Utility
4. NDO2DB Daemon
El ,OMO, Event -ro7er Module
Las utilidades NDO incluyen un Nagios Even Broker Module (NDOMOD.O) que
exporta datos desde el demonio de nagios.
Asumiendo que nagios fue compilado con el Modulo Event Broker activado (esto es
por default), usted puede configurar que nagios cargue el modulo NDOMOD en
tiempo de ejecucion. Una vez que el modulo fue cargado por el daemon de nagios,
este puede acceder a todos los datos y logicamente presente el el proceso de
nagios que esta corriendo.
El modulo NDOMOD tiene designado exportar la configuracion, como informacion
variada de eventos en tiempo de ejecucion que ocurre en el proceso de monitoreo,
por el daemon de nagios. El modulo puede enviar esta informacion a un archivo
estandar, a un Socket Unix de Dominio o un a socket TCP.
El NDOMOD escribe la info en un formato que el demonio NDO2DB puede entender.
Si el NDOMOD esta escrito para un archivo de salida, usted puede configurarlo para
rotarlo periodicamente y/o procesarlo en otra maquina fisicamente (usando SSH,
etc.) y envia este contenido al daemon NDO2DB usando la utilidad FILE2SOCK (que
describiremos mas adelante).
#a utilidad #O(6,O
Esta es designada para permitir importar un historial de logs de nagios a una BD
via el NDO2DB daemon (describiremos luego). La utilidad trabaja enviando archivos
de logs histricos a un archivo estandar, un unix sock o un tcp sock en un formato
que NDO2DB daemon entienda. El NDO2DB daemon puede luego usarlo para
procesar la salida y almacenar en un archivo de log historico informandolo en una
BD.
#a utilidad FI#E6SOC8
Esta utilidad es muy simple, solo lee de un archivo estandar (o STDIN) y escribe
todo sobre un socket de dominio unix o un tcp socket. Estos datos son leidos y no
son procesados por nada, antes de ser enviados al socket.
El demonio ,O6,-
La utilidad es diseada para tomar los datos de salida de los componentes NDOMOD
y LOG2NDO y almacenarlos en una BD MySQL o BD PostgreSQL.
Cuando este inicia, el daemon NDO2DB crea un socket y espera que los clientes se
conecten. NDO2DB puede correr independientemente, bajo un demonio
multiproceso o bajo inetd (si esta usando un socket TCP).
Multiples clientes pueden conectarse al daemon NDO2DB y transmitir
simultneamente.
Instalaci)n
Una vez compilado el modulo ,O procederemos a instalarlo manualmente
cp src/ndomod%91:o /usr/local/nagios/$in/ndomod:o
Con esto copiaremos el modulo al directorio de ejecucin de $agios
cp config/ndomod:cfg /usr/local/nagios/etc
%e esta manera instalaremos la configuracin inicial del modulo
Igualmente lo haremos con el daemon ,O6,-
cp src/ndo6d$%91 /usr/local/nagios/$in/ndo6d$
Con esto copiaremos el daemon al directorio de ejecucin de $agios
cp config/ndo6d$:cfg /usr/local/nagios/etc
%e esta manera instalaremos la configuracin inicial del daemon
Configuraci)n
C:*38* .&F*K startItimeIi)x %& nagiosIhostchec-s ;startItime<L
C:*38* .&F*K startItimeIi)x %& nagiosIservicechec-s ;startItime<L
C:*38* .&F*K sche)ule)ItimeIi)x %& nagiosItime)eventBueue
;sche)ule)Itime<L
C:*38* .&F*K startItimeIi)x %& nagiosIhostchec-s ;startItime<L
C:*38* .&F*K startItimeIi)x %& nagiosIservicechec-s ;startItime<L
C:*38* .&F*K sche)ule)ItimeIi)x %& nagiosItime)eventBueue
;sche)ule)Itime<L
328*: 83,2* MnagiosIconfigfilevaria'lesM F:%+ .&F*K MinstanceIi)M L
3FF .&F*K MinstanceIi)M ; MinstanceIi)M ( MconfigfileIi)M <L
M8 #ivestatus
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.
Lamentablemente, sin embargo, ha NDO tambin algunas deficiencias graves:
Tiene una configuracin compleja.
Se necesita una (creciente) base de datos para ser administrado.
Se alimenta de una parte significativa de sus Recursos de la CPU, solo con el
fin de mantener la base estrictas disponibles.
Limpieza peridica de la base de datos puede colgar Nagios.
El futuro
Desde la versin 1.1.0, Check_MK ofrece un enfoque totalmente nuevo para
acceder a datos de estado y tambin histrico: Livestatus. As como NDO,
Livestatus hacer uso de la API de Nagios evento Broker y carga un mdulo binario
en su proceso de Nagios. Pero luego otros NDO, Livestatus no realiza escribir datos.
En su lugar, se abre un socket en la que pueden consultar los datos a demanda.
La toma permite enviar una solicitud de los servicios u otros datos y obtener una
respuesta inmediata. Los datos son directamente ledos de estructuras de datos
internas de Nagios. Livestatus no crea su propia copia de esos datos. A partir de la
versin 1.1.2 que tambin se pueden recuperar los datos histricos de los archivos
de registro a travs de Nagios Livestatus.
Esto es no slo un enfoque increblemente simple, si no tambin muy rpido.
Algunas ventajas son:
Otro entonces NDO, utilizando Livestatus no impone una carga mensurable
de su CPU para nada. Slo en el tratamiento de las consultas de una cantidad
muy pequea de la CPU es necesario. Pero eso ni siquiera se bloquear
Nagios.
Livestatus produce cero / S de disco cuando quering datos de estado.
Acceso a los datos es mucho ms rpido que analizar status.dat o consultar
una base de datos SQL.
No se necesita configuracin, base de datos no es necesaria. Ninguna
administracin es necesario.
Livestatus escalas bastante bien a las grandes instalaciones, incluso ms all
de 50,000 servicios.
Livestatus le da acceso a los datos especficos de Nagios no se dispone de
ningn otro mtodo disponible acceder al estado - por ejemplo, la informacin
del tiempo una multitud se encuentra actualmente en perodo de notificacin.
En el mismo tiempo, ofrece a sus Livestatus propio lenguaje de consulta que es
simple de entender, ofrece la mayora de la flexibilidad de SQL e incluso ms en
algunos casos. Es un protocolo rpido, ligero y no necesita un cliente binario.
Incluso, pueden obtener acceso a los datos sin ningn tipo de software especial de
ayuda.
Proceso de compilacin
root@linux# =get >http#//===.mathias--ettner.)e/)o=nloa)/m--livestatus-
..!.tar.gz>
root@linux# tar xzf m--livestatus-..!.tar.gz
root@linux# c) m--livestatus-..!
root@linux#
root@linux# ./configure
chec-ing for a ,6F-compati'le install... /usr/'in/install -c
chec-ing =hether 'uil) environment is sane... yes
chec-ing for a threa)-safe m-)ir -p... /'in/m-)ir -p
chec-ing for ga=-... ga=-
chec-ing =hether ma-e sets /;43N*<... yes
chec-ing for gOO... gOO
chec-ing for COO compiler )efault output file name... a.out
chec-ing =hether the COO compiler =or-s... yes
chec-ing =hether =e are cross compiling... no
chec-ing for suffix of executa'les...
chec-ing for suffix of o'@ect files... o
chec-ing =hether =e are using the $&9 COO compiler... yes
chec-ing =hether gOO accepts -g... yes
...
configure# creating ./config.status
config.status# creating 4a-efile
config.status# creating src/4a-efile
config.status# creating config.h
config.status# config.h is unchange)
config.status# executing )epfiles comman)s
root@linux# ma-e
gOO -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48
livestatusIso-3n)ingCil...
gOO -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48
livestatusIso-ClientDue...
gOO -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48
livestatusIso-Column.o ...
gOO -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48
livestatusIso-ColumnsCo...
gOO -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48
livestatusIso-ContactsC...
gOO -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48
livestatusIso-CustomGar...
gOO -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48
livestatusIso-CustomGar...
....
root@linux# ma-e install
4a-ing install in src
ma-ePQ# *ntering )irectory M/)/nagvis-)ev/src/m--livestatus-..!/src>
ma-eP!Q# *ntering )irectory M/)/nagvis-)ev/src/m--livestatus-..!/src>
test -z R/usr/local/'inR SS /'in/m-)ir -p R/usr/local/'inR
/usr/'in/install -c >unixcat> >/usr/local/'in/unixcat>
test -z R/usr/local/li'/m--livestatusR SS /'in/m-)ir -p
R/usr/local/li'/m--livestatusR
/usr/'in/install -c -m 6EE >livestatus.so> >/usr/local/li'/m--
livestatus/livestatus.so>
ranli' >/usr/local/li'/m--livestatus/livestatus.so>
/'in/sh /)/nagvis-)ev/src/m--livestatus-..!/install-sh -)
/usr/local/li'/m--livestatus
/usr/'in/install -c livestatus.o /usr/local/li'/m--livestatus
rm -f /usr/local/li'/m--livestatus/livestatus.so
ma-eP!Q# 2eaving )irectory M/)/nagvis-)ev/src/m--livestatus-..!/src>
ma-ePQ# 2eaving )irectory M/)/nagvis-)ev/src/m--livestatus-..!/src>
ma-ePQ# *ntering )irectory M/)/nagvis-)ev/src/m--livestatus-..!>
ma-eP!Q# *ntering )irectory M/)/nagvis-)ev/src/m--livestatus-..!>
ma-eP!Q# &othing to 'e )one for Minstall-exec-am>.
ma-eP!Q# &othing to 'e )one for Minstall-)ata-am>.
ma-eP!Q# 2eaving )irectory M/)/nagvis-)ev/src/m--livestatus-..!>
ma-ePQ# 2eaving )irectory M/)/nagvis-)ev/src/m--livestatus-..!>
Despues tenemos que especificar que Nagios cargue el archivo objeto
compilado livestatus#o, para eso debemos agregar a nagios.cfg:
'ro-erImo)uleT/usr/local/li'/m--livestatus/livestatus.o
/var/li'/nagios/r=/live
eventI'ro-erIoptionsT-
Y dentro del log de Nagios vamos a ver algo similar a esto
P!U6EE"66Q livestatus# Gersion ..! initializing. 6oc-et path#
>/var/li'
/nagios/r=/live>
P!U6EE"66Q livestatus# Create) 9&.K control soc-et at
/var/li'/nagios/r=/
live
P!U6EE"66Q livestatus# %pene) 9&.K soc-et /var/li'/nagios/r=/live
P!U6EE"66Q livestatus# successfully finishe) initialization
P!U6EE"66Q *vent 'ro-er mo)ule >/usr/local/li'/m--
livestatus/livestatus.o> initializ
e) successfully.
P!U6EE"66Q Cinishe) )aemonizing... ;&e= +.FTU363<
P!U6EE"66Q livestatus# 6tarting 0 client threa)s
P!U6EE"66Q livestatus# *ntering main loop( listening on 9&.K soc-et
Opciones del mdulo
Opcin
Valor por
default
Que significa
de1ug G
Set this to ) in order to *a/e 2i"estatus log each ?uery it e7ecutes
in nagios.log
*a7FcachedF*essages HGGGGG
2i"estatusM access to Nagios log(iles caches *essages in-*e*ory.
%ere you can set the *a7i*u* nu*1er o( cached *essages. Each
*essage ta/es a1out 9HG 1ytes Cin the current i*ple*entationE
*a7FresponseFsi4e )G@;HI<GG
2i"estatus constructs each response in-*e*ory 1e(ore sending it to
the clients. In order to a"oid a crash in case o( e7tensi"e ?ueries!
the *a7i*u* response si4e is li*ited. ,he de(ault li*it is )GGMK
nu*FclientFthreads )G
2i"estatus needs one thread (or each concurrent client connection.
& (i7ed nu*1er o( threads is created when Nagios starts
threadFstac/Fsi4e <HH#<
,his para*eter sets the si4e o( the stac/ o( each client thread. In
"ersions 1e(ore ).).@! the stac/ si4e was set to ; MKCpthread
de(aultE. ,he new de(ault "alue is <@ 'K. & s*all stac/ reduces
"irtual *e*ory usage and also sa"e CP- ressources. & too s*all
"alue will pro1a1ly crash your Nagios process! though. Nou ha"e
1een warned
?ueryFti*eout )GGGG
,his "alue is in *s. In order to a"oid 1eing hung 1y 1ro/en clients!
2i"estatus i*poses a li*it on the ti*e (or reading the ?uery (ro*
the client. & "alue o( G disa1les the ti*eout
idleFti*eout #GGGGG
,his "alue is in *s. 2i"estatus is waiting at *ost that *uch ti*e
(or the ne7t ?uery. & "alue o( G disa1les the ti*eout
Ejemplo de como agregar opciones
'ro-erImo)uleT/usr/local/li'/m--livestatus/livestatus.o
/var/run/nagios/r=/live )e'ugT
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
0
type T 9&2.68*F
port T 6UUJ
soc-etItype T stream
protocolT tcp
=ait T no
# limit to 00 connections per secon). Fisa'le 3 secs if a'ove.
cps T 00 3
# set the num'er of maximum allo=e) parallel instances of unixcat.
# +lease ma-e sure that this values is at least as high as
# the num'er of threa)s )efine) =ith numIclientIthrea)s in
# etc/m--livestatus/nagios.cfg
instances T U00
# limit the maximum num'er of simultaneous connections from
# one source .+ a))ress
perIsource T !U0
# Fisa'le 8C+ )elay( ma-es connection more responsive
flags T &%F*23?
user T nagios
server T /usr/local/nagios/'in/unixcat
serverIargs T /usr/local/nagios/var/r=/live
# configure the .+ a))ress;es< of your &agios server here#
# onlyIfrom T !J.0.0. 0.0.!0. 0.0.!0.!
)isa'le T no
1
agvis
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-.3.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 # chmo) 66E
/usr/local/nagios/share/nagvis/etc/nagvis.ini.php
root@localhost # chmo) JJU
/usr/local/nagios/share/nagvis/nagvis/images/maps
root@localhost # chmo) 66E
/usr/local/nagios/share/nagvis/nagvis/images/maps/*
root@localhost # chmo) JJU /usr/local/nagios/share/nagvis/etc/maps
root@localhost # chmo) 66E /usr/local/nagios/share/nagvis/etc/maps/*
root@localhost # chmo) JJU /usr/local/nagios/share/nagvis/var
root@localhost # chmo) 66E /usr/local/nagios/share/nagvis/var/*
ota so$re la generaci)n del Automap
Para una correcta generacin de la caracterstica Automap de Nagvis, primero es
necesario configurar todos los parents &osts para poder diagramar en tiempo real la
topologa de red. Ademas deberemos tomar los iconos de la
directiva statusmap'image que especificamos en el anexo &oste(tinfo, dicho icono
se almacena ennagios"s&are"images"logos, en formato gd2 entendible por el
binario statusmap.cgi para mostrarlo via web, pero no es entendible por nagvis
siendo que este lo busca en base al parametro statusmap'imageentonces
aprovechando que dicho icono esta en formato gd2 y en formato png copiaremos
en archivo en formato png al directorionagvis"images"s&apes pero cambiandole la
extensin de png a gd2, y entonces Nagvis lo vera como un gd2 siendo que
realmente es un PNG y debido a eso sera capas de mostrarlo.
ota agvis ;:< y template integrada con PP
Modificar el archivo nagvis"s&are"userfiles"templates"default#&over#&tmlde la
siguiente manera, agregando solo las dos lineas donde especificamos el tag img.
Vtable classTRhoverIta'leRW
VtrWVth colspanTR!RWPlangIo'@ItypeQ ;PlangIlastIstatusIrefreshQ#
PlastIstatusIrefreshQ<V/thWV/trW
VtrWVtd
classTRla'elRWVlabelWPlangInameQV/labelWV/tdWVtdWPo'@InameQV/tdWV/trW
VA-- ,*$.& service --W
VtrWVtd
classTRla'elRWVlabelWPlangIserviceI)escriptionQV/labelWV/tdWVtdWPservice
I)escriptionQV/tdWV/trW
VA-- *&F service --W
VtrWVtd
classTRla'elRWVlabelWPlangIaliasQV/labelWV/tdWVtdWPo'@IaliasQV/tdWV/trW
VA-- ,*$.& host --W
VtrWVtd colspanTR!R styleTRtext-align#centerLRWVimg
srcTR/nagios/pnp/in)ex.phpX
hostTPo'@InameQYsrvTI5%68IYsourceTYvie=T0Y)isplayTimageR =ithTR300pxR
heightTRHEpxRWV/tdWV/trW
VtrWVtd classTRspacerR colspanTR!RWV/tdWV/trW
VtrWVtd classTRla'elPo'@IstateQRWVlabelWPlangIstateQ
;PlangIstateItypeQ<V/labelWV/tdWVtd classTRstatePo'@IstateQRWPo'@IstateQ
;Po'@IstateItypeQ<Po'@IinI)o=ntimeQPo'@Iac-no=le)ge)QV/tdWV/trW
VtrWVtd
classTRla'elRWVlabelWPlangIoutputQV/labelWV/tdWVtdWPo'@IoutputQV/tdWV/tr
W
VtrWVtd
classTRla'elRWVlabelWPlangIperf)ataQV/labelWV/tdWVtdWPo'@Iperf)ataQV/tdW
V/trW
VtrWVtd
classTRla'elRWVlabelWPlangIcurrentIattemptQV/labelWV/tdWVtdWPo'@Icurrent
Ichec-IattemptQ/Po'@ImaxIchec-IattemptsQV/tdWV/trW
VtrWVtd
classTRla'elRWVlabelWPlangIlastIchec-QV/labelWV/tdWVtdWPo'@IlastIchec-QV
/tdWV/trW
VtrWVtd
classTRla'elRWVlabelWPlangInextIchec-QV/labelWV/tdWVtdWPo'@InextIchec-QV
/tdWV/trW
VtrWVtd
classTRla'elRWVlabelWPlangIlastIstateIchangeQV/labelWV/tdWVtdWPo'@IlastI
stateIchangeQV/tdWV/trW
VA-- *&F host --W
VtrWVtd classTRspacerR colspanTR!RWV/tdWV/trW
VtrWVtd
classTRla'elPo'@IsummaryIstateQRWVlabelWPlangIsummaryIstateQV/labelWV/td
WVtd classTRstatePo'@IsummaryIstateQRWPo'@IsummaryIstateQ
Po'@IsummaryIinI)o=ntimeQPo'@IsummaryIac-no=le)ge)QV/tdWV/trW
VtrWVtd
classTRla'elRWVlabelWPlangIsummaryIoutputQV/labelWV/tdWVtdWPo'@IsummaryI
outputQV/tdWV/trW
VA-- ,*$.& service --W
VtrWVtd colspanTR!R styleTRtext-align#centerLRWVimg
srcTR/nagios/pnp/in)ex.phpX
hostTPo'@InameQYsrvTPserviceI)escriptionQYsourceTYvie=T0Y)isplayTimageR
=ithTR300pxR heightTRHEpxRWV/tdWV/trW
VtrWVtd
classTRla'elRWVlabelWPlangIperf)ataQV/labelWV/tdWVtdWPo'@Iperf)ataQV/tdW
V/trW
VtrWVtd
classTRla'elRWVlabelWPlangIcurrentIattemptQV/labelWV/tdWVtdWPo'@Icurrent
Ichec-IattemptQ/Po'@ImaxIchec-IattemptsQV/tdWV/trW
VtrWVtd
classTRla'elRWVlabelWPlangIstateItypeQV/labelWV/tdWVtdWPo'@IstateItypeQV
/tdWV/trW
VtrWVtd
classTRla'elRWVlabelWPlangIlastIchec-QV/labelWV/tdWVtdWPo'@IlastIchec-QV
/tdWV/trW
VtrWVtd
classTRla'elRWVlabelWPlangInextIchec-QV/labelWV/tdWVtdWPo'@InextIchec-QV
/tdWV/trW
VtrWVtd
classTRla'elRWVlabelWPlangIlastIstateIchangeQV/labelWV/tdWVtdWPo'@IlastI
stateIchangeQV/tdWV/trW
VA-- *&F service --W
VA-- ,*$.& chil)s --W
VtrWVtd classTRspacerR colspanTR!RWV/tdWV/trW
VtrWVtd colspanTR!RW
Vtable =i)thTR00ZRW
VtrW
VA-- ,*$.& servicegroup --WVtd
classTRla'elRWVlabelWPlangIchil)InameQV/labelWV/tdWVA-- *&F
servicegroup --WVtd
classTRla'elRWVlabelWPlangIchil)InameQV/labelWV/tdWVtd
classTRla'elRWVlabelWPlangIstateQV/labelWV/tdWVtd
classTRla'elRWVlabelWPlangIoutputQV/labelWV/tdW
V/trW
VA-- ,*$.& loopIchil) --W
VtrWVA-- ,*$.& servicegroupIchil)
--WVtdWPo'@InameQV/tdWVA-- *&F servicegroupIchil)
--WVtdWPo'@InameQV/tdWVtd
classTRstatePo'@IsummaryIstateQRWPo'@IsummaryIstateQ
Po'@IsummaryIinI)o=ntimeQ
Po'@IsummaryIac-no=le)ge)QV/tdWVtdWPo'@IsummaryIoutputQV/tdWV/trW
VA-- *&F loopIchil) --W
V/tableW
V/tdWV/trW
VA-- *&F chil)s --W
V/tableW
MyS4#
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 # groupa)) mysBl
root@localhost # usera)) -g mysBl mysBl
root@localhost # gunzip V mysBl-G*:6.%&.tar.gz S tar -xvf -
root@localhost # c) mysBl-G*:6.%&
root@localhost # ./configure --prefixT/usr/local/mysBl
root@localhost # ma-e
root@localhost # ma-e install
root@localhost # cp support-files/my-me)ium.cnf /etc/my.cnf
root@localhost # c) /usr/local/mysBl
root@localhost # 'in/mysBlIinstallI)' --userTmysBl
root@localhost # cho=n -: root .
root@localhost # cho=n -: mysBl var
root@localhost # chgrp -: mysBl .
root@localhost # 'in/mysBl)Isafe --userTmysBl Y
Esta$lecer la contrase3a del usuario root
Por defecto, el usuario root no tiene asignada una contrasea y esto no es nada
recomendable, as que vamos a establecer una. Utilizamos el comando:
mys)ladmin *u root pass+ord ,contrase-adificil,
Cambiar `loquesea por la contrasea que desemos establecer, pero es importante
no olvidarse de teclear las comillas simples.
Comprobamos la nueva contrasea abriendo una sesin en mysql:
mys)l *u root *p
Nos pedir la contrasea, la tecleamos, y si todo es correcto entraremos en la
interfaz del cliente de MySQL, podemos teclear algn comando de mysql para
interactuar con el servidor, por ejemplo:
mys)l. s&o+ databases/
Nos mostrar las bases de datos que existan en el servidor, normalmente y si
acabamos de instalar, aparecern las bases de datos mysql y test.
Deberemos crear una base de datos llamada Nagios
mys)l.create database nagios/
Duery %N( ro= affecte) ;0.00 sec<
mysBlWsho= )ata'asesL
O----------O
S Fata'ase S
O----------O
S mysBl S
S nagios S
S test S
O----------O
3 ro=s in set ;0.0 sec<
Ahora deberemos crear un usuario con privilegios de SELECT, INSERT, UPDATE,
DELETE
C:*38* 96*: nagios .F*&8.C.*F ,? >nagios!3>L
Y darle privilegios sobre la base de datos nagios
mysBlW $:3&8 322 %& nagios.* 8% nagios@localhost .F*&8.C.*F ,? RnagiosRL
Duery %N( 0 ro=s affecte) ;0.00 sec<
mysBlW Buit
Tecleamos exit o quit para salir del programa cliente.
Pa/uetes
La instalacion de MyS4#, en el caso de tenerlo empaquetado en nuestra
distribucion Linux, es bastante simple
CentOS y .edHat
Para instalar el paquete mysql haremos uso de la utilidad de
sistemaup6date o yum
up0date mys)l*server
yum install mys)l*server
Y para dejar el servicio corriendo en segundo plano
service mys)ld start
Para configurar el arranque del servicio
Lo habitual ser que cuando arranque o se pare nuestro servidor tambien se inicie o
detenga el MySQL, para ello deberemos ejecutar:
c&1config 2level 34 mys)ld on
Esto activa el demonio mysqld en los runlevel 3 y 5, y lo detiene en el resto. Si
queremos comprobar el estado del servicio podemos utilizar lo siguiente:
c&1config 2list mys)ld
,e$ian
Para instalar mysql en Debian, deberemos ejecutar :
apt*get install mys)l*server mys)l*common mys)l*client
Para arrancar el servicio y dejarlo corriendo :
"etc"init#d"mys)l start
Y para setear su arranque por defecto :
update*rc#d *f mys)l defaults
ota SuSE
Para setear el arranque de un servicio en SuSE Linux deberemos ejecutar el
comando insserv *d nombre'servicio con el parametro *destariamos indicando una
opcion similar a defaults como en Debian.
Apac"e 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 &ttpd p&p p&p*common
Para dejar el servicio corriendo :
"etc"init#d"&ttpd start
,e$ian
Para instalar los paquetes de Debian, deberemos ejecutar :
apt*get install apac&e0 p&p4
Para dejar el servicio corriendo :
"etc"init#d"apac&e0 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
5 continuacin se detalla como llevar a cabo dic&os pasos necesarios para su
implementacin#
En el servidor
Configuraciones necesarias en el servidor de monitoreo.
agios
Algunos puntos basicos previos a la instalacion :
PA!H Esta es la ruta de instalacin. Por defecto es /usr/local/nagios
2suario Usuario que va a usar nagios par ejecutarse. Debe crearse con
adduser especificarle el PATH de Nagios como su directorio &ome de inicio,
usualmente deberemos llamarlo nagios y debe estar dentro del grupo nagios
(rupo 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.
2.# Nagios utiliza una interfaz web para ejecutarse. Esta URLdetermina 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
Estructura de arc"ivos
Una vez que compilamos e instalamos el paquete Nagios nos termina quedando una
nomenclatura de directorios como la siguiente :
$in
5)ui se almacenan los binarios ejecutables
etc
Guarda la configuracion de $agios
li$e1ec
6e almacenan los plugins )ue efectuaran los c&e)ueos a monitorear
s$in
%entro de este directorio se mantienen los ejecutables CG7 de la
interfaz +eb
s"are
8rganiza el contenido +eb a mostrar, iconos, &tml, p&p etc
var
Guarda los datos de ejecucion del monitoreo, estado de servicios,
&osts, y logs
$in
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 My69:, yndo2db 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.
li$e1ec
Alli se contienen lo ejecutables de los plugins que efectuan los chequeos, SNMP,
SAP, Oracle, SSH, que pueden ser binarios, scripts enPerl, PHP, Shell, Java, etc.
s$in
Aqui se almacenan los ejecutables cgi que se ejecutaran para la visualizacion por
web de la consola Nagios.
s"are
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.
Arc"ivos de configuracion nagios/etc
cgi:cfg
%efinir arc&ivo de configuracion principal de $agios
main_config_file=/usr/local/nagios/etc/nagios.cfg
;uta donde se ubican los arc&ivos a mostrar via +eb
physical_html_path=/usr/local/nagios/share
;uta del url a donde ubicar $agios desde el navegador
url_html_path=/nagios
Mostrar o no el icono de ayuda en la interfaz +eb
show_context_help=0
Mostrar objetos pendientes de c&e)ueo
use_pending_states=1
!sar autenticacion para acceder a $agios
use_authentication=1
<ener usuario logueado por default =no recomendado, dejar comentado>
#default_user_name=guest
!suarios con acceso permitido para ver la informacion de objetos
=separados por comas>
authorized_for_system_information=nagiosadmin
!suarios con acceso permitido para ver la informacion de configuracion
=separados por comas>
authorized_for_configuration_information=nagiosadmin
!suarios con acceso permitido ejecucion de comandos nagios =separados
por comas>
authorized_for_system_commands=nagiosadmin
!suarios permitidos a ver informacion de &osts y servicios =separados por
comas>
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
!suarios permitidos para ejecutar comandos sobre &osts y servicios
=separados por comas>
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin
<asa de refresco para la interfaz +eb en segundos
refresh_rate=90
"tpasswd:users
Archivo con passwords encriptadas de los usuarios que se autentificaran
por HTTP
nagios:cfg
Archivo de configuracion principal de Nagios, aqui se especifican los
directorios de trabajo y se incluyen los archivos de configuracion extra a
utilizar por Nagios
Con diversos parametros :
log=file se especifica el archivo de log a utilizar por Nagios
cfg=file se especifica un archivo de configuracion extra a incluir en la
ejecucion de Nagios
cfg=dir se especifica un directorio con archivos de configuracion
extra a incluir recursivamente en la ejecucion de Nagios
log=arc"ive=pat" path donde se alojaran los archivos de log
use=syslog integracion con syslog
ndo6d$:cfg
Archivo de configuracion del daemon que se encarga de introducir las
consultar generadas por el modulo ndomod
ndomod:cfg
Modulo de Nagios que se encarga de traducir la informacion de ejecucion de
Nagios en consultas MySQL, disponiendolas por medio de un socket
resource:cfg
Archivo de configuracion donde se definen macros de ejecucion
o$*ects/
Directorio de archivos generales de configuracion
o$*ects/commands:cfg
Definicion de comandos de ejecucion por default, con los alias que queremos
usar
o$*ects/contacts:cfg
Definicion de contactos de notificacion
o$*ects/local"ost:cfg
Plantilla inicial para el chequeo del host local
o$*ects/printer:cfg
Plantilla de ejemplo de chequeo de impresoras por SNMP
o$*ects/switc":cfg
Plantilla de ejemplo de chequeo de switch por SNMP
o$*ects/templates:cfg
Plantillas generales de host, contactos, y servicios
o$*ects/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
o$*ects/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
pertenencianagios?nagcmd =@@A>, nagcmd es un grupo especial en el cual
vamos a incluir al usuario que ejecuta el servidor web (ej# en apac&e sobre
%ebian +++*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:
chec-IexternalIcomman)sT
comman)Ichec-IintervalT-
comman)IfileT/usr/local/nagios/var/r=/nagios.cm)
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 :
agios un pa>s multiples provincias o localidades
-uenos Aires
Lans
Florencio Varela
CABA
Olavarria
Bahia Blanca
Santa Fe
Rosario
eu/u?n
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.
agios m@ltiples pa>ses y multiples provincias o localidades
Argentina
Buenos Aires
Neuquen
Tucuman
-rasil
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.
SMP !raps
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
mo)e T )aemon
logIsystemIena'le T
un-no=nItrapIlogIena'le T
mysBlI)'iIena'le T
mysBlI)'iIhost T localhost
mysBlI)'iIport T 3306
mysBlI)'iI)ata'ase T snmptt
mysBlI)'iIta'le T snmptt
mysBlI)'iIta'leIun-no=n T snmpttIun-no=n
mysBlI)'iIta'leIstatistics T snmpttIstatistics
mysBlI)'iIusername T snmptt
mysBlI)'iIpass=or) T mytrap
/etc/snmp/snmptt:conf
*G*&8 lin-Fo=n ..3.6..6.3...U.3 R6tatus *ventsR Critical
/etc/snmp/snmptrapd:conf
)isa'le3uthorization yes
traphan)le )efault /usr/s'in/snmptthan)ler
Configuracin de permisos :
usermo) -a -$ nagios snmptt
/etc/default/snmpd
8:3+F:9&Tyes
Schema MySQL
C:*38* F383,36* snmpttL
96* snmpttL

F:%+ 83,2* snmpttL
C:*38* 83,2* snmptt ;
i) .&8 9&6.$&*F &%8 &922 398%I.&C:*4*&8 +:.43:? N*?(
eventname G3:C53:;U0<(
eventi) G3:C53:;U0<(
trapoi) G3:C53:;00<(
enterprise G3:C53:;00<(
community G3:C53:;!0<(
hostname G3:C53:;00<(
agentip G3:C53:;6<(
category G3:C53:;!0<(
severity G3:C53:;!0<(
uptime G3:C53:;!0<(
traptime G3:C53:;30<(
formatline G3:C53:;!UU<<L

96* snmpttL

F:%+ 83,2* snmpttIun-no=nL
C:*38* 83,2* snmpttIun-no=n ;
trapoi) G3:C53:;00<(
enterprise G3:C53:;00<(
community G3:C53:;!0<(
hostname G3:C53:;00<(
agentip G3:C53:;6<(
uptime G3:C53:;!0<(
traptime G3:C53:;30<(
formatline G3:C53:;!UU<<L

96* snmpttL

F:%+ 83,2* snmpttIstatisticsL
C:*38* 83,2* snmpttIstatistics ;
statItime G3:C53:;30<(
totalIreceive) ,.$.&8(
totalItranslate) ,.$.&8(
totalIignore) ,.$.&8(
totalIun-no=n ,.$.&8<L
Reiniciamos los servicios SNMP :
/etc/init.)/snmptt
/etc/init.)/snmp)
Ref.: http://exchange.nagios.org/directory/Addons/SNMP/Nagios-
SNMP-Trap-Interface-%28NSTI%29/details
Apac"e
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
,e$ian /etc/apache2/site-available y luego crear un lin1 simbolico a ese
arc&ivo dentro de /etc/apache2/site-enabled
SuSE /etc/apache2/vhosts.d
Archivo de configuracin por defecto de Nagios
6cript3lias /nagios/cgi-'in R/usr/local/nagios/s'inR
VFirectory R/usr/local/nagios/s'inRW
# 662:eBuire662
%ptions *xecC$.
3llo=%verri)e &one
%r)er allo=()eny
3llo= from all
# %r)er )eny(allo=
# Feny from all
# 3llo= from !J.0.0.
3uth&ame R&agios 3ccessR
3uth8ype ,asic
3uth9serCile /usr/local/nagios/etc/htpass=).users
:eBuire vali)-user
V/FirectoryW
3lias /nagios R/usr/local/nagios/shareR
VFirectory R/usr/local/nagios/shareRW
# 662:eBuire662
%ptions &one
3llo=%verri)e &one
%r)er allo=()eny
3llo= from all
# %r)er )eny(allo=
# Feny from all
# 3llo= from !J.0.0.
3uth&ame R&agios 3ccessR
3uth8ype ,asic
3uth9serCile /usr/local/nagios/etc/htpass=).users
:eBuire vali)-user
V/FirectoryW
Configuraci)n SS#
:a configuracin B<<6 con 66: se realiza por defecto en la instalacin del pa)uete
%ebian y Cent86, no asi en 6u6C para ellos deberemos realizar configuraciones
e(tra#
rimero procederemos a crear las claves 66:
localhost#[ # openssl genrsa -)es3 -out server.3)es--ey 0!E
localhost#[ # openssl rsa -in server.3)es--ey -out server.-ey
localhost#[ # openssl reB -ne= --ey server.-ey -xU0H -out server.crt
-)ays 36U
localhost#[ # chmo) 600 server.-ey
localhost#[ # rm server.3)es--ey
localhost#[ # mv server.crt /etc/apache!/ssl.crt
localhost#[ # mv server.-ey /etc/apache!/ssl.-ey
%entro del arc&ivo /etc/sysconfig/apache2 deberemos agregarle el siguiente
D:5G de arran)ue para especificar la utilizacin del protocolo66: dentro del
servidor +eb 5pac&e#
3+3C5*I6*:G*:IC23$6TR-F 662R
A continuacin mostramos un archivo de configuracin de Apache mas elaborado
con autenticacin por ActiveDirectory
VGirtual5ost *#EE3W
662*ngine on
662CertificateCile /etc/apache!/ssl.crt/server.crt
662CertificateNeyCile /etc/apache!/ssl.-ey/server.-ey
6cript3lias /nagios/cgi-'in R/usr/local/nagios/s'inR
VFirectory R/usr/local/nagios/s'inRW
3uth8ype ,asic
3uth&ame R&agios 3ccessR
3uth2F3+*na'le) %n
3uth2F3+9:2 l)ap#//H!.6"..H#3"H/%9T9suarios(FCTtest(FCTcom(FCTarX
6am3ccount&ameXsu'X;Y;o'@ectClassTuser<
;mem'er%fTC&T4onitoreo(%9T8ech(%9T$rupos(FCTtest(FCTcom(FCTar<<
3uth2F3+,in)F& usuarioI'in)@test.com.ar
3uth2F3+,in)+ass=or) *****
%ptions 3ll
%r)er allo=()eny
3llo= from all
662:eBuire662
3llo=%verri)e &one
:eBuire vali)-user
V/FirectoryW
3lias /nagios R/usr/local/nagios/shareR
VFirectory R/usr/local/nagios/shareRW
3uth8ype ,asic
3uth&ame R&agios 3ccessR
3uth2F3+*na'le) %n
3uth2F3+9:2 l)ap#//H!.6"..H#3"H/%9T9suarios(FCTtest(FCTcom(FCTarX
6am3ccount&ameXsu'X;Y;o'@ectClassTuser<
;mem'er%fTC&T4onitoreo(%9T8ech(%9T$rupos(FCTtest(FCTcom(FCTar<<
3uth2F3+,in)F& usuarioI'in)@test.com.ar
3uth2F3+,in)+ass=or) *****
%ptions 3ll
%r)er allo=()eny
3llo= from all
662:eBuire662
3llo=%verri)e &one
:eBuire vali)-user
V/FirectoryW
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 Aut"#,AP2.#, 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,D
C=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.
%r)er )eny(allo=
Feny from all
3llo= from !J.0.0.
Con esto restringimos todo el acceso, y lo vamos abriendo IP x IP.
En el caso por ejemplo de que usemos otro sistema de autenticacion como CAS,
deberemos compilar el modulo de apache Auth_CAS, si estammos usando Debian
podemos bajarnos los archivos libapac&e0*mod*aut&*cas'E#A#F#orig#tar#gz
libapac&e0*mod*aut&*cas'E#A#F*3#diff#gz, ya que a la fecha no estan en la rama
estable, si no en la inestable, pero tenemos los fuentes originales y el diff para
parchear esos fuentes y ejecutar los scripts que lo convierten en paquete debian.
Antes deberemos tener instalados los paquetes deb&elper y d&*ma1e en el sistema.
# tar xvfzp li'apache!-mo)-auth-casI.0.".orig.tar.gz
# gzip -)c li'apache!-mo)-auth-casI.0."-3.)iff.gz S patch -p0
patching file li'apache!-mo)-auth-cas-.0."/)e'ian/li'apache!-mo)-auth-
cas.install
patching file li'apache!-mo)-auth-cas-.0."/)e'ian/=atch
patching file li'apache!-mo)-auth-cas-.0."/)e'ian/:*3F4*.Fe'ian
patching file li'apache!-mo)-auth-cas-.0."/)e'ian/copyright
patching file li'apache!-mo)-auth-cas-.0."/)e'ian/compat
patching file li'apache!-mo)-auth-cas-.0."/)e'ian/control
patching file li'apache!-mo)-auth-cas-.0."/)e'ian/rules
patching file li'apache!-mo)-auth-cas-.0."/)e'ian/changelog
patching file li'apache!-mo)-auth-cas-.0."/)e'ian/authIcas.conf
patching file li'apache!-mo)-auth-cas-.0."/)e'ian/li'apache!-mo)-auth-
cas.postinst
patching file li'apache!-mo)-auth-cas-.0."/)e'ian/li'apache!-mo)-auth-
cas.)ocs
patching file li'apache!-mo)-auth-cas-.0."/)e'ian/authIcas.loa)
patching file li'apache!-mo)-auth-cas-.0."/)e'ian/li'apache!-mo)-auth-
cas.lintian-overri)es
patching file li'apache!-mo)-auth-cas-.0."/)e'ian/li'apache!-mo)-auth-
cas.)irs
patching file li'apache!-mo)-auth-cas-.0."/)e'ian/:*3F4*.source
patching file li'apache!-mo)-auth-cas-.0."/)e'ian/patches/00list
patching file li'apache!-mo)-auth-cas-
.0."/)e'ian/patches/0IsslIli's.)patch
li'apache!-mo)-auth-cas-.0."# )e'ian/rules 'inary
...
)p-g-)e'# 'uil)ing pac-age Mli'apache!-mo)-auth-cas> in M../li'apache!-
mo)-auth-casI.0."-3Ii3"6.)e'>.
Con eso tenemos el paquete libapache2-mod-auth-cas listo para funcionar, para
instalarlo deberemos ejecutar el comando dp1g *i libapac&e0*mod*aut&*cas'E#A#F*
3'i3F@#deb, luego ejecutar el comandoa0enmod aut&'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.
C363llo=7il)car)Cert %n
#C36Coo-ie+ath /tmp/mo)IauthIcas/
C36Fe'ug %n
C36Gali)ate6erver %ff
C36Gali)ateFepth H
C362ogin9:2 https#//servi)orcas/cas/login
C36Gali)ate9:2 https#//servi)orcas/cas/proxyGali)ate
C368imeout J!00
C36.)le8imeout J!00
En la directiva CASCookiePath, especificamos un directorio temporal donde alojar
las cookies, por default en debian es"var"cac&e"apac&e0"mod'aut&'cas
Luego en cada entrada Directory eliminamos todas las entradas de autenticacion y
las cambiamos a solo esta 5ut&<ype C56.
Deberemos reiniciar el servicio Apache para que los cambios tengan efecto.
Configuraci)n 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.
BueueI)irectory T /var/spool/postfix
comman)I)irectory T /usr/s'in
)aemonI)irectory T /usr/li'/postfix
mailIo=ner T postfix
myhostname T nagios
my)omain T mi)ominio.net
inetIinterfaces T /myhostname
un-no=nIlocalIrecipientIre@ectIco)e T UU0
)e'ugIpeerIlevel T !
)e'uggerIcomman) T
+385T/'in#/usr/'in#/usr/local/'in#/usr/K:6/'in
xxg)' /)aemonI)irectory//processIname /processIi) Y sleep U
sen)mailIpath T /usr/s'in/sen)mail
ne=aliasesIpath T /usr/'in/ne=aliases
mailBIpath T /usr/'in/mailB
setgi)Igroup T mail)rop
htmlI)irectory T /usr/share/)oc/pac-ages/postfix/html
manpageI)irectory T /usr/share/man
sampleI)irectory T /usr/share/)oc/pac-ages/postfix/samples
rea)meI)irectory T /usr/share/)oc/pac-ages/postfix/:*3F4*IC.2*6
mailIspoolI)irectory T /var/mail
canonicalImaps T hash#/etc/postfix/canonical
virtualImaps T hash#/etc/postfix/virtual
relocate)Imaps T hash#/etc/postfix/relocate)
transportImaps T hash#/etc/postfix/transport
sen)erIcanonicalImaps T hash#/etc/postfix/sen)erIcanonical
masBuera)eIexceptions T root
masBuera)eIclasses T envelopeIsen)er( hea)erIsen)er( hea)erIrecipient
programI)irectory T /usr/li'/postfix
inetIinterfaces T H!.6"..E
masBuera)eI)omains T
my)estination T /myhostname( localhost./my)omain
)eferItransports T
)isa'leI)nsIloo-ups T no
relayhost T H!.6"..0
contentIfilter T
mail'oxIcomman) T
mail'oxItransport T
smtp)Isen)erIrestrictions T hash#/etc/postfix/access
smtp)IclientIrestrictions T
smtp)IheloIreBuire) T no
smtp)IheloIrestrictions T
strictIrfc"!Ienvelopes T no
smtp)IrecipientIrestrictions T
permitImynet=or-s(re@ectIunauthI)estination
smtpIsaslIauthIena'le T no
smtp)IsaslIauthIena'le T no
smtp)IuseItls T no
smtpIuseItls T no
aliasImaps T hash#/etc/aliases
mail'oxIsizeIlimit T 0
messageIsizeIlimit T 0!E0000
Siendo los parmetros : inet=interfaces la ip propia por cual salir, si tenemos una
sola placa de red, pondremos esa ip, relay"ost es el &ost )ue nos realizar el
envo 6M<.
PP5agios
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
Modo S>ncrono
Cl 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*service*perfdata#
ena'leIenvironmentImacrosT
serviceIperf)ataIcomman)Tprocess-service-perf)ata
hostIperf)ataIcomman)Tprocess-host-perf)ata
)efine comman) 0
comman)Iname process-service-perf)ata
comman)Iline /usr/'in/perl
/usr/local/nagios/pnpEnagios/li'exec/processIperf)ata.pl
1
)efine comman) 0
comman)Iname process-host-perf)ata
comman)Iline /usr/'in/perl
/usr/local/nagios/pnpEnagios/li'exec/processIperf)ata.pl -) 5%68+*:CF383
1
Modo Masivo
Cn el modo masivo, $agios escribe los datos a un fic&ero temporal en un formato
predefinido# Cste fic&ero se procesa mediante process'perfdata#pl a intervalos
regulares# $agios controla el arran)ue y ejecucin peridica del recolector de
datos# #
commands:cfg
)efine comman)0
comman)Iname process-service-perf)ata-file
comman)Iline
/usr/local/nagios/pnpEnagios/li'exec/processIperf)ata.pl
--'ul-T/usr/local/nagios/pnpEnagios/var/service-perf)ata
1
)efine comman)0
comman)Iname process-host-perf)ata-file
comman)Iline
/usr/local/nagios/pnpEnagios/li'exec/processIperf)ata.pl
--'ul-T/usr/local/nagios/pnpEnagios/var/host-perf)ata
1
Modo Masivo con PC,
6e vuelca la informacion de perfdata en una cola para luego ser procesada por un
proceso en segundo plano, lo cual libera gran carga del C!#
nagios:cfg
processIperformanceI)ataT
#
# service performance )ata
#
serviceIperf)ataIfileT/usr/local/nagios/var/service-perf)ata
serviceIperf)ataIfileItemplateTF3838?+*##6*:G.C*+*:CF383\t8.4*8##
/8.4*8/\t5%68&34*##/5%68&34*/\t6*:G.C*F*6C##
/6*:G.C*F*6C/\t6*:G.C*+*:CF383##/6*:G.C*+*:CF383/\t6*:G.C*C5*CNC%443&F##
/6*:G.C*C5*CNC%443&F/\t5%686838*##/5%686838*/\t5%686838*8?+*##
/5%686838*8?+*/\t6*:G.C*6838*##/6*:G.C*6838*/\t6*:G.C*6838*8?+*##
/6*:G.C*6838*8?+*/\t6*:G.C*%98+98##/6*:G.C*%98+98/
serviceIperf)ataIfileImo)eTa
serviceIperf)ataIfileIprocessingIintervalTU
serviceIperf)ataIfileIprocessingIcomman)Tprocess-service-perf)ata-file
#
# host performance )ata starting =ith &agios 3.0
#
hostIperf)ataIfileT/usr/local/nagios/var/host-perf)ata
hostIperf)ataIfileItemplateTF3838?+*##5%68+*:CF383\t8.4*8##
/8.4*8/\t5%68&34*##/5%68&34*/\t5%68+*:CF383##
/5%68+*:CF383/\t5%68C5*CNC%443&F##/5%68C5*CNC%443&F/\t5%686838*##
/5%686838*/\t5%686838*8?+*##/5%686838*8?+*/\t5%68%98+98##/5%68%98+98/
hostIperf)ataIfileImo)eTa
hostIperf)ataIfileIprocessingIintervalTU
hostIperf)ataIfileIprocessingIcomman)Tprocess-host-perf)ata-file
commands:cfg
)efine comman)0
comman)Iname process-service-perf)ata-file
comman)Iline /'in/mv /usr/local/nagios/var/service-
perf)ata /usr/local/nagios/var/spool/perf)ata/service-perf)ata./8.4*8/
1
)efine comman)0
comman)Iname process-host-perf)ata-file
comman)Iline /'in/mv /usr/local/nagios/var/host-perf)ata
/usr/local/nagios/var/spool/perf)ata/host-perf)ata./8.4*8/
1
Y luego ejecutar :
/etc/init.)/npc) start
,atos de configuraci)n
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.
Interfa+ we$
Luego en el template que vayamos a utilizar deberemos agregar estas directivas :
Para los "osts
actionIurl /pnpEnagios/in)ex.php/graphXhostT/5%68&34*/
Para los servicios
actionIurl /pnpEnagios/in)ex.php/graphXhostT/5%68&34*/YsrvT/6*:G.C*F*6C/
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 (7nternet Control Message rotocol) puede ser considerado como
parte de la capa IP. La especificacin completa de este protocolo se encuentra
en RFC 792. 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 usaDHCP,
tambin es posible para el host hacer una peticin durante el proceso de
arranque para obtener la mscara y una peticin RARPpara 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.
P)eivi)@localhost [Q/ ping ===.virtuamanager.com
+.&$ virtuamanager.com ;!3.HE.EH.""< U6;"E< 'ytes of )ata.
6E 'ytes from virtuamanager.com ;!3.HE.EH.""<# icmpIseBT ttlTU6
timeTE!.6 ms
6E 'ytes from virtuamanager.com ;!3.HE.EH.""<# icmpIseBT! ttlTU6
timeTE." ms
6E 'ytes from virtuamanager.com ;!3.HE.EH.""<# icmpIseBT3 ttlTU6
timeTE.6 ms
6E 'ytes from virtuamanager.com ;!3.HE.EH.""<# icmpIseBTE ttlTU6
timeTE3.J ms
6E 'ytes from virtuamanager.com ;!3.HE.EH.""<# icmpIseBTU ttlTU6
timeTE!.J ms
6E 'ytes from virtuamanager.com ;!3.HE.EH.""<# icmpIseBT6 ttlTU6
timeTE!.! ms
6E 'ytes from virtuamanager.com ;!3.HE.EH.""<# icmpIseBTJ ttlTU6
timeTE6.! ms
--- virtuamanager.com ping statistics ---
J pac-ets transmitte)( J receive)( 0Z pac-et loss( time 600Ums
rtt min/avg/max/m)ev T E.666/E3.03"/E6.!J0/.EJJ ms
A#(2OS ICMPAS ,E E..O.
Ya se ha dicho que el formato de los mensajes de error tan slo incluye, adems de
la cabecera, una copia de la cabecera IP del datagrama que gener el error y los 8
primeros bytes del datagrama. En algunos de los ejemplos que siguen veremos la
razn de ser de este formato:
Destination unreachable: Este tipo de mensajes de error se generan
cuando por alguna razn, el datagrama no pudo alcanzar su destino (puerto,
host, red inalcanzable, necesidad de fragmentar con bit DF activado.). La
forma de comunicar este error a la capa superior es copiando la cabecera IP
en el propio mensaje de error. Gracias al campo 'protocolo' el mdulo ICMP
que lo reciba sabr asociarlo con el protocolo adecuado. Supongamos que se
produce un 'port unreachable' en el envo de un datagrama UDP. La cabecera
IP permite identificar que el error se produjo en el protocolo UDP, y adems
esto sirve para interpretar los 8 bytes adicionales, que pertenecern a la
cabecera UDP. Estos contendrn los puertos origen y destino (ver tema UDP).
El puerto de origen puede servir para asociar el error con un determinado
proceso de usuario (ej. puerto 2924 asociado a un cliente tftp), mientras que
el destino nos indica qu puerto origin el error 'port unreachable'.
Otro ejemplo, al intentar hacer ping al otro equipo de la red, que est apagado, se
obtiene lo siguiente:
P)eivi)@localhost [Q/ ping H!.6"..!
+.&$ H!.6"..! ;H!.6"..!< U6;"E< 'ytes of )ata.
Crom H!.6"..00 icmpIseBT! Festination 5ost 9nreacha'le
Crom H!.6"..00 icmpIseBT3 Festination 5ost 9nreacha'le
Crom H!.6"..00 icmpIseBTE Festination 5ost 9nreacha'le
Crom H!.6"..00 icmpIseBT6 Festination 5ost 9nreacha'le
Crom H!.6"..00 icmpIseBTJ Festination 5ost 9nreacha'le
Crom H!.6"..00 icmpIseBT" Festination 5ost 9nreacha'le
--- H!.6"..! ping statistics ---
H pac-ets transmitte)( 0 receive)( O6 errors( 00Z pac-et loss( time
"00!ms
( pipe 3
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 !ceeded: 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 tracert de windows se basa en este algoritmo.
SMP BSimple etwor7 Management ProtocolC
Protocolo Simple de Administracin de Red o SNMP es un protocolo de la capa de
aplicacin que facilita el intercambio de informacin de administracin entre
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:
SMP: 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
MI-: (Management Information Base): especifica qu variables mantienen
los elementos de la red (agentes)
SMI BStructure of Management InformationC
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
MI-D BManagement Information -aseC
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.
SMPv;
Ejemplo de configuracin SNMPv3 para un sistema tpico Linux/UNIX/AIX/Solaris
etc
rocommunity pu'lic H!.6"..E
syscontact 6ysa)min ;root@localhost<
syslocation 6erver :oom
vie= all inclu)e) .
access notConfig$roup RR any noauth exact systemvie= none none
access notConfig$roup RR 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.
SMPv9
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
create9ser nagios 4FU RClaG3:fs8tF!R F*6
Debemos reiniciar el servicio SNMP y luego podemos hacer algo como esto
snmpget *v 3 *u nagios *l aut&$oriv *a M%4 *5 ClaV3;fs<t%0 E0G#A#A#E
sys!p<ime#A
!IPS
NOTA: En Debian deberemos editar el archivo "etc"default"snmpd, modificando la
siguiente linea
De:
6&4+F%+86T>-2s) -2f /)ev/null -u snmp -. -smux -p /var/run/snmp).pi)
!J.0.0.>
A :
6&4+F%+86T>-2s) -2f /)ev/null -u snmp -. -smux -p /var/run/snmp).pi)>
Para que el servicio se accesible por red.
A veces por causa de tener montados filesystems remotos NFS o CIFS, cuando
tenemos retrasos en la conexion con ellos se puede colgar el servicio SNMP, para
prevenir esto deberemos agregar la siguiente opcin en el archivo de
configuracin snmpd#conf.
s-ip&C6.n5ost:esources yes
Agregar varia$les a SMP
Por ejemplo si queremos obtener desde SNMP la informacin de un script
/usr/local/$in/var:s"
echo RholaR
echo RchauR
En el snmpd.conf le agregamos la siguiente configuracin:
exec ..3.6..E..!0!.UUU /'in/sh /usr/local/'in/var.sh
Si corremos esta consulta snmpwal7 %v ; %c pu$lic local"ost :
;:9:E:;:5:;:6F6;:<<< Obtendremos :
9CF-6&4+-4.,##uc)avis.UUU.. T .&8*$*:#
9CF-6&4+-4.,##uc)avis.UUU.!. T 68:.&$# R/'in/shR
9CF-6&4+-4.,##uc)avis.UUU.3. T 68:.&$# R/tmp/'ar.shR
9CF-6&4+-4.,##uc)avis.UUU.00. T .&8*$*:# 0
9CF-6&4+-4.,##uc)avis.UUU.0. T 68:.&$# RholaR
9CF-6&4+-4.,##uc)avis.UUU.0.! T 68:.&$# RchauR
9CF-6&4+-4.,##uc)avis.UUU.0!. T .&8*$*:# 0
9CF-6&4+-4.,##uc)avis.UUU.03. T RR
SMPv; en Gindows
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
Dentro de ella nos situamos sobre la opcion SNMP y la tildamos
Luego en la Administracin de Servicios, nos dirigiremos a las propiedades del
servicio SNMP
Dentro de ella nos encontraremos con un cuadro de dialogo
Configuraremos el accesso a la ip del servidor con acceso SNMP
Y luego la comunidad de aceso a los datos 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
.PE
SClientHH
nsclient.ini
P/settings/external scripts/scriptsQ
chec-IpagefileTRC#\+rogram Ciles\&agios +lugin
Collection\chec-Ipagefile.exeR
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
# Firectorio con la configuraci]n )e grupos )e 5osts )e los 6ervi)ores
cfgI)irT/usr/local/nagios/etc/hostgroups
# Firectorio con la configuraci]n )e grupos )e servicios )e los
6ervi)ores
cfgI)irT/usr/local/nagios/etc/servicegroup
# Firectorio con la configuraci]n )e contactos
cfgI)irT/usr/local/nagios/etc/contacts
# Firectorio con la configuraci]n )e grupos )e contacto
cfgI)irT/usr/local/nagios/etc/contactgroups
# Firectorio con la configuraci]n )e servicios
cfgI)irT/usr/local/nagios/etc/services
# Firectorio con la configuraci]n )e los coman)os
cfgI)irT/usr/local/nagios/etc/comman)s
# Firectorio con la configuraci]n )e los eBuipos a monitorear
cfgI)irT/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.
Configuraci)n de alertas
Agregando (rupos 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
)efine contactgroup0
contactgroupIname a)min
alias 3)ministrators
mem'ers a)min-sap(a)min-=in)o=s
1
)efine contactgroup0
contactgroupIname 0nom're )el grupo contacto1
alias 0)escripcion1
mem'ers 0miem'ros )el grupo1
1
contactgroup=name
Nombre que se le asignara al grupo de contacto
alias
Descripcin corta para identificar al grupo
mem$ers
Miembros del grupo separados por comas
6e deber crear el arc&ivo Hnagios*dirI"etc"contactgroups"
Hnombregrupodecontacto#cfgI con las entradas correspondientes anteriormente
e(plicadas#
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
)efine contact0
contactIname a)min
alias 3)ministra)or &agios
contactgroups a)min
serviceInotificationIperio) !ExJ
hostInotificationIperio) !ExJ
serviceInotificationIoptions =(u(c(r
hostInotificationIoptions )(u(r
serviceInotificationIcomman)s notify-'y-email
hostInotificationIcomman)s host-notify-'y-email
email root@localhost
1
)efine contact0
contactIname 0nom're )el contacto1
alias 0)escripcion )el contacto1
contactgroups 0grupo )e contactos al cual
pertenece1
serviceInotificationIperio) 0prio)o )e tiempo )e
notificaciones )e servicios1
hostInotificationIperio) 0prio)o )e tiempo )e
notificaciones )e hosts1
serviceInotificationIoptions 0opciones )e notificacion por
servicio1
hostInotificationIoptions 0opciones )e notificacion por
host1
serviceInotificationIcomman)s 0coman)o )e notificacion a
utilizar por servicio1
hostInotificationIcomman)s 0coman)o )e notificacion a
utilizar por host1
email 0)ireccion )e email )el contacto1
1
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
"ost=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
"ost=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
"ost=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.
6e deber crear el arc&ivo Hnagios*dirI"etc"contacts"Hnombredecontacto#cfgI con
las entradas correspondientes anteriormente e(plicadas#
Alertas en formato H!M#
Podemos estilizar nuestras alertas por email de nagios con colores, smbolos eh
imgenes.
Aqu adjunto dos scripts descargados de nagiosexchange que estn modificados por
mi :
nagios_send_host_mail.pl.gz nagios_send_service_mail.pl.gz
Alertas por SMS
Podemos configurar alertas SMS de forma muy simple con el software Gnokii.
Ejemplo de archivo de configuracin de Gnokii
Pglo'alQ
port T /)ev/tty96,!
mo)el T 38
initlength T )efault
connection T serial
useIloc-ing T yes
serialI'au)rate T H!00
smscItimeout T 0

PconnectIscriptQ
8*2*+5%&* T !3EU6J"
P)isconnectIscriptQ
Pfa-eI)riverQ
PflagsQ
Pgno-iiQ
Pgno-ii)Q
PloggingQ
)e'ug T on
rlp)e'ug T off
x)e'ug T off
Modo de uso :
ec"o IHola mundoJ K sudo gno7ii Lsendsms ;;<<EEMMNO
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.
)efine comman) 0
comman)Iname host-notify-'y-sms
comman)Iline ssh nagios@0.U.HH. Recho R5ost >/5%68&34*/> esta
/5%686838*/ /5%68%98+98/R S su)o gno-ii --sen)sms /C%&83C8+3$*:/R
1
)efine comman) 0
comman)Iname service-notify-'y-sms
comman)Iline ssh nagios@0.U.HH. Recho >6ervicio /6*:G.C*F*6C/ en
5ost /5%68&34*/ .+ /5%683FF:*66/ 6tate /6*:G.C*6838*/ .nfo
/6*:G.C*%98+98/> S su)o gno-ii --sen)sms /C%&83C8+3$*:/R
1
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
)efine comman)0
comman)Iname chec-IsnmpImem
comman)Iline /96*://chec-IsnmpImem.pl -5 /5%683FF:*66/ /3:$/
-= /3:$!/ -c /3:$3/ /3:$E/
1
)efine comman)0
comman)Iname 0nom're )el coman)o1
comman)Iline 0)atos )e e@ecucion1
1
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:
P2SE.;P : Contiene datos del path de ejecucin de los plugins de Nagios
PHOS!A,,.ESSP : Tiene la IP de hosts desde el cual se esta corriendo el servicio
PA.(;P PA.(6P PA.(9P PA.(5P : 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
6e debern agregar al arc&ivo Hnagios*dirI"etc"commands#cfg las entradas
correspondientes anteriormente e(plicadas#
Agregando (rupos de Servicios
Los grupos de servicio se utilizan para denotar un variedad de servicios sobre otros,
debemos tener asignado aunque sea un servicio a ese grupo por que si no de lo
contrario el Nagios mostrara un error al arranque, para eso lo asignamos en la
propiedad servicegroups de un servicio en particular. Ejemplo de una entrada de
grupo de servicios:
)efine servicegroup0
servicegroupIname lotusIresponse
alias 2otus :eponse 6ervices
1
)efine servicegroup0
servicegroupIname 0nom're corto )el grupo )e servicio1
alias 0alias )escriptivo completo )el grupo1
1
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
)efine service 0
use =in)o=s
hostIname srv(srv!
hostgroupIname servi)ores-=in)o=s
serviceI)escription Gerification )isco C#
servicegroups storage
isIvolatile 0
chec-Iperio) !ExJ
maxIchec-Iattempts 3
normalIchec-Iinterval U
retryIchec-Iinterval
contactIgroups =in)o=s
notificationIinterval !E0
notificationIperio) !ExJ
notificationIoptions c(r
chec-Icomman) chec-IsnmpIstorageA^CA60AH0A-C
pu'licA-r
1
)efine service 0
use 0template )e servicio a
utilizar1
hostIname 0hosts Bue e@ecutan )icho
servicio1
hostgroupIname 0grupos )e host Bue e@ecutan ese
servicio1
serviceI)escription 0)escripcion )el servicio1
servicegroups 0grupo al cual pertenece1
isIvolatile 0si el servicio es volatil1
chec-Iperio) 0perio)o )e tiempo para el
cheBueo1
maxIchec-Iattempts 0maximo )e intentos )e cheBueo1
normalIchec-Iinterval 0intervalo )e tiempo a programar
los cheBueos1
retryIchec-Iinterval 0intervalo )e tiempo para un re-
cheBueo1
contactIgroups 0grupo )e contacto1L
maxIchec-Iattempts 0maxima canti)a) )e cheBueos1
notificationIinterval 0intervalo )e tiempo entre
notificaciones1
notificationIperio) 0prio)o )e tiempo )e
notificaciones1
notificationIoptions 0cuan)o enviar notificaciones1
chec-Icomman) 0coman)o )e cheBueo con sus
argumentos1
1
use
Template de servicio a utilizar
"ost=name
Nombre del o los host a los cuales esta asignado dicho servicio
"ostgroup=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
ma1=c"ec7=attempts
Maxima cantidad de chequeos a efectuar por Nagios, antes de enviar un OK como
resultado
normal=c"ec7=interval
Intervalo de tiempo antes de programar un nuevo chequeo del servicio
retry=c"ec7=interval
Intervalo de tiempo antes de realizar un re-chequeo del servicio
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
c"ec7=command
Comando para efectuar el chequeo de dicho servicio
6e deber crear el arc&ivo Hnagios*dirI"etc"services"Hnombreservicio#cfgI con las
entradas correspondientes anteriormente e(plicadas#
,ependencia del estado del servicio por el estado de otro
servicio
En caso en los cuales el estado de un servicio dependa de la disponibilidad o el
estado de otro, se pueden definir dependencias. Una entrada a modo ejemplo
puede ser:
)efine service)epen)ency0
hostIname 5ost 3
serviceI)escription 6ervice 3
)epen)entIhostIname 5ost ,
)epen)entIserviceI)escription 6ervice F
executionIfailureIcriteria u
notificationIfailureIcriteria n
1
)efine service)epen)ency0
hostIname 0host )on)e se e@ecuta el
servicio )epen)iente1
serviceI)escription 0servicio )epen)iente1
)epen)entIhostIname 0host )on)e se e@ecuta el
servicio )el cual se )epen)e1
)epen)entIserviceI)escription 0servicio )el cual se )epen)e1
executionIfailureIcriteria 0criterio para esta'lecer el
esta)o1
notificationIfailureIcriteria 0notificar segun x esta)o1
1
"ost=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="ost=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
e1ecution=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
Informacion e1tendida de servicio
En algunos casos podemos agregar un link informativo u externo haciendo
referencia al servicio en ejecution
)efine serviceextinfo0
hostIname linux!
serviceI)escription Carga )el sistema 2inux
notes Carga sistema
notesIurl http#//localhost/cargalinux.plX
hostTlinux!YserviceTCargaO6istema
iconIimage carga.png
iconIimageIalt 3lertas )e carga
1
)efine serviceextinfo0
hostIname 0nom're )el host1
serviceI)escription 0nom're )escriptivo )el servicio1
notes 0nota )escriptiva so're la informacion
extra1
notesIurl 0url )on)e se encuentra la informacion
extra1
iconIimage 0imagen )e icono1
iconIimageIalt 0texto alternativo )e la imagen1
1
"ost=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
Agregando (rupos de Hosts
Los host en nagios de puede agrupar mediante grupos y asi tener un listado aparte
que los diferencia de los demas. por ejemplo tener por un lado los servidores SAP
con Oracle y por otro los servidores Lotus, o Linux y Windows por separado etc.
Un archivo tipo de grupos de host se presenta a continuacion
)efine hostgroup 0
hostgroupIname ramallo
alias *Buipos )e :amallo
mem'ers ramallo(slnra0(srvrmlofs
1
)efine hostgroup 0
hostgroupIname 0nom're )el grupo1
alias 0alias )escriptivo1
mem'ers 0host miem'ros1
1
"ostgroup=name
Nombre del grupo de hosts
alias
Alias descriptivo del grupo
mem$ers
Host que son miembros del grupo, debemos ingresar el host_name de cada uno
separado por comas ,
6e deber crear el arc&ivo Hnagios*dirI"etc"&ostgroups"Hnombregrupode&osts#cfgI
con las entradas correspondientes anteriormente e(plicadas#
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
)efine host0
use servi)ores
hostIname servi)orsap!
hostgroupIname servi)ores-linux
alias 63+ 6*:G*:
a))ress H!.6".0."E
parents 'uenosIaires
contactIgroups linuxL
maxIchec-Iattempts 0
notificationIinterval !0
notificationIperio) !ExJ
notificationIoptions )(u(r
1
)efine host0
use 0template-host1
hostIname 0nom're-host1
hostgroupIname 0grupos al Bue pertenece este
host1
alias 0alias-)escriptivo1
a))ress 0ip1
parents 0host )el Bue )epen)e1
contactIgroups 0grupo )e contacto1L
maxIchec-Iattempts 0maxima canti)a) )e cheBueos1
notificationIinterval 0intervalo )e tiempo entre
notificaciones1
notificationIperio) 0prio)o )e tiempo )e
notificaciones1
notificationIoptions 0cuan)o enviar notificaciones1
1
use
Template de host a utilizar
"ost=name
Nombre del host
"ostgroup=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
ma1=c"ec7=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
6e deber crear el un subdirectorio correspondiente al nombre del &ost y segun
corresponda ubicarlo en el directorio servers"Hlinu(*+indo+s*lotusI o routers y
deentro crear un arc&ivo &osts#cfg con la configuracin anteriormente e(plicada,
Informacion e1tendida de "ost
La informacion extendida de host se utiliza para el look and feel de los host dentro
de los mapas de estado, ya sea tanto el 2D como el 3D
)efine hostextinfo0
hostIname linuxoracle
notes 6ervi)or %racle )e uniface
iconIimage oracle.png
iconIimageIalt %racle
vrmlIimage oracle.png
statusmapIimage oracle.g)!
1
)efine hostextinfo0
hostIname 0nom're )e host1
notes 0)escripcion para el host1
iconIimage 0logo para ver en la interfaz =e'1
iconIimageIalt 0texto para el logo1
vrmlIimage 0logo para ver en el mapa 3F1
statusmapIimage 0logo para ver en el mapa !F1
1
"ost=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
Icono a visualizar en el mapa 2D
6e deber crear en el arc&ivo &oste(tinfo#cfg dentro subdirectorio correspondiente
al &ost con las entradas de configuracin anteriormente e(plicadas# :o iconos se
encuentran dentro del directorio HnagiosdirIs&are"images"logos" tanto en su
version png como gd
Para convertir una imagen png comun a un icono gd2 (necesario para la generacion
del grafico de statusmap 2D) debemos ejecutar el siguiente comando:
pngtog)! mi-icono.png mi-icono.g)!
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.
,ependencia del estado de "ost por el estado de otro "ost
En casos donde hay host donde su estado depende del estado de otro host, es
posible especificar dependencias. Aqui vemos una entrada tipica
)efine host)epen)ency0
hostIname linuxsap!
)epen)entIhostIname linuxoracle
notificationIfailureIcriteria )
1
)efine host)epen)ency0
hostIname 0nom're )el host a
referise1
)epen)entIhostIname 0nom're )el host )el
cual )epen)e1
notificationIfailureIcriteria 0opciones )e
notificacion1
1
"ost=name
Nombre del host al cual corresponde la informacin dada
dependent="ost=name
Nombre del host del cual depende
notification=failure=criteria
Opciones de notificacion en caso de cada estado
6e deber crear en el arc&ivo &ostdependency#cfg dentro subdirectorio
correspondiente al &ost con las entradas de configuracin anteriormente
e(plicadas#
,efiniendo tiempos de c"e/ueo
Dentro de Nagios se pueden establecer definiciones para controlar cuando diversos
aspectos de la lgica de vigilancia y alerta sobre elementos monitoreador por
ejemplo que tal servicio o host se chequee en ciertos intervalos de tiempo, por
ejemplo si un host no debe ser chequeado los domingos o un servicio debe ser
chequeado solo de lunes a viernes de 08:00 HS a 18:00 HS etc
A su ves las definiciones Timeperod pueden contener varios tipos de directivas,
entre los das de semana, das del mes, y las fechas. El orden de precedencia de los
distintos tipos de directivas (en orden descendente) es el siguiente:
Fecha del calendario (2008-01-01)
Mes especfico fecha (1 de enero)
Mes da genricos (Da 15)
Compensar los das de la semana de mes especfico (2 martes de
diciembre)
Compensar los das de la semana (3 lunes)
Normal del da de la semana (martes)
Ejemplos de las diferentes directivas timeperiod que podemos implementar :
C&e)ueos las 0J &oras los G dias de la semana
)efine timeperio)0
timeperio)Iname !ExJ
alias !E 5ours 3 Fay( J Fays 3 7ee-
sun)ay 00#00-!E#00
mon)ay 00#00-!E#00
tues)ay 00#00-!E#00
=e)nes)ay 00#00-!E#00
thurs)ay 00#00-!E#00
fri)ay 00#00-!E#00
satur)ay 00#00-!E#00
1
C&e)ueos en las &oras laborales lunes a viernes de K a EG
)efine timeperio)0
timeperio)Iname =or-hours
alias &ormal 7or- 5ours
mon)ay 0H#00-J#00
tues)ay 0H#00-J#00
=e)nes)ay 0H#00-J#00
thurs)ay 0H#00-J#00
fri)ay 0H#00-J#00
1
C&e)ueos sin tiempos, o sea no c&e)uea en ningLn momento
# >none> timeperio) )efinition
)efine timeperio)0
timeperio)Iname none
alias &o 8ime .s 3 $oo) 8ime
1
Cn ciertos dias feriados e(cluir el c&e)ueo servicios, ej $avidad, 5-o nuevo etc
)efine timeperio)0
name us-holi)ays
timeperio)Iname us-holi)ays
alias 9.6. 5oli)ays
@anuary 00#00-00#00 L &e= ?ears
mon)ay - may 00#00-00#00 L 4emorial Fay ;last
4on)ay in 4ay<
@uly E 00#00-00#00 L .n)epen)ence Fay
mon)ay septem'er 00#00-00#00 L 2a'or Fay ;first
4on)ay in 6eptem'er<
thurs)ay - novem'er 00#00-00#00 L 8han-sgiving ;last
8hurs)ay in &ovem'er<
)ecem'er !U 00#00-00#00 L Christmas
1
%efinimos un periodo de tiempo )ue c&e)uee las 0J &oras del dia los G dias de la
semana, pero )ue incluya las e(cepciones anteriormente mostradas
)efine timeperio)0
timeperio)Iname !ExJIsansIholi)ays
alias !ExJ 6ans 5oli)ays
use us-holi)ays L 3gregar excepciones
sun)ay 00#00-!E#00
mon)ay 00#00-!E#00
tues)ay 00#00-!E#00
=e)nes)ay 00#00-!E#00
thurs)ay 00#00-!E#00
fri)ay 00#00-!E#00
satur)ay 00#00-!E#00
1
8tra manera de evitar tiempos de c&e)ueo es con la directiva e(clude
Como ejemplo podemos definir 3 timeperiods
)efine timeperio)0
name =ee-)ays
timeperio)Iname =ee-)ays
mon)ay 00#00-!E#00
tues)ay 00#00-!E#00
=e)nes)ay 00#00-!E#00
thurs)ay 00#00-!E#00
fri)ay 00#00-!E#00
1
)efine timeperio)0
name =ee-en)s
timeperio)Iname =ee-en)s
satur)ay 00#00-!E#00
sun)ay 00#00-!E#00
1
)efine timeperio)0
name holi)ays
timeperio)Iname holi)ays
@anuary 00#00-!E#00 L &e= ?ear>s Fay
!00"-03-!3 00#00-!E#00 L *aster ;!00"<
!00H-0E-! 00#00-!E#00 L *aster ;!00H<
mon)ay - may 00#00-!E#00 L 4emorial Fay ;2ast
4on)ay in 4ay<
@uly E 00#00-!E#00 L .n)epen)ence Fay
mon)ay septem'er 00#00-!E#00 L 2a'or Fay ;st 4on)ay
in 6eptem'er<
thurs)ay E novem'er 00#00-!E#00 L 8han-sgiving ;Eth
8hurs)ay in &ovem'er<
)ecem'er !U 00#00-!E#00 L Christmas
)ecem'er 3 J#00-!E#00 L &e= ?ear>s *ve ;Upm
on=ar)s<
1
5&ora definimos un timeperiod llamadas por ejemplo, incluya los dias de la
semana, pero e(cluya los dias festivos
)efine timeperio)0
timeperio)Iname llama)as
use =ee-)aysL .nclu)e =ee-)ays
exclu)e holi)aysL *xclu)e holi)ay )ates/times
)efine) else=here
1
5lternando dias, o sea desde el primero de agosto de 0AAG cada dos dias notificar,
si en vez de " 0 ponemos " EJ lo realizara cada EJ dias
)efine timeperio)0
timeperio)Iname @ohn-oncall
!00J-0"-0 / ! 00#00-!E#00 L *very t=o )ays(
starting 3ugust st( !00J
1
Cn la entrada del contacto deberemos especificarle los timeperiods para &osts y
servicios
)efine contact0
contactIname @ohn
...
hostInotificationIperio)@ohn-oncall
serviceInotificationIperio) @ohn-oncall
1
Mane*adores de Eventos % Event Handler
Cuando hablamos de event "andler o mane*ador de eventos, nos referimos a
funciones que responden a eventos que se producen, como pueden ser un cambio
de estado.
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 de
Servicio
Estado de Host Descripcion
G A' -P
El plugin es capa4 de "eri(icar el ser"icio y ?ue
parece estar (uncionando correcta*ente
) =&+NIN6 -P/DA=N/-N+E&C%&K2E El plugin es capa4 de "eri(icar el ser"icio! pero
?ue parec3a estar por enci*a de un u*1ral de
Oad"ertenciaP o parece no estar (uncionando
correcta*ente
9 C+I,IC&2 DA=N/-N+E&C%&K2E
El plugin detecta ?ue o 1ien el ser"icio no
(unciona o ?ue est. por enci*a de un u*1ral
Ocr3ticoP
# -N'NA=N DA=N/-N+E&C%&K2E
&rgu*entos de l3nea de co*andos no ".lida o
(allas internas del plugin Cpor eje*plo error en
un soc/et o dnsE ?ue le i*piden reali4ar las
operaciones especi(icadas
A3adir nuestro plugin
Para aadir nuestro plugin a Nagios
Deberemos copiar nuestro ejecutable (ya sea script o binario) al
directorio "usr"local"nagios"libe(ec con permisos de ejecucin.
Crearle una entrada dentro del archivo de configuracin de Comandos.
Crear un Servicio y asignarle ese comando para que se encargue de dicho
chequeo.
otas so$re el desarrollo de plugins
No ejecutar comandos del sistema, sin especificar su ruta de acceso
completa.
Utilice spopen () si deben ser ejecutados comando externos en su
plugin en C.
Ver los principales ejemplos de plugin para ver cmo se hace esto.
No haga archivos temporales a menos que sea absolutamente necesario.
Si se necesitan archivos temporales, asegrese de que el plugin y
elimine el archivo temporal, cuando finalice.
No se deje engaar por enlaces simblicos
Si el plug-in abre todos los archivos, tomar medidas para asegurarse
de que no estn siguiendo un enlace simblico a otro lugar en el sistema.
Validar todas las entradas
Usar rutinas en utils.c utils.pm o escribir ms segn sea necesario
.eferencias so$re el desarrollo de plugins
http://nagios.sourceforge.net/docs/3_0/pluginapi.html
http://nagiosplug.sourceforge.net/developer-guidelines.html
E*emplo de desarrollo paso a paso
Plugin consultando SMP
Dado el caso que queramos obtener informacin interna de determinado Host y
necesitemos que este disponible para consultarla por SNMP, podemos incluir dicha
informacion. Para ellos deberemos incluir diferentes directivas de configuracion en
el archivo snmpd#conf, y haremos uso de la tabla externa del objeto UCD. La <abla
e(terna !C% es una tabla extensible de comandos de la cual obtendremos su
cdigo de resultado de ejecucin y su salida.
/etc/snmp/snmpd:conf
syslocation 9n-no=n ;configure /etc/snmp/snmp).local.conf<
syscontact :oot Vroot@localhostW ;configure /etc/snmp/snmp).local.conf<
exec coman)o /'in/coman)o
exec coman)o! /'in/coman)o!
exec coman)o3 /'in/coman)o3
exec coman)o3 /'in/coman)oE
rouser consultorsnmp auth
#create9ser consultorsnmp 4FU consultorsnmp!3
Luego podemos ver los resultados obtenidos realizando una consulta SNMP a !C%*
6$M*M7M??e(t<able o #E#3#@#E#J#E#0A0E#F, obteniendo resultados similares a :
snmpwal7 %v 9 %l aut"oPriv %a M,< %u consultorsnmp %A
consultorsnmp;69 ;6M:F:F:; 2C,%SMP%MI-DDe1t!a$le*
9CF-6&4+-4.,##ext.n)ex. T .&8*$*:#
9CF-6&4+-4.,##ext.n)ex.! T .&8*$*:# !
9CF-6&4+-4.,##ext.n)ex.3 T .&8*$*:# 3
9CF-6&4+-4.,##ext.n)ex.E T .&8*$*:# E
9CF-6&4+-4.,##ext&ames. T 68:.&$# coman)o
9CF-6&4+-4.,##ext&ames.! T 68:.&$# coman)o!
9CF-6&4+-4.,##ext&ames.3 T 68:.&$# coman)o3
9CF-6&4+-4.,##ext&ames.E T 68:.&$# coman)oE
9CF-6&4+-4.,##extComman). T 68:.&$# /'in/coman)o
9CF-6&4+-4.,##extComman).! T 68:.&$# /'in/coman)o!
9CF-6&4+-4.,##extComman).3 T 68:.&$# /'in/coman)o3
9CF-6&4+-4.,##extComman).E T 68:.&$# /'in/coman)oE
9CF-6&4+-4.,##ext:esult. T .&8*$*:# 0
9CF-6&4+-4.,##ext:esult.! T .&8*$*:# 0
9CF-6&4+-4.,##ext:esult.3 T .&8*$*:# 0
9CF-6&4+-4.,##ext:esult.E T .&8*$*:# 0
9CF-6&4+-4.,##ext%utput. T 68:.&$# sali)a-coman)o
9CF-6&4+-4.,##ext%utput.! T 68:.&$# sali)a-coman)o
9CF-6&4+-4.,##ext%utput.3 T 68:.&$# sali)a-coman)o
9CF-6&4+-4.,##ext%utput.E T 68:.&$# sali)a-coman)o
9CF-6&4+-4.,##ext*rrCix. T .&8*$*:# 0
9CF-6&4+-4.,##ext*rrCix.! T .&8*$*:# 0
9CF-6&4+-4.,##ext*rrCix.3 T .&8*$*:# 0
9CF-6&4+-4.,##ext*rrCix.E T .&8*$*:# 0
9CF-6&4+-4.,##ext*rrCixCm). T 68:.&$#
9CF-6&4+-4.,##ext*rrCixCm).! T 68:.&$#
9CF-6&4+-4.,##ext*rrCixCm).3 T 68:.&$#
9CF-6&4+-4.,##ext*rrCixCm).E T 68:.&$#
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 e(it status
UCD-SNMP-MIB::extOutput
Aqui obtendremos la salida del comando con el string o expresion que
necesitemos conocer
.eferencias so$re consultas SMP a la ta$la 2C,
http://net-snmp.sourceforge.net/docs/mibs/ucdavis.html
E*emplo de consulta SMP con Perl por medio de etDDSMP
Ejemplo simple de como consultar una variable SNMPv1.
#!/usr/local/bin/perl
use strictL
use =arningsL
use &et##6&4+L

my /%.FIsys9p8ime T >.3.6..!...3.0>L

my ;/session( /error< T &et##6&4+-Wsession;
-hostname TW shift SS >!J.0.0.>(
-community TW shift SS >pu'lic>(
<L

if ;A)efine) /session< 0
printf R*::%:# Zs.\nR( /errorL
exit L
1

my /result T /session-WgetIreBuest;-var'in)list TW P /%.FIsys9p8ime Q(<L

if ;A)efine) /result< 0
printf R*::%:# Zs.\nR( /session-Werror;<L
/session-Wclose;<L
exit L
1

printf R8he sys9p8ime for host >Zs> is Zs.\nR(
/session-Whostname;<( /result-W0/%.FIsys9p8ime1L

/session-Wclose;<L

exit 0L
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 &et##6&4+L
/oi) T R..3.6..E..!0!."..0.RL

/snmpv3Iusername T RconsultorsnmpRL # SNMPv3 username
/snmpv3Ipass=or) T Rconsultorsnmp!3RL # SNMPv3 password
/snmpv3Iauthprotocol T Rm)URL # SNMPv3 hash algorithm (md5 /
sha)
/snmpv3Iprivpass=or) T RRL # SNMPv3 hash algorithm (md5 /
sha)
/snmpv3Iprivprotocol T R)esRL # SNMPv3 encrption protocol (des
/ aes / aes!"#)
/version T R3RL
/timeout T R!RL
/hostname T R!J.0.0.RL
# $rear la sesion SNMP
;/s( /e< T &et##6&4+-Wsession;
-username TW /snmpv3Iusername(
-authpass=or) TW /snmpv3Ipass=or)(
-authprotocol TW /snmpv3Iauthprotocol(
-hostname TW /hostname(
-version TW /version(
-timeout TW /timeout(
<L
if ;/s<0
1 else 0
print RC:.8.C32 - *l agente no respon)e( 6&4+ v3 ;/e<\nRL
exit;!<L
1
/s-WgetIreBuest;/oi)<L
foreach ;/s-WvarI'in)Inames;<< 0
/oi)Iconsulta T /s-WvarI'in)Ilist;<-W0/I1L
1
/s-Wclose;<L
print /oi)IconsultaL
Plugin consultando MyS4#
Podemos realizar plugins que dependan de la salida de otros plugins sin necesidad
de consultar o ejecutar nuevamente estos, uilizando los datos contenidos en la base
de datos MySQL
Por ejemplo si queremos consultar la lista de miembros de un grupo de hosts
6*2*C8 nagiosIhosts.)isplayIname
C:%4
nagiosIhostgroups(nagiosIinstances(
nagiosIhosts(nagiosIhostgroupImem'ers(
nagiosIo'@ects
75*:*
nagiosIhostgroups.hostgroupIi)TnagiosIhostgroupImem'ers.hostgroupIi)
3&F
nagiosIhostgroupImem'ers.hostIo'@ectIi)TnagiosIhosts.hostIo'@ectIi)
3&F
nagiosIhostgroups.hostgroupIo'@ectIi)TnagiosIo'@ects.o'@ectIi)
3&F
nagiosIo'@ects.name T >0grupoI)eIhostIaIconsultar1>
%:F*: ,? nagiosIhosts.)isplayIname 36C
Para conocer el estado de un servicio de un determinado host
6*2*C8
nagiosIservicestatus.perf)ata(nagiosIservicestatus.output
C:%4
nagiosIservices(nagiosIservicestatus(
nagiosIo'@ects(nagiosIinstances
75*:*
nagiosIservices.instanceIi)TnagiosIinstances.instanceIi)
3&F
nagiosIservicestatus.serviceIo'@ectIi)TnagiosIservices.serviceIo'@ec
tIi)
3&F
nagiosIservicestatus.serviceIo'@ectIi)TnagiosIo'@ects.o'@ectIi)
3&F
nagiosIo'@ects.name! T >0servicioIaIconsultar1>
3&F
nagiosIservices.configItypeT>>
3&F
nagiosIo'@ects.name T >0hostIBueIloIcontiene1>
Para conocer el estado de un host
6*2*C8
nagiosIhosts.)isplayIname(
nagiosIhosts.alias(
nagiosIhoststatus.currentIstate(
nagiosIhoststatus.output
C:%4
nagiosIhoststatus(
nagiosIinstances(
nagiosIhosts(
nagiosIo'@ects
75*:*
nagiosIhoststatus.hostIo'@ectIi)TnagiosIo'@ects.o'@ectIi)
3&F
nagiosIhoststatus.hostIo'@ectIi)TnagiosIhosts.hostIo'@ectIi)
3&F
nagiosIhosts.instanceIi)TnagiosIinstances.instanceIi)
3&F
nagiosIhosts.configItypeT>>
3&F
nagiosIhosts.)isplayIname T >0hostIaIconsultar1>
Para consultar los servicios pertenecientes a un determinado grupo de servicios
6*2*C8
o'@!.name 36 hostIname(
o'@!.name! 36 serviceI)escription
C:%4 nagiosIservicegroups
.&&*: _%.& nagiosIservicegroupImem'ers %&
nagiosIservicegroups.servicegroupIi)TnagiosIservicegroupImem'ers.ser
vicegroupIi)
.&&*: _%.& nagiosIservices %&
nagiosIservicegroupImem'ers.serviceIo'@ectIi)TnagiosIservices.servic
eIo'@ectIi)
.&&*: _%.& nagiosIo'@ects 36 o'@ %&
nagiosIservicegroups.servicegroupIo'@ectIi)To'@.o'@ectIi)
.&&*: _%.& nagiosIo'@ects 36 o'@! %&
nagiosIservicegroupImem'ers.serviceIo'@ectIi)To'@!.o'@ectIi)
.&&*: _%.& nagiosIinstances %&
nagiosIservicegroups.instanceIi)TnagiosIinstances.instanceIi)
75*:* nagiosIservicegroups.alias T>0aliasIserviceIgroup1>
3&F nagiosIservices.)isplayIname T>0aliasI)eIservicio1>
Para conocer los estados de los hosts
6*2*C8 nagiosIhosts.)isplayIname(nagiosIhoststatus.currentIstate
C:%4 nagiosIhoststatus(nagiosIhosts
75*:* nagiosIhoststatus.hostIo'@ectIi) T nagiosIhosts.hostIo'@ectIi)L
Resultando en una tabla como esta
displayna!e currentstate
(irewall G
apache )
ser"idor-s?l G
sap-d1 G
Para conocer el estado de un servicio, independientemente de los hosts en los que
se encuentre disponible
En este caso el servicio H!!P
6*2*C8 o'@.name 36 hostIname(
nagiosIservices.serviceIo'@ectIi)(
o'@.name! 36 serviceI)escription(
nagiosIservicestatus.currentIstate
C:%4 MnagiosIservicestatusM
2*C8 _%.& nagiosIo'@ects 36 o'@ %&
nagiosIservicestatus.serviceIo'@ectIi) T o'@.o'@ectIi)
2*C8 _%.& nagiosIservices %& nagiosIservicestatus.serviceIo'@ectIi) T
nagiosIservices.serviceIo'@ectIi)
2*C8 _%.& nagiosIinstances %& nagiosIservices.instanceIi) T
nagiosIinstances.instanceIi)
75*:* nagiosIservices.configItype T >>
3&F o'@.name! T >588+>
Resultando en una tabla como esta
"ostna!e serviceob#ectid servicedescription currentstate
concentradorF*pls ); %,,P G
router-"pn 9# %,,P )
central 9; %,,P 9
router-@H ## %,,P G
Consulta simple para obtener un pantallazo general del estado de servicios de un
hostgroup
6*2*C8
C36* st.currentIstate
75*& 0 85*& >%N>
75*& 85*& >73:&.&$>
75*& ! 85*& >C:.8.C32>
75*& 3 85*& >9&N&%7&>
*&F 36 states(
C%9&8;st.currentIstate< 36 num'er
C:%4 nagiosIhostgroupImem'ers m( nagiosIservices s(
nagiosIservicestatus st
75*:* m.hostIo'@ectIi) T s.hostIo'@ectIi)
3&F s.serviceIo'@ectIi) T st.serviceIo'@ectIi)
3&F hostgroupIi) .&
;
6*2*C8 hostgroupIi)
C:%4 nagiosIhostgroups hg( nagiosIo'@ects o
75*:* hg.hostgroupIo'@ectIi) T o.o'@ectIi)
3&F o.name T >0nom'reIhostgroup1>
<
$:%9+ ,? st.currentIstateL
Resultando en una tabla como esta
states nu!ber
A' )IH@
=&+NIN6 )#
C+I,IC&2 ;@
-N'NA=N 9G
Consulta simple para obtener un conteo general de los estados generales ordenados
por meses de un ao determinado.
6*2*C8
C%&C38;>>(F38*IC%:438;nagiosIstatehistory.stateItime(>Z4><< 36
8*4+6(
*28;nagiosIstatehistory.stateO(>%N>(>73:&.&$>(>C:.8.C32>(>9&N&%7&>< 36
*838(
C%&C38;>>(C%9&8;nagiosIstatehistory.state<< 36 D93&8.8*
C:%4
MnagiosIstatehistoryM
2*C8 _%.& nagiosIo'@ects 36 o'@ %&
nagiosIstatehistory.o'@ectIi)To'@.o'@ectIi)
2*C8 _%.& nagiosIinstances %&
nagiosIstatehistory.instanceIi)TnagiosIinstances.instanceIi)
75*:*
o'@.o'@ecttypeIi)T>!>
3&F nagiosIstatehistory.stateItype T
3&F F38*IC%:438;nagiosIstatehistory.stateItime(>Z?>< T !00
$:%9+ ,?
8*4+6( *838
%:F*: ,?
F38*IC%:438;nagiosIstatehistory.stateItime(>Zm><(nagiosIstatehistory.sta
te
Resultando en una tabla como esta
$E%PS E$&$ Q'&($)$E
No"e*1er A' )IH@
No"e*1er =&+NIN6 )#
No"e*1er C+I,IC&2 ;@
No"e*1er -N'NA=N 9G
Trigger para guardar el ltimo estado de los objetos
Nagios no guarda en ninguna tabla de MySQL el ltimo estado de los objetos, pero
guarda los cambios de estado en la tabla nagios_statehistory. Para mantener el
ltimo estado se puede usar un trigger:
C:*38* 83,2* lastIstate ;o'@ectIi) int;<( state int;6<<L

C:*38* 8:.$$*: lastIstate after .&6*:8 %& nagiosIstatehistory
C%: each ro=
'egin
.C ne=.stateIchange T then
9+F38* lastIstate 6*8 state T ne=.state 75*:* o'@ectIi)
ne=.o'@ectIi)L
en) .CL
en)L//
Ese trigger hace un update as que hay que cronear esto para mantener al da con
los objetos la tabla.
.&6*:8 .&8% lastIstate
6*2*C8 o'@.o'@ectIi)( 0
C:%4 nagios.nagiosIo'@ects 36 o'@
75*:* o'@.o'@ectIi) &%8 .&
;6*2*C8 o'@ectIi) C:%4 lastIstate<L
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.
O!AD 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).
Sistema de loggueo centrali+ado
Se tiene la necesidad de un sistema que reciba y almacenes archivos de registros
determinados de n* servidores. Que se disponga de una interfaz de acceso a esos
datos, para la organizacion y procesamiento de los mismos, con lo cual se podran
detectar eventos, resolver situaciones y emitir distintos tipos de alarmas.
Syslog es un estndar de facto para el envo de mensajes de registro en una red
informtica IP. Por syslog se conoce tanto al protocolo de red como a la aplicacin o
biblioteca que enva los mensajes de registro.
Un mensaje de registro suele tener informacin sobre la seguridad del sistema,
aunque puede contener cualquier informacin. Junto con cada mensaje se incluye la
fecha y hora del envo.
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.
El protocolo syslog es muy sencillo: existe un ordenador servidor ejecutando el
servidor de syslog, conocido como syslogd (demonio de syslog). El cliente enva un
pequeo mensaje de texto (de menos de 1024 bytes).
Los mensajes de syslog se suelen enviar va UDP, por el puerto 514, en formato de
texto plano. Algunas implementaciones del servidor, como syslog-ng, permiten usar
TCP en vez de UDP, y tambin ofrecen Stunnel para que los datos viajen cifrados
mediante SSL/TLS.
(eneralidades de un sistema de log:
:og es el registro de acciones y eventos )ue tienen lugar en un sistema#
:os logs son el primer registro de la actividad en los sistemas y redes#
:os logs de un sistema son una parte primaria de la seguridad y pueden ser usados
en la deteccin de ata)ues e intrusiones, as como en el anlisis de fallas de
&ard+are y soft+are#
El programa syslog, es una interface que provee un framework standard para que
tanto programas como el mismo sistema operativo puedan generar mensajes que
peuden ser almacenados localmente o ser enviados a un host remoto.
Originalmente escrito para Unix, se convirti en un standard que se usa en muchos
sistemas operativos y dispositivos de red.
& Cual es la utilidad de un sistema de syslog centrali+ado '
En un sistema de syslog centralizado, un server comn recibe todos los mensajes
de syslog de todos los sistemas de la red. Esto incluye logs de los servers
Unix/linux/Windows etc, firewalls, y dispositivos de red (routers, switches, etc)
Hay varias ventajas de un sistema de syslog centralizado
El syslog puede ser conectado en un segmento de red diferente protegido
por un firewall
para mantener ms segura la informacin
Teniendo los mensajes de todos los equipos, puede hacerse una correlacin
de ataques o
fallas en distintos puntos de una manera mucho ms sencilla. Por ejemplo si en el
syslog aparece un mensaje de desconexin de la interface de red de varios servers
en el mismo momento, es lgico suponer una falla en el switch donde estos servers
estan conectados.
Un usuario no deseado que haya ingresado en un server, no podr alterar los
mensajes que
se hayan almacenado en el server central.
Se pueden generar alertas usando sistemas de monitoreo de logs.
Sistema de monitoreo de logs
El anlisis de logs es una herramienta muy importante para mantener el control de
servers y dispositivos de red.
Sin embargo esta es una de las tareas que ms tiempo consume y por consiguiente
que menos se hace.
Con la cantidad de mensajes informativos que se generan en un sistema de log,
detectar en forma manual los mensajes de problemas es muy dificultoso y con
mucha probabilidad de error. Esto se v aumentado cuando se usa un sistema de
syslog centralizado, donde la informacin proviene de varias fuentes distintas.
Muchas soluciones de monitoreo se basan en sumarizar la informacin de archivos
de log de dias previos.
Esto es muy til para la generacin de estadsticas y anlisis posterior a una falla o
intrusin, pero no tanto para la resolucin de problemas.
Un administrador no puede actuar en forma proactiva, previamente a que el error
ocurra.
Muchas fallas o accesos no autorizados se ven precedidos por mensajes que de
haber sido detectados, podran haber permitido tomar acciones preventivas.
Por ejemplo, un acceso no autorizado via ssh, puede haber estado precedido por
una gran cantidad de intentos fallidos de acceso.
Disponer una solucin online de monitoreo, permite disponer de herramientas que
pueden ayudar a prevenir problemas graves antes que ocurran.
Detectar eventos en el momento que ocurren permite generar acciones en ese
mismo instante y no luego de las consecuencias.
Siguiendo con el ejemplo del acceso ssh, podra bloquearse el acceso ssh desde
determinada direccin IP despues de un nmero de intentos fallidos de acceso.
Un concepto que aparece aqu es el de correlacin de eventos.
Un sistema automatizado de anlisis de logs que pueda hacer una correlacin de
varios eventos simplifica y acelera el monitoreo de eventos consolidando alertas y
mensajes de error en un mensaje ms corto y fcil de entender.
Una serie de operaciones estn relacionadas con la correlacin de eventos.
Compresin toma varias apariciones del mismo evento y se examina la duplicacin
de informacin, se remueve las redundacias y se reporta como un nico evento. De
esta manera 1000 mensajes "route failed se convierte en un nico alerta que dice
"route failed 1000 times Recuento reporta un nmero especfico de eventos
similares como uno solo. Esto se diferencia de la compresin en que no solo cuenta
en que sea el mismo evento, sino que se supere un determinado umbral para
generar un reporte.
Supresin asocia prioridades con alarmas y permite que el sistema suprima un
alarma de prioridad ms baja si ha ocurrido un evento de prioridad mayor.
Generalizacin asocia alarmas con eventos de ms alto nivel que son los que son
reportados.
Esto puede ser til para por ejemplo para correlacionar eventos de mltiples discos
de un array.
No se necesita ver cada mensaje especfico si se puede determinar que el array
completo tiene problemas.
Correlacin basada en tiempo puede ser til estableciendo causalidad. A menudo
una informacin puede ser obtenida relacionando eventos que tienen una relacin
temporal especfica.
E*emplos gen?ricosD
El Evento A est seguido del Evento B.
Este es el primer Evento A desde el Evento B reciente.
El Evento A sigue al Evento B dentro de los dos minutos.
El Evento A no fue observado dentro del Intervalo I.
O$*etivos
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.
So$re Syslog%(
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.
E1plicacion 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
!areas
Se instalo el software syslog-ng dentro de un servidor Debian.
apt-get install syslog-ng
En la instalacion como resultante se tiene el siguiente archivo de configuracion
principal
/etc/syslog%ng/syslog%ng:conf
Clientes
En los clientes se procedi a configurar el syslog convencional para que loggueara
por UDP hacia el servidor syslog.
syslog%ng:conf
syslog-ng.conf
)estination syslogIserver 0
tcp; R0...!R port;UE< <%
1%

filter fIlocal6 0 facility;local6<% &%

filter fIauth 0
facility;auth( authpriv<%
1%
log 0
source;src<%
filter;fIauth<%
)estination;syslogIserver<%
1%

log 0
source;src<%
filter;fIlocal6<%
)estination;syslogIserver<%
1%
syslog:conf
syslog.conf
auth.*%authpriv'(%auth'notice%auth'error%auth'in)o%authpriv'non
e% *!+'!'!'"
local6.* @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 +:%4+8IC%443&FT>:*8:&IG32T/XLlogger -p local6.)e'ug R/;=hoami< P/
/Q# /;history S se) Rs/^P Q*P0-HQ\OP Q*//R < P/:*8:&IG32QR>
Configuraci)n del Servidor
Debian GNU/Linux Etch
Archivo /etc/syslog-ng/syslog-ng.conf
Opciones generales, fuentes de donde obtener informacin, filtros y destinos
paracada filtro
options 0
longIhostnames;off<L
# )oesn>t actually help on 6olaris( log;3< truncates at 0!E chars
logImsgIsize;"H!<L
# 'uffer @ust a little for performance
# sync;<L V- Feprecate) - use flushIlines;< instea)
flushIlines;<L
# memory is cheap( 'uffer messages una'le to =rite ;li-e to
loghost<
logIfifoIsize;63"E<L
# 5osts =e )on>t =ant syslog from
#'a)Ihostname;R^;ctl).Scm)Stm)Slast</R<L
# 8he time to =ait 'efore a )ea) connection is reesta'lishe)
;secon)s<
timeIreopen;0<L
#9se F&6 so that our goo) names are use)( not hostnames
useI)ns;no<L
)nsIcache;yes<L
#9se the =hole F&6 name
useIfB)n;no<L
-eepIhostname;no<L
chainIhostnames;no<L
#:ea) permission for everyone
perm;06EE<L
# 8he )efault action of syslog-ng .6.0 is to log a 68386 line
# to the file every 0 minutes. 8hat>s pretty ugly after a =hile.
# Change it to every ! hours so you get a nice )aily up)ate of
# # ho= many messages syslog-ng misse) ;0<.
stats;E3!00000<L
1L
# 2og .nterno
source interno 0
# message generate) 'y 6yslog-&$
internal;<L
# stan)ar) 2inux log source ;this is the )efault place for the
syslog;<
# function to sen) logs to<
unix-stream;R/)ev/logR<L
# messages from the -ernel
file;R/proc/-msgR logIprefix;R-ernel# R<<L
1L
# Create )estination to 2og`illa
)estination )Ilogzilla 0
program;R/usr/local/nagios/syslog/scripts/)'Iinsert.plR
template;R/5%68\t/C3C.2.8?\t/+:.%:.8?\t/2*G*2\t/83$\t/?*3:-/4%&85-
/F3?\t/5%9:#/4.&#/6*C\t/+:%$:34\t/46$\nR<
<L
1L
source externo 0
# use the follo=ing line if you =ant to receive remote 9F+
logging messages
# ;this is eBuivalent to the R-rR syslog) flag<
# 3mpliamos el limite )e conexiones para reci'ir gran canti)a)
)e )atos )e 2%$6 externos
u)p;ip;0.0.0.0< port;UE<<L
tcp;ip;0.0.0.0< port;UE< max-connections;U0< <L
1L
# 8ell syslog-ng to log to our ne= )estination
log 0
source;externo<L
)estination;)Ilogzilla<L
1L
# 3lertas )e &agios *vent)'
)estination )Ievent)' 0
pipe;
R/usr/local/nagios/var/r=/syslog-ng.pipeR(
template;R/5%68\t/6%9:C*.+\t/+:.\t/?*3:-/4%&85-/F3?\t/5%9:#/4.&#
/6*C\t/+:%$:34\t/46$\nR<
templateIescape;no<
<L
1L
log 0
source;externo<L
)estination;)Ievent)'<L
1L
PHP%Syslog%ng
ara la visualizacion de los logs via +eb, bus)ueda y demas operaciones para su
administracion se instalo, configuro y modifico a necesidad parte de codigo del
sof+are p&p*syslog*ng )ue provee de una interfaz +eb con soporte de bus)uedas y
)ue 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).
3lias /syslog R/usr/local/php-syslog-ng/htmlR
VFirectory R/usr/local/php-syslog-ng/htmlRW
%ptions 3ll
%r)er allo=()eny
3llo= from all
662:eBuire662
3llo=%verri)e &one
V/FirectoryW
Integraci)n con agios
Eventd$
&4ue es Eventd$'
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.
&C)mo 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 (syslog-
ng2mysql.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
!IPQs varios
So$re performance
Compilar Nagios y NDO con optimizaciones para nuestro procesador
http://en.gentoo-wiki.com/wiki/Safe_Cflags
Ver los tips de la documentacion oficial
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
$agios utiliza cada vez )ue necesita ejecutar un c&ec1 dos for1s en vez de uno,
esto le trae entre otros beneficios el aislamiento del proceso &ijo# 6in embargo la
utilizacin de C! se incrementa necesariamente# %es&abilitando esta opcin puede
incrementarce la performance en instalaciones grandes#
Configuracin por defecto:
chil)IprocessesIfor-It=iceT
Configuracin recomendada:
chil)IprocessesIfor-It=iceT0
Flap ,etection
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.
So$re los flags de compilacion
Ejemplo para un Pentium Dual E2160 o un Intel Quad Core
C5%68TRi6"6-pc-linux-gnuR
CC23$6TR-marchTprescott -%! -pipe -fomit-frame-pointerR
CKKC23$6TR/0CC23$61R
Los incluimos de la siguiente manera en el proceso de compilacion de Nagios
C5%68TRi6"6-pc-linux-gnuR CC23$6TR-marchTprescott -%! -pipe -fomit-
frame-pointerR CKKC23$6TR/0CC23$61R ./configure
La misma configuracion es valida para compilar MySQL (ej 5.1.37)
C5%68TRi6"6-pc-linux-gnuR CC23$6TR-marchTprescott -%! -pipe -fomit-
frame-pointerR CKKC23$6TR/0CC23$61R ./configure --=ith-'ig-ta'les
--=ith-pluginsTpartition(myisam(inno'ase
,O
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 R8:9&C38* 83,2* nagiosIservicechec-sR S /usr/'in/mysBl -u root
--'atch --)ata'aseTnagios
echo R8:9&C38* 83,2* nagiosIlogentriesR S /usr/'in/mysBl -u root --'atch
--)ata'aseTnagios
echo R8:9&C38* 83,2* nagiosIserviceIcontactgroupsR S /usr/'in/mysBl -u
root --'atch --)ata'aseTnagios
echo R8:9&C38* 83,2* nagiosIhostchec-sR S /usr/'in/mysBl -u root --'atch
--)ata'aseTnagios
Para luego incluirlo en el cronta$, 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(U(30(EU * * * root /usr/local/nagios/s'in/truncarI)'.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.
# Neep time) events for !E hours
#maxItime)eventsIageTEE0
maxItime)eventsIageT!0
# Neep system comman)s for =ee-
#maxIsystemcomman)sIageT00"0
maxIsystemcomman)sIageT
# Neep service chec-s for =ee-
#maxIservicechec-sIageT00"0
maxIservicechec-sIageT!E0
# Neep host chec-s for =ee-
#maxIhostchec-sIageT00"0
maxIhostchec-sIageT!E0
# Neep event han)lers for 3 )ays
#maxIeventhan)lersIageTEE6E0
maxIeventhan)lersIageT60
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.
mysBlchec- a-auto-repair nagios nagiosIservicechec-sL
.eto/ues al codigo fuente
Para que cuando elegimos exportar los informes de disponibiliad en formato CSV,
no nos aparesca en la ventana del navegador y en cambio nos abra un cuadro de
dialogo para elegir guardar o abrir con un programa externo, deberemos modificar
los encabezados HTTP que imprime Nagios en dicho momento.
cgi/avail:c
if;outputIformatTT5842I%98+98<
printf;RContent-type# text/html\r\n\r\nR<L
else0
printf;RContent-type# plain/text\r\n\r\nR<L
returnL
1
Lo cambiaremos como :
if;outputIformatTT5842I%98+98<
printf;RContent-type# text/html\r\n\r\nR<L
else0
printf;RContent-Fisposition#
attachmentLfilenameTinformeImensual-nagios.csv
Content-type#application/csv\r\n\r\nR<L
returnL
1
Scripts @tiles
A continuacion se detallan scripts que pueden ser de utilidad para el dia a dia con
Nagios
Rolcado de estado actual : Baciendo uso de la clase 6tatus:og disponible en
C5$ podemo parsear el contenido del arc&ivo status#dat de $agios, para luego
e(portar su contenido
#!/usr/bin/perl

use &agios##6tatus2ogL

my /log T &agios##6tatus2og-Wne=;
Cilename TW R/)ev/shm/status.)atR(
Gersion TW 3.0
<L
print;RContent-type# text/xml\n\nR<L
print;RVXxml versionT>.0>XWR<L
print;RVstatusW\nR<L
foreach my /host ;/log-WlistIhosts;<< 0
print;RVhostW\nVnameW/hostV/nameW\nVservicesWR<L
foreach my /serv ;/log-WlistIservicesIonIhost;/host<< 0
print ;RVserviceW\nR<L
print ;ref /serv<L
my /st T /log-Wservice;/host( /serv<L
foreach /tag ;/st-WlistItags;<< 0
print;RV/tagW//st0/tag1V//tagW\nR<L
1
print ;RV/serviceW\nR<L
1
print;RV/servicesW\nV/hostW\nR<
1
print;RV/statusWR<L
Recordemos que para instalar modulo de CPAN deberemos ejecutar
# perl -4C+3& -e shell
cpanW install 4%F92%##&%4,:*
*@emplo para este caso
cpanW install &agios##6tatus2og
Ejemplo de uso de Nagios::Report
use &agios##:eport L
my /x T &agios##:eport-Wne=;BVlocalIcgi nagiosI=e'Iserver nagiosIuserW(
P >!ExJ> Q( >thismonth><
or )ie RCan>t construct &agios##:eport o'@ect.R L
my @theseIfiel)s T B=;
5%68I&34*
+*:C*&8I8%832I8.4*I9+
< L
/x-Wm-report;
\@theseIfiel)s(
# ,ll records
# sub - ! &.
# ,ll records whose /0S12N,M3 starts with
4,lb4
# sub - m 56 7 *2% m 8h 7 86-/0S12N,M3&%
8h 79 /:,lb/ &.
# ;egrettabl. this is 2N012 the same since
# *2 can4t be used as a hash'
# sub - 82-/0S12N,M3& 79 /:,lb/ &
# ,ll records with an up time percent < =#5
sub 0
my ZC T @IL
my /u T /C0+*:C*&8I8%832I8.4*I9+1L
/u T[ s/5//L
/u W 0
1(
# Sort order
Ycomp; alpha TW 0( ascen) TW 0( fiel)s TW P B=;8%832I8.4*IF%7&
8%832I8.4*I9&:*3C53,2*< Q<(
# Sorts descending b ma> o) 101,?21@M32A0BN and 101,?21@M32CN;3,$/,D?3
# A@E sorters remember that 8a and 8b 2must2
be in NagiosFF;eport pacGage'
# eg b 101,?2A0BN21@M3 descending'
# sub - m 5) 7 *2 %
# pacGage NagiosFF;eport%
# 8bHIJ8)-101,?21@M32A0BN&K <7I 8aH
IJ8)-101,?21@M32A0BN&K
# &.
# Same as
# Lcomp(alpha 7I +. ascend 7I +. )ields 7I
J4101,?21@M32A0BN4K)
# Same but harder.
# sub - pacGage NagiosFF;eport% 8bHIJ!MK
<7I 8aHIJ!MK &.
# 0ptional callbacG to add or mangle )ields'
# ,dd " )ields )or downtime vals in hours
minutes and secs'
sub 0
/C T shift @IL
/C-W0+*:C*&8I8%832I8.4*I9+1 T[ s/5//L
/C-W08.4*I9+I5544661 T t!hms; /C-W08%832I8.4*I9+1 <(
/C-W08.4*IF%7&I5544661 T t!hms; /C-W08%832I8.4*IF%7&1 <(
/C-W08.4*I9&:*3C5I5544661 T t!hms; /C-
W08%832I8.4*I9&:*3C53,2*1 < L
B=;8.4*I9+I554466 8.4*IF%7&I554466 8.4*I9&:*3C5I554466<
1
< L
/x-WcsvI)ump L
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 Hw
my /oIhoststate T /*&G0&3$.%6I5%686838*1L
# Nagios monitored host checG output data
my /oIhostoutput T /*&G0&3$.%6I5%68%98+981L
# Nagios date when the event was recorded
my /oI)atetime T /*&G0&3$.%6I2%&$F38*8.4*1L
# 1he recipients de)ined in 8$0N1,$13M,@?8
my /oItoIrecipients T /*&G0&3$.%6IC%&83C8*43.21L
use Fata##Fumper##ConciseL
print RVpreWRL
print Fumper;Z*&G<L
print RV/preWRL
Ejemplo de mk_livestatus
#!/usr/bin/pthon
#
# Sample program )or accessing the ?ivestatus Module
# )rom a pthon program
soc-etIpath T R/var/li'/nagios/r=/liveR

import soc-et
s T soc-et.soc-et;soc-et.3CI9&.K( soc-et.6%CNI68:*34<
s.connect;soc-etIpath<

# Brite command to socGet
s.sen);R$*8 hosts\nR<

# @mportantF $lose sending direction' 1hat wa
# the other side Gnows. we are )inished'
s.shut)o=n;soc-et.6598I7:<

# Now read the answer
ans=er T s.recv;00000000<

# Parse the answer into a table (a list o) lists)
ta'le T P line.split;>L>< for line in ans=er.split;>\n><P#-Q Q

print ta'le
Llamando al socket directamente desde PHP.
/)ataIa))ressTRunix#///usr/local/nagios/var/r=/liveRL
/BueryTR$*8 services\nCilter# hostIgroups WT
6ervicios$enerales\nColumns# hostIname hostIa))ress )isplayIname
serviceIstate pluginIoutput notesIurl\n%utputCormat# @son\n\nRL
/fp T fsoc-open;/)ataIa))ress(0<L
if ;A/fp< 0
echo R/errstr ;/errno<V'r /W\nRL
1 else 0
/returnval T RRL
f=rite;/fp(/Buery<L
=hile ;Afeof;/fp<< 0
/returnval T /returnval.fgets;/fp( !"<L
# print 8returnval%
1
fclose;/fp<L
if ;/returnval TT RPQ R<
/returnval T RRL
1
printIr;@sonI)eco)e;/returnval(true<<L
Llamando al socket indirectamente desde PHP utilizando uni(cat.
Ejemplo de como obtener la lista de equipos y su estado desde php y exportarlo a
formato CSV
/listaIservi)ores T shellIexec;R/'in/echo -e \R$*8 hosts\nColumns# name
a))ress alias state\n\R S /usr/local/'in/unixcat
/usr/local/nagios/var/r=/liveR<L
/listaIhosts T strIgetcsv;/listaIservi)ores( R\nR<L
Convertir el timestamp de nagios.log a human readable
tail -f nagios.log S perl -pe >s/;\)O</localtime;/</e>
#4# % !"e #ivestatus 4uery #anguage
El lenguaje de consultas de Livestatus, basicamente consiste en consultas del tipo
GET (case sensitive) con estos parmetros a los cuales consideraremos como
equivalente a tablas SQL :
hosts - your Nagios hosts
services - your Nagios services, joined with all data from hosts
hostgroups - you Nagios hostgroups
servicegroups - you Nagios servicegroups
contactgroups - you Nagios contact groups
servicesbygroup - new in 1.1.3 - all services grouped by service groups
servicesbyhostgroup - new in 1.1.3 - all services grouped by host groups
hostsbygroup - new in 1.1.3 - all hosts group by host groups
contacts - your Nagios contacts
commands - your defined Nagios commands
timeperiods - time period definitions (currently only name and alias)
downtimes - all scheduled host and service downtimes, joined with data
from hosts and services.
comments - all host and service comments
log - a transparent access to the nagios logfiles (include archived ones)ones
status - general performance and status information. This table contains
exactly one dataset.
columns - a complete list of all tables and columns available via Livestatus,
including descriptions!
Rer como Human .eada$le el timestamp del arc"ivo nagios:log
# cat /usr/local/nagios/var/nagios.log S perl -pe >s/
;\)O</localtime;/</e>
etMyS#A
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/
Ejemplo de consulta con netMySLA
#ista 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 npIchec-3vaila'ility;>srv-=e'>( >588+>( true( true( true( true(
&922( >!00"-0- 00#00#00>( >!00H-0J-0 00#00#00>( false( false<L
slaid
"ostob#ecti
d
"ostna!
e
serviceob#ecti
d
servicena!
e
outagepercen
t
availabilitypercen
t
) )99 sr"-we1) )I<) %,,P G.G99I@I< JJ.JII9
Ejemplo de como llamar al procedimiento desde PHP5, para por ejemplo conocer el
SLA de 1 servicio en n cantidad de hosts.
/consulta TR6*2*C8 nagiosIhosts.)isplayIname
C:%4
nagiosIhostgroups(nagiosIinstances(
nagiosIhosts(nagiosIhostgroupImem'ers(
nagiosIo'@ects
75*:*
nagiosIhostgroups.hostgroupIi)TnagiosIhostgroupImem'ers.hostgroupIi)
3&F
nagiosIhostgroupImem'ers.hostIo'@ectIi)TnagiosIhosts.hostIo'@ectIi)
3&F
nagiosIhostgroups.hostgroupIo'@ectIi)TnagiosIo'@ects.o'@ectIi)
3&F
nagiosIo'@ects.name T >0hostgroupIaIconsultar1>
%:F*: ,? nagiosIhosts.)isplayIname 36CRL



/p)o T new +F%;RmysBl#)'nameTnagiosLhostT!J.0.0.R( RnagiosR(RnagiosR<L
/listaIhosts T /p)o-Wprepare;/consulta<L
/listaIhosts-Wexecute;<L
/hosts T /listaIhosts-Wfetchall;<L

/service T R6ervicio a consultar en los hostsRL

foreach;/hosts as /host< 0
/Buery T /p)o-Wprepare;Rcall npIchec-3vaila'ility;>R.
/hostP>)isplayIname>Q.R>( >R./service.R>( false( false( false( false(
true( >R./startItime.R>( >R./en)Itime.R>( false( false<R<L
/Buery-Wexecute;<L
printIr;/Buery-Wfetch;<<L
1
Devolviendonos algo como esto por cada hosts:
3rray
;
PslaIi)Q TW
PhostIo'@ectIi)Q TW E63
PhostInameQ TW 00
PserviceIo'@ectIi)Q TW
PserviceInameQ TW 6ervicio
PoutageIpercentQ TW 0
Pavaila'ilityIpercentQ TW 00
<
Tambien podemos utilizar el script np'aggregate#s& para ejecutarlo por medio de
cron y tener autogenerados los informes, por cada hosts y cada servicios,
organizados diaria, semanal, mensual y anualmente.
,ocumentacion 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.
Caracter>sticasD
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 PHPcomo este :
<?php
/**
* Cor=ar)er to )o-u.php
*
* @license $+2 ! ;http#//===.gnu.org/licenses/gpl.html<
* @author _oerg 2inge Vpitchfor-@e)er)rom.)eW
*/

/hostTstrIreplace;> >( >I>(strtolo=er;/I$*8P>host>Q<<L

/srvTstrIreplace;> >( >I>(strtolo=er;/I$*8P>srv>Q<<L



if ;/hostATRR YY /srvATRR< 0

hea)er;R2ocation# )o-u.phpXi)Tnagios#R./host.R#R./srv<L

exitL

1 elseif;/hostATRR< 0

hea)er;R2ocation# )o-u.phpXi)Tnagios#R./host.R#hostR<L

exitL

1 else 0

hea)er;R2ocation# )o-u.phpXi)Tnagios#in)exR<L

exitL

1
XW
Con lo cual deberemos agregar algunas directivas a la configuracin de Nagios.
Ejemplo de un serviceextinfo, aunque tambien lo podemos aplicar dentro de la
plantilla inicial del servicio.
)efine serviceextinfo 0
hostIname router
serviceI)escription ping
notesIurl /=i-i/nagios.phpXhostT/5%68&34*/YsrvT/6*:G.C*F*6C/
iconIimage help.png
1
Desde Dokuwiki haciendo uso de la extension PHP, podemos embeber los datos
actuales de los objetos de Nagios, gracias a MK Live Status
VphpW
/listaIservi)ores T shellIexec;R/'in/echo -e \R$*8 hosts\nColumns# name
a))ress alias state\n\R S /usr/local/'in/unixcat
/usr/local/nagios/var/r=/liveR<L
/listaIhosts T strIgetcsv;/listaIservi)ores( R\nR<L
echo RV)iv classT>level!>W
V)iv classT>ta'le sectione)it3>W
Vta'le classT>inline>W
VthW5ostV/thWVthW.+V/thWVthWFescripcionV/thWVthW*sta)o
3ctualV/thWVthW4etricas / .nformesV/thW
RL

foreach ;/listaIhosts as /host< 0
/host T explo)e;RLR( /host<L
print RVtrWVt)WRL
print RVa hrefT>)o-u.phpXi)Tnagios#servi)ores#R./hostP>0>Q.R>WR.
/hostP>0>Q.RV/aWRL
print RV/t)WVt)WRL
print /hostP>>QL
print RV/t)WVt)WRL
print /hostP>!>QL
print RV/t)WVt)WRL
if;/hostP>3>QTT0< print RVa hrefT>/nagios/cgi-'in/extinfo.cgiX
typeTYhostTR./hostP>0>Q.R>WVfont colorT>#00"000>W3::.,3V/fontWV/aWRL
if;/hostP>3>QTT< print RVa hrefT>/nagios/cgi-'in/extinfo.cgiX
typeTYhostTR./hostP>0>Q.R>WVfont
colorT>#CC0000>WC3Y.acuteLF%V/fontWVimg
srcT>/nagios/=i-i/li'/images/smileys/iconIexclaim.gif> classT>mi))le>
/WV/aWRL
if;/hostP>3>QTT!< print RVa hrefT>/nagios/cgi-'in/extinfo.cgiX
typeTYhostTR./hostP>0>Q.R>WVfont
colorT>#CC0000>W9&:*3C5*3,2*V/fontWVimg
srcT>/nagios/=i-i/li'/images/smileys/iconIexclaim.gif> classT>mi))le>
/WV/aWRL
print RV/t)WRL
print RVt)WVa hrefT>/pnpEnagios/in)ex.php/graphXhostTR.
/hostP>0>Q.R>W+erformanceV/aW / Va hrefT>/nagios/cgi-'in/avail.cgiX
getI)ateIpartsTYhostTR./hostP>0>Q.R>WFisponi'ili)a)V/aWV/t)WV/trWRL
1

echo RV/ta'leWV/)ivWV/)ivWRL
V/phpW
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.
VphpW
if ;AfunctionIexists;Rssh!IconnectR<< )ie;Rfunction ssh!Iconnect )oesn>t
existR<L
if;A;/con T ssh!Iconnect;RoracleR( !!<<<0
echo R&o pue)o esta'lecer una conexion 665\nRL
1 else 0
if ;ssh!IauthIpu'-eyIfile;/con( >root>(
>/home/usuario/.ssh/i)Irsa.pu'>(
>/home/usuario/.ssh/i)Irsa>( >secret><< 0
// echo NPublic Oe ,uthentication Success)ulPnN%
1 else 0
)ie;>+u'lic Ney 3uthentication Caile)><L
1
if ;A;/stream T ssh!Iexec;/con(
R/home/usuario/)o-u=i-iIarchlogs.plR <<< 0
echo Rfail# una'le to execute comman)\nRL
1 else 0
// collect returning data )rom command
streamIsetI'loc-ing;/stream( true<L
/)ata T RRL
=hile ;/'uf T frea);/stream(E0H6<< 0
/)ata .T /'ufL
1
fclose;/stream<L
print /)ataL
1
1
V/phpW
dokuwiki_archlogs.pl
A/usr/'in/perl
use strictL
use =arningsL

sub getIsorte)Ifiles 0
my /path T shiftL
open)ir my;/)ir<( /path or )ie Rno pue)o a'rir /path# /ARL
my Zhash T map 0/I TW ;stat;/I<<PHQ SS un)ef1 # saltar listas
vacias
map 0 R/path/IR 1
grep 0 m/'db)/i 1
rea))ir /)irL
close)ir /)irL
return ZhashL
1

my Zfiles T getIsorte)Ifiles;R/oracle/arclog/F,.F/R<L
print R
Vta'le classT>inline>W
VthW3rchivoV/thWVthW8imestampV/thWRL
foreach my /-ey ;sort0/files0/a1 VTW /files0/'11 -eys Zfiles< 0
my /filename T /-eyL
/filename T[ s/P'P///gL
/filename T[ s/P'P'//gL
print RVtrWVt)W/filenameV/t)WVt)WR( scalar
localtime;/files0/-ey1<( RV/t)WV/trW\nRL
1
print RV/ta'leWRL
Plugins interesantes
c"ec7=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 c&ec1'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
irEK0#E@F#A#E,EK0#E@F#A#EE,EK0#E@F#A#0E. Luego en la entrada de nuestro
comando de chequeo realizamos modificaciones para que quede algo como esto :
)efine comman)0
comman)Iname chec-ImultipleI)ns
comman)Iline /96*://chec-Imultia))r.pl /96*://chec-I)ns -5
/3:$/ -s /5%683FF:*66/
1
Con lo cual el utilitario c&ec1'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
apac"e
"etc"apac&e0"conf#d"security
Ciertos parametros son tiles para evitar cierta exposicin de nuestro Apache.
6erver8o-ens +ro)
6erver6ignature %ff
8race*na'le %ff
c"ec7=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:"
#de)ine ,Q3N12@N@26@?3 R/usr/local/nagios/etc/sapmon/agent'c)gS
#de)ine ,Q3N12?0Q@N26@?3 R/usr/local/nagios/etc/sapmon/login'c)gS
#de)ine ,Q23T26@?3 R/usr/local/nagios/etc/sapmon/moni2tr'c)gS
sap=moni=ccm:"
#de)ine ,Q3N12@N@26@?3 R/usr/local/nagios/etc/sapmon/agent'c)gS
#de)ine ,Q3N12?0Q@N26@?3 R/usr/local/nagios/etc/sapmon/login'c)gS
Archivo "usr"local"nagios"etc"sapmon"login#cfg de ejemplo :
P2%$.&I+:FQ
2%$.&T-) +:F -u nagios -p pass=or) -c 300 -h 0...H0 -s 00
Archivo "usr"local"nagios"etc"sapmon"agent#cfg de ejemplo :
,ESC.IP!IO = <Description of the Template> Arbitrary description field
MOI=SE!=AME = <Monitor collection> Monitor collection in RZ20
MOI=AME = <Monitor name> Name of the specific monitor
MAS=!.EE=,EP!H = <number> Monitor loading depth
PA!!E.=F = <SAPSID>\<Context>\<Monitor object>\<Monitor attribut>
P8*4+238*I00Q
F*6C:.+8.%&TR2oa) 3verageR
4%&.I6*8I&34*T63+ CC46 3)min 7or-place
4%&.I&34*TR%perating 6ystemR
43KI8:**IF*+85T0
+388*:&I0TR,C*\'cemainI,C*I!6\C+9\Umin2oa)3verageR
+388*:&I0TR*\*\C+9\Umin2oa)3verageR

P8*4+238*I0Q
4%&.I6*8I&34*T63+ CC46 3)min 7or-place
4%&.I&34*TR%perating 6ystemR
43KI8:**IF*+85T0
+388*:&I!TR,C*\'cemainI,C*I!6\C+9\C+9I9*R

P8*4+238*I0!Q
G329*TF.32%$I:*6+%&6*I8.4*

P8*4+238*I03Q
6?68*4T,C*
3++2-6*:G*:T'cemain*
G329*TF.32%$I:*6+%&6*I8.4*

P8*4+238*I0EQ
4%&.I6*8I&34*TR63+ CC46 4onitor 8emplatesR
4%&.I&34*TRFialog %vervie=R
+388*:&I0TR,C*\*\Fialog\Cront*n)&et8imeR


P8*4+238*I0UQ
4%&.I6*8I&34*TR63+ CC46 4onitor 8emplatesR
4%&.I&34*TRFialog %vervie=R
+388*:&I0TR,C*\+7F*\Fialog\Cront*n)&et8imeR

P8*4+238*I00UQ
4%&.I6*8I&34*TR63+ CC46 4onitor 8emplatesR
4%&.I&34*TRFialog %vervie=R
+388*:&I0TR+0\*\Fialog\Cront*n)&et8imeR

P8*4+238*I06Q
4%&.I6*8I&34*TR63+ CC46 4onitor 8emplatesR
4%&.I&34*TRFialog %vervie=R
+388*:&I0TR*R

P8*4+238*I0JQ
4%&.I6*8I&34*TR63+ CC46 4onitor 8emplatesR
4%&.I&34*TR3vaila'ility an) +erformance %vervie=R
+388*:&I0TR*\3vaila'ility\*I,C**\R

# 6tan)ar) 63+ 8emplates
P8*4+238*IHHQ
G329*TC5*CNI63+I6?68*46

P8*4+238*I0UQ
4%&.I6*8I&34*TR63+ CC46 4onitor 8emplatesR
4%&.I&34*TRFialog %vervie=R
+388*:&I0TR*9sers2ogge).nR

P8*4+238*I0Q
4%&.I6*8I&34*TR63+ CC46 4onitor 8emplatesR
4%&.I&34*TR*ntire 6ystemR
+388*:&I0TR**s3ctR

P8*4+238*I!00Q
4%&.I6*8I&34*TR63+ CC46 4onitor 8emplatesR
4%&.I&34*TRFata'aseR
+388*:&I0TR*Cullest ta'lespaceR

P8*4+238*I!0Q
4%&.I6*8I&34*TR63+ CC46 4onitor 8emplatesR
4%&.I&34*TR*ntire 6ystemR
+388*:&I0TR*F,:eBuest8imeR

P8*4+238*I300Q
4%&.I6*8I&34*TR63+ CC46 4onitor 8emplatesR
4%&.I&34*TR%perating 6ystemR
+388*:&I0TR*Umin2oa)3verageR

P8*4+238*IHHHQ
4%&.I6*8I&34*TR63+ CC46 4onitor 8emplatesR
4%&.I&34*TR*ntire 6ystemR
+388*:&I0TR*R

P8*4+238*I060Q
#F*6C:.+8.%&TRCree 6=apR
4%&.I6*8I&34*T63+ CC46 3)min 7or-place
4%&.I&34*TR%perating 6ystemR
#43KI8:**IF*+85T0
+388*:&I0TR*\*\6=apI6pace\CreespaceR

P8*4+238*I0J0Q
F*6C:.+8.%&TFialog :esponse 8ime
4%&.I6*8I&34*T63+ CC46 4onitor 8emplates
4%&.I&34*TFialog %vervie=
+388*:&I0T+0\*\Fialog\:esponse8ime

P8*4+238*I0JQ
F*6C:.+8.%&TFialog :esponse 8ime
4%&.I6*8I&34*T63+ CC46 4onitor 8emplates
4%&.I&34*TFialog %vervie=
+388*:&I0T*

P8*4+238*I0HQ
F*6C:.+8.%&TRFialog:esponse8imeR
4%&.I6*8I&34*T63+ CC46 4onitors for %ptional Components
4%&.I&34*TR2ogon 2oa) ,alancingR
43KI8:**IF*+85T0
+388*:&I0TR*\*\Fialog\:esponse8imeR

P8*4+238*I00JQ
F*6C:.+8.%&TR8*68R
4%&.I6*8I&34*T63+ CC46 4onitors for %ptional Components
4%&.I&34*TR2ogon 2oa) ,alancingR
43KI8:**IF*+85T0
+388*:&I0TR63+\6erver3I63+I00\:36ervices\Fialog\:esponse8imeR


P8*4+238*IH00Q
F*6C:.+8.%&T_ava
4%&.I6*8I&34*T63+ _!** 4onitor 8emplates
4%&.I&34*T5eart'eat
+388*:&I0T*

P8*4+238*IH0Q
F*6C:.+8.%&T_ava
4%&.I6*8I&34*T63+ _!** 4onitor 8emplates
4%&.I&34*T3pplications
+388*:&I0T*

P8*4+238*I06Q
F*6C:.+8.%&T9sers-2ogge)-%n
4%&.I6*8I&34*TR63+ CC46 4onitor 8emplatesR
4%&.I&34*TRFialog %vervie=R
43KI8:**IF*+85T0
+388*:&I0T6.F\hostname*\Fi*\9s*


P8*4+238*I"J0Q
F*6C:.+8.%&T_ava
4%&.I6*8I&34*T8est _!** 4onitor 6et
4%&.I&34*T_!** *ngine Nernel
+388*:&I0TRKD\KD 6E 6erv 6EHE"EU0 mchpJtpa\6ystem 8hrea)s
+ool\4aximum8hrea)+ool6izeR

P8*4+238*I"JUQ
F*6C:.+8.%&T_ava
4%&.I6*8I&34*T8est _!** 4onitor 6et
4%&.I&34*T_!** *ngine Nernel
+388*:&I0TRKD\KD 6E Fisp 6EHE"E00 mchpJtpa\$eneral
;4essageContext<\3verage46+rocess8imeR


P8*4+238*I666Q
F*6C:.+8.%&T63+ 3vg. F, :eBuest 8ime )ehB0srm
4%&.I6*8I&34*TC*&8:32 4%&.8%:.&$ 6?68*4 ;63+ ,asis Nerpen<
4%&.I&34*T8est 6ystems 63+
+388*:&I0T6.F\hostname\Fialog\F,:eBuest8ime

P8*4+238*I66JQ
4%&.I6*8I&34* T R63+ CC46 8echnical *xpert 4onitorsR
4%&.I&34* T R3ll Contexts on 2ocal 3pplication 6erverR
+388*:&I0 T R*R

P8*4+238*I66"Q
4%&.I6*8I&34* T R63+ CC46 8echnical *xpert 4onitorsR
4%&.I&34* T R3ll Contexts on 2ocal 3pplication 6erverR
+388*:&I0 T R*\6?68*4\Cree spaceR


P8*4+238*IEJQ
4%&.I6*8I&34* T R63+ CC46 8echnical *xpert 4onitorsR
4%&.I&34* T R3ll Contexts on 2ocal 3pplication 6erverR
+388*:&I0 T R*\+63+6:396:\Cree spaceR

# 4onitorear *xten)e) memory en application 6erver
P8*4+238*IJ"EQ
4%&.I6*8I&34*TR63+ CC46 4onitor 8emplatesR
4%&.I&34*TR+erformance %vervie=R
+388*:&I0TR6.F\6.F3I00\**s3ctR

P8*4+238*IJ"UQ
4%&.I6*8I&34*TR63+ CC46 4onitor 8emplatesR
4%&.I&34*TR+erformance %vervie=R
+388*:&I0TR6.F\6.F!I00\**s3ctR

P8*4+238*IJ"6Q
4%&.I6*8I&34*TR63+ CC46 4onitor 8emplatesR
4%&.I&34*TR+erformance %vervie=R
+388*:&I0TR6.F\6.FI00\**s3ctR

# 4onitorear *xten)e) memory en Central .nstance
P8*4+238*IJ"JQ
4%&.I6*8I&34*TR63+ CC46 4onitor 8emplatesR
4%&.I&34*TR+erformance %vervie=R
+388*:&I0TR6.F\6.FI00\**s3ctR
Si queremos agregar en CCMS el monitoreo de X jobs debemos seguir esta
guiahttp://help.sap.com/saphelp_nw04/helpdata/en/1c/48803d48de0
610e10000000a114084/content.htm
# 4onitoreo )e Felay O :untime )e K @o'
P8*4+238*I!3EQ
4%&.I6*8I&34*TR6.F - 4onitorR
4%&.I&34*TR3ll 4onitoring ContextsR
+388*:&I0TR6.F\,ac-groun)\*I00I:,I06\Felay O :untimeR
Ejemplo de como podemos definir el comando en Nagios :
)efine comman) 0
comman)Iname chec-Isap
comman)Iline /96*://ccms/chec-Isap /3:$/
/I5%6863+.F/
register
1
)efine comman) 0
comman)Iname chec-IsapInp
comman)Iline /96*://ccms/chec-IsapInp.sh
/3:$/ /I5%6863+.F/
register
1
Por ejemplo si la salida del chequeo en SAP nos arroja pipes K, para que no
tengamos problemas con un falso perfdata, podemos apelar a este script :
c"ec7=sap=np:s"
#!/bin/bash
C4FTM/usr/local/nagios/li'exec/ccms/chec-Isap / /!M
*K.8T/X
echo /C4F S /'in/sed -e >s/S/-/g>
exit /*K.8
Para poder hacer correctamente el chequeo deberemos defini la
variableP=HOS!SAPI,P dentro de la configuracin del host :
I63+.F +:F
Hig"c"art for agios
Grficos RRD de PNP4Nagios en formato AJAX de Highcharts.
*RectorMap
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.
Ejemplo muy simple :
@Duery.noConflict;<L
@Duery;function;<0
var / T @DueryL
/;>#map><.vector4ap;0
map# >arImillIen>(
hover%pacity# 0.J(
hoverColor# false(
'ac-groun)Color# >transparent>(
zoom,uttons# false(
zoom%n6croll# false(
region6tyle# 0
initial# 0
fill# >#*3C6C>
1
1(
on:egionClic-# function;event( co)e<0
cargarIa@ax;>hostgroupIinfo.phpXco)eT>Oco)eO>><L
1
1<L
1<
Interfa+ 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 5842I8emplateI.8
O si nos encontramos en una distribucion derivada de Debian
apt-get install php-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 nagios)l#tbl'settings, de &ttp a &ttps.
Deberemos instalar NagiosQL donde residen los archivos HTML de Nagios,
usualmente en "usr"local"nagios"s&are. 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/nagiosBl/ -W 3rchivos )e configuracion
R /hosts -W Configuracion )e 5osts
R /services -W Configuracion )e 6ervicios
R /'ac-up/ -W ,ac-ups
R R /hosts -W ,ac-ups )e 5osts
R R /services -W ,ac-ups )e 6ervicios
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 touc& nagios)l3"install"C$5M:C'7$6<5::C;. Ahora podremos
comnezar la instalacion via web, una vez finalizada la instalacion deberemos
eliminar el archivo creado rm *f nagios)l3"install"C$5M:C'7$6<5::C;
Introduccion de uso de agios4#
Al ingresar a la ubicacion de NagiosQL nos aparecera una pantalla de login, en la
cual deberemos indentificarnos con el usuario que creamos al momento de la
instalacion.
Una vez ingresados al sistema, nos aparecera un menu con enlaces de uso a la
izquierda, con diferentes secciones
Dentro de la seccion supervision tendremos un resumen con el conteo de elementos
Su$Secci)n HostsD %entro de este apartado, tendremos un listado de los &osts
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 c&e)ueo,
alarmas etc#
Su$Secci)n ServiciosD %entro de este apartado, tendremos un listado de los
servicios asignados a sus correspondientes &osts, indicando su estado si es activo o
no, y a su vez dandonos la posibilidad de modificarlos#
Su$Secci)n (rupos de HostsD %entro de este apartado, tendremos un listado de
los grupos de &osts, en donde )ueramos definir un conjunto de &osts )ue tengan
)ue ver entre s por algLn servicio o alguna funcin )ue cumplan#
Su$Secci)n (rupo de ServiciosD %entro de este apartado, tendremos un listado
de los grupos de servicios, en donde )ueramos definir un conjunto de servicios )ue
tengan )ue ver entre s por alguna dependencia o )ue cumplan funciones
parecidas#
Su$Secci)n Plantillas de HostsD %entro de este apartado, tendremos las
plantillas )ue utilizaremos para afectar a los &osts de manera comLn en lo )ue
respecta a intervalos de alarmas"notificaciones, modo de c&e)ueo, contactos a
)uienes enviar datos, agrupacin, servicios asignados, auto definido como una
forma centralizada de cambiar la configuracin de determinado conjunto de &osts#
Su$Secci)n Plantillas de ServiciosD %entro de este apartado, similar al anterior
tendremos las plantillas )ue utilizaremos para afectar a los servicios de manera
comLn en lo )ue respecta a intervalos de alarmas"notificaciones, modo de
c&e)ueo, contactos a )uienes enviar datos, agrupacin, &osts en cuales ejecutarse,
auto definido como una forma centralizada de cambiar la configuracin de
determinado conjunto de servicios#
Su$Secci)n 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 :
,e i+/uierda a derec"a
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:
om$re del HostD 5)u definiremos el nombre real o de configuracin para
nosotros, sin espacios, comas, guiones L otros caracteres )ue no correspondan#
,escripci)nD Mnimo dato descriptivo de )ue funcin cumple el &osts, ejemplo
NsmonAAA0l( 2 6ervidor de monitoreoN
,irecci)nD %ireccin 7 del e)uipo
Como datos adicionales tenemos:
PadresD odremos definir una lista de &osts de los )ue depende la ruta de llegada
&acia ese determinado &ost dentro de la topologa de red#
(rupo de HostsD Conjuntos a los cuales pertenece dic&o &osts, igualmente si son
muc&os &osts de similares servicios )ue utilizan una misma plantilla, es mas
practico definir este dato en ella#
Comando de compro$aci)nD Comando para ejecutar el c&e)ueo de
comprobacin del &osts, igualmente si son muc&os &osts de similares servicios )ue
utilizan una misma plantilla, es mas practico definir este dato en ella#
ActivoD odemos activar o desactivar de la configuracin el e)uipo#
PA.(;P % PA.(OPD :ista de argumentos ordenados uno a uno para pasarle al
comando de comprobacin de dic&o &ost#
PlantillasD lantillas de las cuales depende el &ost para obtener determinados
datos de configuracin, dic&os datos contenidos en estas se pueden omitir en la
configuracin del &ost ya )ue se desprenden de esta#
Opciones de compro$aci)n del Host
Aqui podemos ver las opciones generales del hosts, intervalos de chequeo,
reintentos, periodo de chequeos etc. Donde dice `saltar es por que se deja esa
opcin a la determinada globalmente por la plantilla.
Estado inicialD or defecto $agios al iniciar asume )ue el &ost esta activo, pero
esto no necesariamente puede ser as, entonces podemos definirlo como?
O = UP
D = DOWN
U = UNREACHABLE
MT1imos intentos de compro$aci)nD M(ima cantidad de intentos de
comprobacin antes de definir el estado final del &ost#
Intervalo de reintentoD 7ntervalo de reintento entre cada intento de
comprobacin#
Intervalo de compro$aci)nD 7ntervalo entre cada comprobacin, incluidos sus
reintentos#
Compro$aci)n ActivaD Cs el tipo de c&e)ueo por defecto y ms usado por $agios,
ejecutado por s mismo con un determinado margen de tiempo para su ejecucin#
Compro$aci)n pasivaD Cs un c&e)ueo ejecutado por aplicaciones e(ternas y su
resultado devuelto a $agios para su procesamiento#
Periodo de compro$acionesD 6on los lapsos de tiempo en los cuales se
ejecutaran los c&e)ueos de dic&o &ost, por ejemplo las 0J &oras del da los G das
de la semana o solo &oras laborales de :unes a Viernes#
2m$ral de refrescoD 6e utiliza en la implementacin de c&e)ueos pasivos y en
entornos distribuidos para poner nfasis sobre el refresco de los datos de c&e)ueo
de un e)uipo#
.efresco de compro$aci)nD 5ctivar el refresco de c&e)ueos#
Concentraci)n en el e/uipoD !tilizar un comando luego de ejecutado el gestor de
eventos#
(estor de eventosD Comando a ejecutarse luego de obtenidos los resultados del
c&e)ueo del &ost#
(esto de eventos activadoD 5)u definiremos si utilizaremos o no un gestor de
eventos luego de los c&e)ueos#
2m$ral $a*o de oscilaci)nD 5)u definimos el umbral mnimo para considerar una
deteccin correcta del flapping de estado =cambios de estados muy repentinos>
2m$ral alto de oscilaci)nD 5)u definimos el umbral m(imo para considerar una
deteccin correcta del flapping de estado =cambios de estados muy repentinos>
,etecci)n de oscilaci)n activadaD 5ctivar o desactivar la deteccin de oscilacin
para el &ost#
Opciones de detecci)n de esta$ilidadD 5)u definimos )ue estado consideramos
para establecer el flapping de un &ost#
Mantener informaci)n de estadoD Cn caso de )ue reinicie $agios, mantener la
Lltima informacin de estadstica obtenida del c&e)ueo del &ost
Mantener el resto de la informaci)nD Mantener otra informacin Ltil sobre el
&ost entre los reinicios de $agios#
,atos so$re el rendimiento de los procesosD rocesar la informacin de
performance de los c&e)ueos, esto es Ltil ya )ue varios plugins de c&e)ueo y otras
utilidades utilizan esta informacin para coleccin de datos#
Opciones de alarmas del "ost
%esde este apartado podremos estableces las opciones de cmo llegaran las
notificaciones del estado del &ost a personal encargado de recibirlas#
Interfa+ 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 perfor!ance Supported platfor!s
chec/Fsn*pFstorage
chec/s storages
Cdis/s!swap! *e*ory!
etcQE
Nes &ll MIK9 co*pliant
chec/Fsn*pFint
chec/s inter(ace states!
usage on hosts! switch!
routers! etc
Nes &ll MIK9 co*pliant
chec/Fsn*pFprocess
chec/s i( process are
running! the nu*1er that
are running! *e*ory and
cpu used.
No &ll MIK9 co*pliant
chec/Fsn*pFload chec/s the load or the cpu Nes 2inu7! =indows! Cisco! &S@GG!
o( a *achine
%P Procur"e! 2in/Proo(!
Klucoat! No/ia!8ortinet!
Netscreen!%P-:.
chec/Fsn*pF"rrp
chec/s the inter(ace state
o( "rrp cluster
No
No/ia IP CB++P R ClusteringE!
2in/Proo(! &lteon
chec/Fsn*pFcp(w
chec/s Chec/point
8irewall) status
Nes Chec/point 8irewall
chec/Fsn*pF*e*
Chec/s *e*ory and swap
usage
Nes
2inu7/Netsn*p! Cisco! %P
Switch
chec/Fsn*pFwin Chec/s windows ser"ices No =indows
chec/Fsn*pFcss Chec/s css ser"ices state No CSS
chec/Fsn*pFen"
Chec/s en"irone*ental
status C(an! te*p! power
supplyE.
No
Cisco! No/ia! Kluecoat!
IronPort! 8oundry
chec/Fsn*pFns1o7
Chec/s ns1o7 "host R
diode status.
No NetSecureAne Net1o7
chec/Fsn*pF1oostedge Chec/s Koostedge ser"ices No Koostedge
chec/Fsn*pFlin/proo(Fnhr Chec/s lin/proo( N%+ No +adware 2in/proo(
Comandos default en agios
El sistema Nagios incorpora un gran nmero de comandos por default que se
pueden utilizar. Algunos de ellos hacen uso de libreras y paquetes que deben estar
instalados en el sistema. En las siguientes lneas se comentan cuales son los
comandos que vienen por default y que hacen.
c"ec7=$y=ss"
Este comando es muy interesante interesante. Permite ejecutar comandos en
ordenadores remotos va SSH (de forma segura, por tanto). El resultado de ese
comando ser tomado por Nagios.
Uso : check_by_ssh -H <host> -C <command> [-fqv] [-1|-2] [-4|-6]
P-6 PlinesQQ P-* PlinesQQ P-t timeoutQ P-i i)entityQ
P-l userQ P-n nameQ P-s servicelistQ P-% outputfileQ
P-p portQ P-o ssh-optionQ
Opciones: -h, -help
.mprimir ayu)a )etalla)a
-V, -version
.mprimir informacion )e version
-H, -hostname=ADDRESS
5ostname( )ireccion .+( or soc-et unix ;path completo en este caso<
-p, -port=INTEGER
+uerto a cheBuear
-4, -use-ipv4
9sar .+vE
-6, -use-ipv6
9sar .+v6
-1, -proto1
9sar protocolo )e 665 PoptionalQ
-2, -proto2
9sar protocolo ! )e 665 PoptionalQ
-S, -skip-stdout[=n]
.gnora to)as o las primeras n lineas )e 68F%98 PoptionalQ
-E, -skip-stderr[=n]
.gnora to)as o las primeras n lineas )e 68F*:: PoptionalQ
-f
Fecirle al 665 Bue realize un for- en vez )e una tty PoptionalQ.
6iempre )evolver %N si ssh es e@ecuta)o
-C, -command='COMMAND STRING'
Coman)o a e@ecutar en la maBuina remota
-l, -logname=USERNAME
&om're )e usuario 665 PoptionalQ
-i, -identity=KEYFILE
2lave 665 autoriza)a PoptionalQ
-O, -output=FILE
archivo )e coman)o externo )e &agios PoptionalQ
-s, -services=LIST
lista )e nom'res )e servicios &agios separa)os por >#> PoptionalQ
-n, -name=NAME
nom're corto )el host en la configuracion )e &agios PoptionalQ
-o, -ssh-option=OPTION
llamar ssh con la opcion >-o> ;pue)e ser usa)a multiples veces<
PoptionalQ
-q, -quiet
8ell ssh to suppress =arning an) )iagnostic messages PoptionalQ
-w, -warning=DOUBLE
:esponse time to result in =arning status ;secon)s<
-c, -critical=DOUBLE
:esponse time to result in critical status ;secon)s<
-t, -timeout=INTEGER
6econ)s 'efore connection times out ;)efault# 0<
-v, -verbose
4ostrar )etalles )e la linea )e coman)os para )e'ug ;&agios truncara
la sali)a<
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
)efine comman) 0
comman)Iname chec-IsshIloa)
comman)Iline /96*://chec-I'yIssh -5 /5%683FF:*66/ -C
R/user/'in/chec-Iloa) -= /3:$/ -c /3:$!/R
1
Ejemplo de como configurarlo en un servicio
)efine service 0
use local-service
hostgroupIname ssh-nagios-services
serviceI)escription Current 2oa)
chec-Icomman) chec-IsshIloa)AU.0(E.0(3.0A0.0(6.0(E.0
1
Ejemplo de como dar de alta el "ostgroup de ejecucion
)efine hostgroup 0
hostgroupIname ssh-nagios-services
alias &agios over 665
mem'ers remote(remote!
1
c"ec7=dig
Este comando sirve para comprobar el funcionamiento del servicio deDNS 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
chec-I)ig -5 F&66*:G*: -l ===.example.com -3 ROtcpR
Definir como comando:
)efine comman)0
comman)Iname chec-I)ig
comman)Iline /96*://chec-I)ig -5 >/5%683FF:*66/> -l >/3:$/>
1
Definir como servicio:
)efine service0
use generic-service
hostIname nom'reIhost
serviceI)escription )ig
chec-Icomman) chec-I)igA===.google.com
1
c"ec7=dis7
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 /
Chec-s /tmp an) /var at 0Z an) UZ( an) / at 004, an) U04,
check_disk -w 100M -c 50M -C -w 1000M -c 500M -g sidDATA -r
'^/oracle/SID/data.*$'
Chec-s all filesystems not matching -r at 004 an) U04. 8he fs
matching the -r regex
are groupe) =hich means the freespace threshol)s are applie) to all
)is-s together
check_disk -w 100M -c 50M -C -w 1000M -c 500M -p /foo -C -w 5% -c 3% -p /bar
Chec-s /foo for 0004/U004 an) /'ar for U/3Z. 3ll remaining volumes
use 004/U04
Definir como comando:
)efine comman)0
comman)Iname chec-IallI)is-s
comman)Iline /96*://chec-I)is- -= >/3:$/> -c >/3:$!/>
1
Definir como servicio
)efine service0
use generic-service
hostIname nom'reIhost
serviceI)escription Fis- 6pace
chec-Icomman) chec-IallI)is-sA!0ZA0Z
1
c"ec7=dis7=sm$
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.
Perl Check SMB Disk plugin for Nagios
Usage: check_disk_smb -H <host> -s <share> -u <user> -p <password>
1. w <warn> -c <crit> [-W <workgroup>] [-P <port>]
-H, -hostname=HOST
&om're &et,.%6 )el servi)or
-s, -share=STRING
:ecurso comparti)o a testear
-W, -workgroup=STRING
$rupo )e tra'a@o o )ominio usa)o ;Fefault R7%:N$:%9+R<
-u, -user=STRING
9suario a loguearse en el servi)or. ;Fefaults RguestR<
-p, -password=STRING
Contraseba para loguearse en el servi)or. ;Fefaults &922<
-w, -warning=INTEGER or INTEGER[kMG]
+ercent of use) space at =hich a =arning =ill 'e generate) ;Fefault#
"UZ<
-c, -critical=INTEGER or INTEGER[kMG]
+ercent of use) space at =hich a critical =ill 'e generate) ;Fefaults#
HUZ<
-P, -port=INTEGER
+ort to 'e use) to connect to. 6ome 7in)o=s 'oxes use 3H( others EEU
;Fefaults to sm'client )efault<
.f threshol)s are follo=e) 'y either a -( 4( or $ then chec- to see if
that
much )is- space is availa'le ;-ilo'ytes( 4ega'ytes( $iga'ytes<
+orcenta@e 73:&.&$ )e'e ser menor al porcenta@e C:.8.C32
7arning ;remaining< )is- space shoul) 'e greater than critical.
c"ec7=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]
c"ec7=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]
c"ec7=fle1lm
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.
c"ec7=ftp
Este comando realiza comprobaciones de conexin a un servidor FTPremoto.
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]
c"ec7="ttp
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>]
P-= V=arn timeWQ P-c Vcritical timeWQ P-t VtimeoutWQ P-2Q
P-a authQ P-f Vo- S =arn S critcal S follo=WQ P-e VexpectWQ
P-s stringQ P-lQ P-r VregexW S -: Vcase-insensitive regexWQ P-+
stringQ
P-m VminIpgIsizeW#VmaxIpgIsizeWQ P-ES-6Q P-&Q P-4 VageWQ P-3
stringQ
P-- stringQ P-6Q P-C VageWQ P-8 Vcontent-typeWQ
Ejemplos: CHECK CONTENT: check_http -w 5 -c 10 -ssl -Hwww.verisign.com
When the 'www.verisign.com' server returns its content within 5 seconds, a
STATE_OK will be returned. When the server returns its content but exceeds the 5-
second threshold, a STATE_WARNING will be returned. When an error occurs, a
STATE_CRITICAL will be returned.
CHECK CERTIFICATE: check_http -H www.verisign.com -C 14
When the certificate of 'www.verisign.com' is valid for more than 14 days, a
STATE_OK is returned. When the certificate is still valid, but for less than 14 days, a
STATE_WARNING is returned. A STATE_CRITICAL will be returned when the
certificate is expired.
Ejemplo desde un script
#!/bin/sh
/usr/local/nagios/li'exec/chec-Ihttp -5 / -p U0000 -u /ir@/portal -3
R4ozilla/U.0 ;compati'leL 46.* H.0L 7in)o=s &8 6.L 8ri)ent/U.0<R --
R3ccept-2anguage# es-*6R -s R,ienveni)oR
c"ec7=ifoperstatus
Este comando comprueba el estado de operacin de interfaces de red remotas por
medio de SNMP v1 o SNMP v3.
c"ec7=ifstatus
Este comando comprueba el estado general de interfaces de red remotas por medio
de SNMP v1 o SNMP v3.
c"ec7=imap
Este comando realiza conexiones contra un servidor IMAP para comprobar su
estado de funcionamiento. Permite generar advertencias y errores crticos.
Definir como comando :
)efine comman)0
comman)Iname chec-Iimap
comman)Iline /96*://chec-Iimap -5 >/5%683FF:*66/>
1
Chequear IMAP con SSL
)efine comman) 0
comman)Iname chec-Isimap
comman)Iline /96*:A//plugins/chec-Iimap -p HH3 -5 >/5%683FF:*66/>
-6
1
Definir como servicio:
)efine service0
use generic-service
hostIname nom'reIhost
serviceI)escription imaps
chec-Icomman) chec-Isimap
1
c"ec7=ircd
Este comando comprueba el funcionamiento de un servidor de IRCremoto. Realiza
conexiones para ello, esta escrito en Perl.
c"ec7=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-+ Vpass=or)WQ P-= V=arnItimeWQ P-c VcritItimeWQ P-t timeoutQ
P-!S-3Q P-ES-6Q
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.
c"ec7=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
Fivi)e la carga por el numero )e C+9>s siempre Bue fuera posi'le
Cam'ia a 73:&.&$ si el prome)io )e carga exce)e c72%3Fnd
Cam'ia a C:.8.C32 si el prome)io )e carga exce)e cC2%3Fnd
Definir como comando :
)efine comman)0
comman)Iname chec-Iloa)
comman)Iline /96*://chec-Iloa) --=arningT/3:$/(/3:$!/(/3:$3/
--criticalT/3:$E/(/3:$U/(/3:$6/
1
)efine service0
use generic-service
hostIname nom'reIhost
serviceI)escription Current 2oa)
chec-Icomman) chec-Iloa)AU.0AE.0A3.0A0.0A6.0AE.0
1
c"ec7=log
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
c"ec7=mail/
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.
9sage# chec-ImailB -= V=arnW -c VcritW P-7 V=arnWQ P-C VcritWQ P-4
V483WQ P-t VtimeoutWQ P-v ver'oseQ
Chec-s the num'er of messages in the mail Bueue ;supports multiple
sen)mail Bueues( Bmail<
Cee)'ac-/patches to support non-sen)mail mailBueue =elcome
-= ;--=arning< T 4in. num'er of messages in Bueue to generate =arning
-c ;--critical< T 4in. num'er of messages in Bueu to generate critical
alert ; = V c <
-7 ;--7arning< T 4in. num'er of messages for same )omain in Bueue to
generate =arning
-C ;--Critical< T 4in. num'er of messages for same )omain in Bueue to
generate critical alert ; 7 V C <
-t ;--timeout< T +lugin timeout in secon)s ;)efault T U<
-4 ;--mailserver< T P sen)mail S Bmail S postfix S exim Q ;)efault T
sen)mail<
-h ;--help<
-G ;--version<
-v ;--ver'ose< T )e'ugging output
&ote# -= an) -c are reBuire) arguments. -7 an) -C are optional.
-7 an) -C are applie) to )omains liste) on the Bueues - 'oth C:%4 an)
8%. ;sen)mail<
-7 an) -C are applie) message not yet preproccesse). ;Bmail<
8his plugin uses the system mailB comman) ;sen)mail< or Bmail-stat
;Bmail<
to loo- at the Bueues. 4ailB can usually only 'e accesse) 'y root or
a 8ruste)9ser. ?ou =ill have to set appropriate permissions for the
plugin to =or-.
c"ec7=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]
c"ec7=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
+rint )etaile) help screen
-V, -version
+rint version information
-F, -filename=STRING
Cile to rea) log from
-e, -expires=INTEGER
4inutes after =hich log expires
-a, -aggregation=(AVG|MAX)
8est average or maximum
-w, -warning
7arning threshol) pair VincomingW(VoutgoingW
-c, -critical
Critical threshol) pair VincomingW(VoutgoingW
Notes: - MRTG stands for Multi Router Traffic Grapher. It can be downloaded from
http#//ee-staff.ethz.ch/[oeti-er/=e'tools/mrtg/mrtg.html
- While MRTG can monitor things other than traffic rates, this
plugin pro'a'ly =on>t =or- =ith much else =ithout mo)ification.
- The calculated i/o rates are a little off from what MRTG actually
reports. .>m not sure =hy this is right no=( 'ut =ill loo- into it
for future enhancements of this plugin.
c"ec7=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
+rint )etaile) help screen
-V, -version
+rint version information
-F, -filename=FILE
&ame of the log file to chec-
-e, -expires=INTEGER
4inutes aging after =hich logfile is consi)ere) stale
-C, -command=STRING
6u'string to search for in process arguments
-v, -verbose
6ho= )etails for comman)-line )e'ugging ;&agios may truncate output<
Examples: check_nagios -e 5 -F /usr/local/nagios/var/status.log -C
/usr/local/nagios/bin/nagios
negate
Este comando sirve para, en combinacin con cualquiera de los otros plugins, negar
su valor. Por ejemplo, el uso normal del comando check_ftp es que devuelve OK
cuando el servicio est funcionando y CRITICAL cuando no. Con este comando se
invierten los valores. Es til para cuando se desea tener notificacin explcita de que
algo est funcionando bien en lugar de cuando falla.
Usage:negate [-t timeout] [-owcu STATE] [-s] <definition of wrapped plugin>
c"ec7=nntp
Este comando establece conexiones NNTP contra un servidor remoto especificado
para comprobar que el servicio de NEWS est activo.
This plugin tests NNTP connections with the specified host (or unix socket).
Usage:check_nntp -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]
c"ec7=nt
Este comando realiza peticiones a un equipo Windows NT/2000/XP remoto que est
ejecutando el servicio NSClient para comprobar parmetros locales a dicho equipo
como por ejemplo uso de la CPU, de la memoria, del disco, etctera.
c"ec7=ntp
Este comando ejecuta ntpdate para comprobar que el timestamp de la mquina
local que ejecuta Nagios no difiere en ms de lo especificado del timestamp de una
mquina remota dado.
c"ec7=nwstat
Planificacin, especificacin, diseo y evaluacin de redes Este comando realiza
peticiones a un equipo Novell remoto que est ejecutando el servicio MRTGEXT NLM
para comprobar parme tros locales a dicho equipo como por ejemplo uso de la
CPU, de la memoria, del disco, etctera.
c"ec7=oracle
Este comando permite comprobar el estado de un SGBD Oracle en un ordenador
remoto as como el estado de los tablespaces, de bases de datos, de las cach,
etctera, de dicho servidor.
c"ec7=overcr
Este comando permite comprobar el estado de un servicio Over-CR ejecutndose en
un sistema UNIX remoto. Realiza peticiones a este servicio para comprobar su
estado.
c"ec7=pop
Este comando comprueba si el servicio POP de un equipo remoto est funcionando
correctamente. Realiza peticiones para ello.
c"ec7=procs
Este comando funciona en la mquina donde se est ejecutando Nagios.
Comprueba el nmero de procesos que se estn ejecutando en la mquina y genera
advertencias cuando este nmero sobrepasa el umbral especificado.
c"ec7=real
Este comando comprueba si el servicio REAL de un equipo remoto est funcionando
correctamente. Realiza peticiones para ello.
c"ec7=rpc
Este comando comprueba si un servicio RPC remoto est registrado y funcionando
correctamente. Utiliza para ello llamadas a rpcinfo.
c"ec7=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.
c"ec7=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.
c"ec7=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.
c"ec7=ss"
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.
c"ec7=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.
c"ec7=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:
)efine comman)0
comman)Iname chec-Itcp
comman)Iline /96*://chec-Itcp -5 >/5%683FF:*66/> -p /3:$/
1
)efine service0
use generic-service
hostIname nom'reIhost
serviceI)escription telnet
chec-Icomman) chec-ItcpA!3
1
c"ec7=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.
c"ec7=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.
c"ec7=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.
c"ec7=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.
c"ec7=vs+
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.
urli+e
Este comando permite, usando con otro comando, que la salida de este ltimo se
pueda mostrar en la pantalla de un navegador en formatoHTML como un enlace
hipertexto navegable.
Usage:urlize <url> <plugin> <arg1> . <argN>
Options: -h, -help
+rint )etaile) help screen
-V, -version
+rint 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/ check_http -H example.com -r 'two words'
the shell =ill remove the single Buotes an) urlize =ill see#
urlize http://example.com/ check_http -H example.com -r two words
?ou pro'a'ly =ant#
urlize http://example.com/ "check_http -H example.com -r 'two words'
Importante Para que este comando funcione bien, deberemos tener configurado
en el archivo cgi#cfg la siguiente directiva :
escapeIhtmlItagsT0
c"ec7="eart$eat
Script simple para chequear el estado de HeartBeat y sus nodos, muy til por cierto
check_heartbeat
#!/bin/bash
# ,uthorF 3mmanuel Dretelle
# AateF !"/+3/"+!+
# AescriptionF ;etrieve ?inu> /, cluster status using cl2status
# Dased on httpF//www'randombugs'com/linu>/howtoHmonitorHlinu>H
heartbeatHsnmp'html
#
# ,utorF Stanila $onstantin ,drian
# AateF "+/+3/"++=
# AescriptionF $hecG the number o) active heartbeats
# httpF//www'randombugs'com

# Qet program path
:*G.6.%&T.3
+:%$&34*TM/'in/basename /0M
+:%$+385TMecho /0 S /'in/sed -e >s(P\\/QP^\\/QP^\\/Q*/((>M

&%F*I&34*TMuname -nM
C2I68T>/usr/'in/clIstatus>

#nagios error codes
#' 8P;0QP,1//utils'sh
%NT0
73:&.&$T
C:.8.C32T!
9&N&%7&T3

usage ;< 0
echo R\
&agios plugin to heart'eat.

9sage#
/+:%$&34*
/+:%$&34* P--help S -hQ
/+:%$&34* P--version S -vQ

%ptions#
--help -l +rint this help information
--version -v +rint version of plugin
R
1

help ;< 0
printIrevision /+:%$&34* /:*G.6.%&
echoL usageL echoL support
1


=hile test -n R/R
)o
case R/R in
--help S -h<
help
exit /6838*I%NLL
--version S -v<
printIrevision /+:%$&34* /:*G.6.%&
exit /6838*I%NLL
# H/)
# shi)t
# /0S178!%%
# H$)
# shi)t
# $0MMCN@1E78!%%
*<
echo R5eart'eat 9&N&%7&# 7rong comman) usageRL exit
/9&N&%7&LL
esac
shift
)one

/C2I68 h'status W /)ev/null
resT/X
if P /res -ne 0 Q
then
echo R5eart'eat C:.8.C32# 5eart'eat is not running on this
no)eR
exit /C:.8.C32
fi

)eclare -i .T0
)eclare -i 3T0
&%F*6TM/C2I68 listno)esM

for no)e in /&%F*6
)o
statusTM/C2I68 no)estatus /no)eM
let .T/.O
if P /status TT RactiveR Q
then
let 3T/3O
fi
)one

if P /3 -eB 0 Q
then
echo R5eart'eat C:.8.C32# /3//.R
exit /C:.8.C32
elif P /3 -ne /. Q
then
echo R5eart'eat 73:&.&$# /3//.R
exit /73:&.&$
else
echo R5eart'eat %N# /3//.R
exit /%N
fi
V/co)eW

Vco)eW
)efine comman) 0
comman)Iname chec-IhaI'yIssh
comman)Iline /96*://chec-I'yIssh -l root -5 /5%683FF:*66/
-C R/usr/local/s'in/chec-Iheart'eat.shR
1
c"ec7=systemimager
Script para chequear que nuestras imgenes estn actualizadas a la fecha
check_systemimager
#A/usr/'in/php -B
# 6ergio CayuBueo Vcayu@cayu.com.arW
# http#//cayu.com.ar
<?php
/listaIimagenes T shellIexec;RsiIlsimage --ver'oseSgrep
.mageR<L
/listaIimagenes T pregIsplit;R/P\nQO/R(/listaIimagenes<L
/fechaIactual T )ate;>?.m.)><L
foreach;/listaIimagenes as /imagen< 0
if;strlen;/imagen<W0< 0
if;@A/i< 0
/iTL
1
/imagen T pregIsplit;R/P\sQO/R(/imagen<L
/imagenesP/iQP>nom're>Q T /imagenP!QL
/imagenesP/iQP>actualiza)a>Q T /imagenPEQL
/imagenesP/iQP>ip>Q T /imagenP"QL
if;/imagenPEQ TT /fechaIactual< 0
/imagenesP/iQP>esta)o>Q T Ro-R L
1 else 0
/imagenesP/iQP>esta)o>Q T RcriticalR L
/criticalTL
1
/iOOL
1
1

if;@/critical< 0
/hea) T RC:.8.C32 - 5u'o un )esfasa@e en una o mas
imagenes\nRL
/exit T !L
1 else 0
/hea) T R%N - 8o)as las imagenes actualiza)as a la
fecha\nRL
/exit T 0L
1
print /hea)L
foreach;/imagenes as /imagen< 0
if;strlen;/imagenP>nom're>Q<VH< 0
/ta' T R\t\tRL
1 else 0
/ta' T R\tRL
1
if;/imagenP>esta)o>Q TT Ro-R< 0
print R%N - R./imagenP>nom're>Q.R R./ta'.
/imagenP>ip>Q.R\nRL
1 else 0
print RC:.8.C32 - R./imagenP>nom're>Q.R R./ta'.
/imagenP>ip>Q.R \t actualiza)o a # R.
/imagenP>actualiza)a>Q.R\nRL
1
1
exit;/exit<L
XW
)efine comman) 0
comman)Iname chec-IsiI'yIssh
comman)Iline /96*://chec-I'yIssh -l root -5 /5%683FF:*66/ -C
R/usr/local/s'in/chec-Isystemimager.phpR
1
c"ec7=d$a=6pc=pending
Chequeo de %istributed transactions de Oracle, por medio de SSH.
check_dba_2pc_pending
#!/usr/bin/perl

open;6D2+296I6*2*C8( RsBlplus -6 \"/ as sys)'a\"
@/usr/local/'in/)'aI!pcIpen)ingIselect.sBl SR< or )ie R&o pue)o
e@ecutar# /ARL
=hile ;V6D2+296I6*2*C8W< 0
chomp;/I<L
if;length;/I<W< 0
/select T /IL
1
1
close 6D2+296I6*2*C8L

if;/select TT Rno ro=s selecte)R< 0
print R%N - :esulta)o # R./select.R S pen)ingT0L\nRL
exit 0L
1 else 0
open;6D2+296IF*2*8*( Recho \"execute
sys.)'msItransaction.purgeIlostI)'Ientry;>R./select.R><L\"S
sBlplus -6 \"/ as sys)'a\" SR< or )ie R&o pue)o e@ecutar# /ARL
=hile ;V6D2+296IF*2*8*W< 0
chomp;/I<L
if;length;/I<W< 0
/)elete T /IL
1
1
close 6D2+296IF*2*8*L
print R73:&.&$ - :esulta)o # R./select.R # R./)elete.R S
pen)ingTL\nRL
exit L
1
El script sql
6*8 pagesize 0
6*8 trimspool %&
6*8 hea)sep off
6*2*C8 2%C32I8:3&I.F C:%4 )'aI!pcIpen)ingL
exitL
El check_command en la configuracion del servicio
chec-I'yIsshAsu)o su - oracle -c /usr/local/'in/)'aI!pcIpen)ing.pl
El sudoers del equipo a monitorear
monitoreo 322 T &%+3667F# /'in/su - oracle -c
/usr/local/'in/)'aI!pcIpen)ing.pl
c"ec7=microstrategy
Chequear que el servicio de MicroStrategy este corriendo
)efine comman) 0
comman)Iname chec-Imicrostrategy
comman)Iline /96*://chec-Imicrostrategy.sh
/5%683FF:*66/
register
1
)efine service 0
serviceI)escription 6ervicio 4icro6trategy
use generic-service
chec-Icomman) chec-Imicrostrategy
maxIchec-Iattempts
chec-Iinterval
retryIinterval
activeIchec-sIena'le)
chec-Iperio) !ExJ
notificationIperio) !ExJ
notificationIoptions r(c
notificationsIena'le)
register
1
c"ec7=microstrategy:s"
check_microstrategy.sh
#!/bin/sh
632.F3I665TMssh / -l monitoreo Rsu)o
/msis/var/opt/4icro6trategy/'in/mstrctl -s .ntelligence6erver
gs S grep stateS se) >s/VP^WQ*PWQ//g> S se) >s/\t//g> S se)
>s/\n//g>RM
if P /632.F3I665TRrunningR Q
then
echo R%N - +roceso 4icro6trategy corrien)oR
exit 0L
else
echo RC:.8.C32 - 5ay un pro'lema con el proceso
4icro6trategyR
fi
count=arc"logs:pl
count_archlogs.pl
#!/usr/bin/perl
use strictL
use =arningsL

my /%:3C2*I6.FT/3:$GP0QL

sub getIsorte)Ifiles 0
my /path T shiftL
open)ir my;/)ir<( /path or )ie Rno pue)o a'rir /path# /ARL
my Zhash T map 0/I TW ;stat;/I<<PHQ SS un)ef1 # saltar
listas vacias
map 0 R/path/IR 1
grep 0 m/'db)/i 1
rea))ir /)irL
close)ir /)irL
return ZhashL
1

my Zfiles T getIsorte)Ifiles;R/oracle/arclog/R.
/%:3C2*I6.F.R/R<L
my /count T -eys ZfilesL

if;/count V 60< 0
print R%N - *ncontra)os /count re)o logs en
/oracle/arclog/R./%:3C2*I6.F.R/S>re)ologs>T/count\nRL
exit 0L
1 else 0
print RC:.8.C32 - *ncontra)os /count re)o logs en
/oracle/arclog/R./%:3C2*I6.F.R/S>re)ologs>T/count\nRL
exit !L
1
select=count:s"
Si necesito alertar cuando crecen X registros en una tabla Oracle, en el dia de hoy
se puede ejecutar esto :
echo -e Rset hea) off\nset pagesize 0\n6*2*C8 C%9&8;F383< C:%4
3++:*$.F383 75*:* F383 T 8%IF38*;6?6F38*(>FF/44/??><LR S sBlplus -6 R/
as sys)'aR S awk >/^P 0-H\.\t QO// 0print int;/<1>
Dentro de un script quedaria asi :
bash select_count.sh
#!/bin/bash
# $heUuear registros en 1abla alertar al llegar al limite
C%&8*%TMecho -e Rset hea) off\nset pagesize 0\n6*2*C8
C%9&8;F383< C:%4 3++:*$.F383 75*:* F383 T
8%IF38*;6?6F38*(>FF/44/??><LR S sBlplus -6 R/ as sys)'aR S awk
>/^P 0-H\.\t QO// 0print int;/<1>M
2.4.8*TU

if PP R/C%&8*%R -ge R/2.4.8*R QQ
then
echo RC:.8.C32 - 5ay /C%&8*% registrosRL
exit !L
else
echo R%N - 5ay /C%&8*% registrosRL
exit 0L
fi
O para conocer el estado de los tablespaces en Oracle
bash check_DATABASE_STATUS.sh
F383,36*I683896TMecho -e Rset hea) off\nset pagesize 0\n6*2*C8
status( )ata'aseIstatus C:%4 v\\/instanceLR S sBlplus -6 R/ as
sys)'aRS cut -fM

case R/F383,36*I683896R in
4%9&8*F<
start
echo RC:.8.C32 - 2os ta'lespaces )e la 'ase )e
)atos estan /F383,36*I683896 -R Mdate >OF38*# Zm/Z)/Zy 8.4*#Z5#
Z4#Z6>M
exit !L
LL
%+*&<
echo R%N - 2os ta'lespaces )e la 'ase )e )atos
estan /F383,36*I683896 -R Mdate >OF38*# Zm/Z)/Zy 8.4*#Z5#Z4#
Z6>M
exit L
LL
*<
echo RC:.8.C32 - 5ay algun error con la 'ase )e
)atos /F383,36*I683896 -R Mdate >OF38*# Zm/Z)/Zy 8.4*#Z5#Z4#
Z6>M
exit !L
esac
c"ec7=snmp=ifstatus=v9: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
c"ec7=oracle=ta$lespace:s"
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 2,O agregamos al final de la query :
3&F fs.83,2*6+3C*I&34* &%8 2.N* >Z9&F%Z>
Tengo que agregar una opcin para agregarle a la linea de comandos
que sea ignorar table space
check_oracle_tablespace.sh.gz
ssl%cert%c"ec7:s"
Script para chequear validez del certificados SSL
ssl-cert-chec-.sh -c Certifica)o.crt -n -x 60
ssl-cert-check.sh.gz
otas importantes
Cstos son los comandos )ue acompa-an a $agios y )ue deberan ser invocados
cada uno con sus respectivos parmetros y su forma de ejecucin# ara saber ms
acerca de estos datos, necesarios para el uso de los comandos, se pueden invocar
en lnea de comandos con el parmetro 2& lo )ue mostrar en la pantalla una
ventana de descripcin del comando, los parmetros )ue usa y cmo se invoca#
;ecordar )ue los ejecutables de los comandos se encuentran dentro del directorio
libe(ec de la instalacin de $agios#
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/
Plugins con soporte SNMP
http://nagios.manubulon.com/
Plugins SAP CCMS
http://sourceforge.net/projects/nagios-sap-ccms/
Interfaz alternativa de Nagios para visualizar en BlackBerry
http://nagiosmobile.sourceforge.net/
Plugins para chequeos en BlackBerry
http://www.1ight.fr/plugins/BlackBerry/
Plugins de chequeo de Lotus Notes
http://barbich.net/
Servidor de proyectos Nagios, plugins, templates etc en etapa de desarrollo
http://www.nagiosforge.org/
Servidor de proyectos Nagios, plugins, templates etc
http://www.nagiosexchange.org
Agregado de chequeo de eventos Nagios para firefox
https://addons.mozilla.org/en-US/firefox/addon/3607
http://code.google.com/p/nagioschecker/
Visor de sucesos para el escritorio (Linux, Windows)
http://sourceforge.net/projects/nagstamon
Sitios generales sobre funcionamiento de redes y protocolos
Wiki de Redes de Comunicaciones II - Universidad de Madrid
http://ariadna.ii.uam.es/wiki/wiki_rc2/doku.php
Un ensayo con contenidos conceptuales
http://www.monografias.com/trabajos95/recursos-red-y-su-
monitoreo/recursos-red-y-su-monitoreo.shtml
#ugares donde fue citado como referencia el presente
documento
TESIS 6istema de monitoreo y control de redes inalmbricas para optimizacin del
servicio de 7nternet en la empresa 7ntercompu 5ilaca ;amrez, Carlos Vinicio
http://repo.uta.edu.ec/handle/123456789/442
otas
Inicio del documento Junio de 2007 y a lo largo del tiempo le fui agregando cosas
que descubri a lo largo de mi trabajo
R
R
R
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
Pueden encontrar mas sobre mi o hacerme consultas viahttp://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.

You might also like