You are on page 1of 132

Monitoria y anlisis de Red con

Nagios
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. on el termino !onitoreo nos re"erimos a un sistema #ue
constantemente monitorea una red de computadoras para detectar sistemas
lentos o en mal "uncionamiento y #ue noti"ica al administrador de la red en
caso de "alla v$a correo electrnico, sms u otros medios.
Para prevenir errores en un sistema existe podemos utilizar un e#uipo #ue se
ocupe de estar %controlado y observando& el "uncionamiento de la red, esto
podemos realizarlo por medio de un so"t'are llamado (agios.
(agios es un sistema de monitorizacin de e#uipos y de servicios de red,
escrito en y publicado bajo la )(* )eneral Public License, el lenguage con el
cual esta desarrollado nos asegura una rpida ejecucin y su licencia #ue lo
determina como +o"t'are Libre nos asegura #ue siempre tendremos
actualizaciones disponibles y #ue hay una gran comunidad de desarrolladores
soportndolo.
reado para ayudar a los administradores a tener siempre el control de #u
est pasando en la red #ue administran y conocer los problemas #ue ocurren
en la in"raestructura #ue administran antes de #ue los usuarios de la misma los
perciban, para as$ no slo poder tomar la iniciativa, sino asumir la
responsabilidad de hacer #ue las cosas sucedan, decidir en cada momento lo
#ue #ueremos hacer y cmo lo vamos a hacer, debido a #ue este so"t'are 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 "acilitar tareas de explotacin de datos, hay di"erentes aditivos como un
visor de reportes integrados, en el cual se puede ver el histrico de actividad y
per"ormance de servicios, y adems un visor de diagramas de red con el
estado actual de cada e#uipo.
.l mismo, esta constituido por un (/cleo #ue construye la inter"az de usuario y
por plugins los cuales representan los ojos y o$dos de (agios y por lo cual se
encargan de recopilar in"ormacin 0bajo demanda1. Los mismos pueden estar
programados en diversos lenguajes como , 22, Python, Perl, P3P, 4ava, 5ash
etc, ya #ue (agios es independiente del lenguaje en el cual #ue se desarrolle el
plugin y solo procesa los datos recibidos de este, para la posterior elaboracin
y env$o de noti"icaciones a los encargados de la administracin del sistema en
cuestin.
Objetivos y necesidades
onocer el estado de di"erentes servicios brindados por e#uipos como
servidores corriendo di"erentes sistemas operativos, routers de los cuales
dependen varios e#uipos. 6btener in"ormacin de los mismos como estado en
red, tiempo arriba, puertos abiertos, servicios y procesos corriendo, carga de
C!, carga de memoria fsica, carga de memoria virtual, espacio en disco,
interfaces de red activas. .s posible conocer los estados y datos de estos
di"erentes e#uipos para una posterior elaboracin de reportes etc, elaborando
una con"iguracin personalizada de (agios para cada caso en particular, por
medio de testeo de pa#uetes de red, o haciendo uso de di"erentes "unciones
#ue provee el protocolo +(!P 0+imple (et'or7 !anagement Protocol1 #ue nos
permite gestionar y8o supervisar datos de di"erentes elementos y componentes
de la red como routers, s'itches, servidores etc y al ser un protocolo standard
es posible monitorizar una amplia variedad de casos en escenarios con
sistemas e#uipos di"erentes.
on lo cual podremos concluir si el sistema -
Lleva a cabo e"icazmente su "inalidad
*tiliza e"icientemente los recursos.
9a #ue podemos -
:etectar de "orma sistemtica el uso de los recursos y los "lujos de
in"ormacin dentro de una organizacin.
:eterminar #u in"ormacin es cr$tica para el cumplimiento de su misin y
objetivos, identi"icando necesidades, duplicidades, costos, valor y barreras,
#ue obstaculizan "lujos de in"ormacin e"icientes.
;nlizar de e"iciencia del sistema.
<eri"icar el cumplimiento de (ormativas.
=evisin de la gestin de recursos.
on esto podemos elaborar in"ormes, responder ante evaluaciones externas y
documentar la evaluacin para re"lejar el desarrollo y los resultados de la
misma.
>ortalecer bases de in"ormacin para grupos y personas de apoyo #ue
trabajan con los sistemas.
Puntos principales a tener en cuenta
;plicacin estable para entornos productivos.
Licencia de cdigo abierto.
:ebe monitorear e#uipos idenpendientemente de sistemas operativos -
?indo's, Linux, *nix, @+6 i6+.
)enerar alertas cuando se identi"ican incidencias.
Los datos se deben poder exportar para su posterior anlisis.
.l sistema debe poder trabajar tanto con agentes instalados en los e#uipos
clientes como sin ellos.
Poder generar complementos 0plugs in1 independientemente del lenguaje de
programacin o ubicacin de los mismos.
:ocumentacin su"iciente y clara disponible del sistema de monitoreo.
.l sistema debe tener una comunidad #ue lo respalde y pre"erentemente
empresas.
.l sistema debe ser muy conocido o utilizado. .xistencia de empresas
clientes o usuarios a los #ue se puede re"erenciar.
;ctualizaciones regulares.
Estrategias
Monitoreo Activo
.ste tipo de monitoreo se realiza enviando pa#uetes desde sl sistema de
monitoreo a los clientes #ue necesitamos monitorear. 9a sea un P@() o pedidos
a determinadas aplicaciones en los mismos.
<entajas
(o hay #ue instalar un agente especializado en el cliente. .n algunos casos
solo +(!P. .s una opcin para casos en los #ue no es posible instalar
aplicaciones en los clientes
:esventajas
Aiene mtricas menos especi"icas por consiguiente se pueden realizar
anlisis menos detallados. Pueden ser a"ectadas por hechos #ue sucedan
en la red..
Monitoreo Pasivo
.sta estrategia se basa en la obtencin de datos a partir desde los clientes a
monitorear hacia el sistema de monitoreo. .ste en"o#ue bien plani"icado puede
ser mas per"omante a lo #ue tra"ico de red se re"iere comparndolo con la
tcnica de !onitoreo Pasivo.
<entajas
@n"ormacin ms espec$"ica y ms detallada. !ayor "lexibilidad para realizar
monitoreos personalizable. Posibilidad de crear soluciones de monitoreo
#ue controlen estados de servicios o mtricas no estndares sobre
aplicaciones o hard'are. .l control de las aplicaciones y servicios se realiza
directamente en el nodo monitoreado. !ayor seguridad en la red ya #ue se
manejan protocolos encriptacin. !enor riesgo de deteccin de
inactividades.
:esventajas
Puede provocar mayor carga de actividad en el cliente. +e debe instalar el
agente en todos los e#uipos #ue se van a monitorear.
Capas
Aspectos generales
!onitoreo de objetos o cajas negras con agentes o sin agentes
=eportes estad$sticos
Infraestructura / uncionalidad de !ard"are
*ptime
=espuesta
Infraestructura / #iste$a Operativo
=ecursos
Procesos
(/cleo
#ervicios y aplicaciones
Procesos
Aiempos de respuesta
*suarios
Notificaciones y alertas en caso de incidente
Infor$ation %ec&nology Infrastructure 'ibrary ( I%I'
+itundonos en el marco @A@L 05iblioteca de @n"raestructura de Aecnolog$as de
@n"ormacin1 para la provisin de servicios A@ con calidad, los tres objetivos
claves de la )estin de +ervicios son-
;linear los servicios in"ormticos con las necesidades actuales y "uturas
!ejorar la calidad de los servicios in"ormticos entregados
=educir el coste a largo plazo del suministro de servicios
)Co$o encuandra Nagios en I%I'*
.n @A@L, los consultores acompaBan a las empresas a diseBar y8o implementar
sus procesos. Aambin realizan );Ps para evaluar cuan cerca se encuentra la
organizacin de las actividades #ue se recomiendan en las mejores prcticas y
se recomiendan posibles mejoras para acercarse.
(agios cubre estas reas de @A@L -
+ervice :es7
@ncident !anagement
+ervice Level !anagement
apacity !anagement
@A +ervice ontinuity !anagement
;vailability !anagement
@A in"rastructure !anagement
+esti,n de la disponibilidad
La disponibilidad %;vailability !anagement& es un proceso del %+ervice
:elivery&, de"inido en las especi"icaciones de @A@L.
+u meta es asegurar #ue el nivel de disponibilidad re#uerido est
proporcionado.
La supervisin y anlisis de in"ormes de la disponibilidad es una actividad
clave para asegurar #ue los niveles del servicio se estn cumpliendo.
.n la base de la gestin se debe supervisar cont$nuamente la disponibilidad
de la @n"raestructura, servicios y alertar a los administradores para iniciar
los procedimientos oportunos.
%ie$po resoluci,n de Incidencias
.l tiempo de identi"icacin de un problema mejora notablemente con la
utilizacin de (agios
+u meta es asegurar #ue el administrador identi"i#ue el problema antes
#ue lo hagan los usuarios.
La supervisin y anlisis de todos los servicios cr$ticos y la noti"icacin
correcta es clave para reducir el tiempo de resolucin
Los in"ormes de incidencias y per"ormance ayudarn en la prediccin de
problemas y en identi"icar la necesidad de crecimientos.
!ejorando la )estion de capacidad, estando directamente conectado con el
processo de @A@L %apacity !anagement&
iclo de un incidente
;dministracion de la capacidad
Aplicando las nor$as I%I'
;linear los servicios de A@ con las necesidades de la empresa 0el negocio1,
actuales y "uturas.
!ejorar la calidad de los servicios de A@.
=educir los costos por la proveedur$a de servicios de A@ en el mediano y largo
plazos.
!ejora de rendimiento de la inversin de A@.
+e mide el sistema de A@ de la organizacin evaluando los procesos de
+oporte Acnico y .ntrega de +ervicios comparndolos con las !ejores
Prcticas.
Objetivos
Nuestras necesidades
.stan en orden de prioridad, pero todas van atadas de la mano una con otra
+olucin de !onitoreo @ntegral
=egistro y orrelacin de .ventos, tanto en e#uipos de red
como en servidores
:ocumentacin =pida, Participativa,olaborativa
:ebe ser v$a ?eb, con edicin individual de secciones y
versionado
Objetivos a largo pla-o
CM./ /iblioteca para organi-ar el servicio de %I
Relaciones de $uc&os a $uc&os
Inventario de e0uipos
:etalle de responsable tcnico
@P
+o"t'are @nstalado
/ase de IP
:etalle de las subredes
.#uipos asociados con sus ip y !; si coresponde
'istado de reglas de ruteo indivuales por e0uipo1 en caso de 0ue
e2istan
/ase de Certificados ##'
erti"icado con "echa de emisin y "echa de caducidad
:etalles tecnicos y e#uipos donde se utilizan los certi"icados
/ase de Proovedores1 Contratos y Contactos
ontactos determinados por tipo, y detalles de como contactarlos
:etalles de un proovedor #ue presta servicios y le compramos e#uipos
ontratos detallados, con servicios y e#uipos asociados a los #ue aplica
/ase de 3suarios y Contrase4as
(ombre de *suario, ontraseBa y e#uipo u aplicacin asociado
Necesario para en$arcar en I%I'
3istorico de modi"icacines
@nventario de los activos del :epartamento de @A
.structura del inventario y relaciones entre los di"erentes elementos
!anejo de Licencias
)estin de problemas, incidentes
Cuejas y reclamos
Posibilidad de adjuntar documentacin de cada item presente
+L; basados en contratos y horarios
Inventariado y gestion de Incidencias
)Co$o ter$ina$os de cubrir los puntos anteriores*
Para la gestion de inventario y de incidencias presentadas con los e#uipos y
servicios inventariados se puede implementar )LP@
;demas se busca una herramienta #ue se integre y complemente al el
sistema de ivnentario, como >usion@nventory, #ue es una variante de 6+-
@nventory, #ue se integra completamente con el +o"t'are )LP@
.escripci,n
5ue se puede &acer con Nagios
!onitorizacin de servicios de red 0+!AP, P6PD, 3AAP, (AAP, @!P, +(!P1.
!onitorizacin de los recursos de un host 0carga del procesador, uso de los
discos, logs del sistema1 en varios sistemas operativos, incluso !icroso"t
?indo's con el plugin (=P.E(A o tambin por medio del protocolo +(!P.
!onitorizacin remoto, a travs de t/neles ++L ci"rados o ++3.
:iseBo simple de plugins, #ue permiten a los usuarios desarrollar sus propios
che#ueos de servicios dependiendo de sus necesidades, usando sus
herramientas pre"eridas 05ash, 22, Perl, =uby, Python, P3P, F, 4ava, etc.1.
he#ueo de servicios paralizados.
Posibilidad de de"inir la jerar#u$a de la red, permitiendo distinguir entre host
ca$dos y host inaccesibles.
(oti"icaciones a los contactos cuando ocurren problemas en servicios o hosts,
as$ como cuando son resueltos 0 <$a email, pager, 4abber, +!+ o cual#uier
mtodo de"inido por el usuario junto con su correspondiente complemento1.
Posibilidad de de"inir manejadores de eventos #ue ejecuten al ocurrir un
evento de un servicio o host para resoluciones de problemas proactivas.
=otacin automtica del archivo de registro.
+oporte para implementar hosts de monitores redundantes.
@nter"az 'eb opcional, para observar el estado de la red actual,
noti"icaciones, historial de problemas, archivos de registros, etc.
=eportes y estad$sticas del estado cronolgico de disponibilidad de servicios
y hosts.
5uien va a usar Nagios
;dministradores de =edes con alto conocimiento tecnico
6peradores con minimo conocimiento tecnico de la situacion, o conocimiento
puntual de algun servicio
Pudiedo avisar y ayudar a determinar posibles causas de e"ectos
producidos
.#uipos de desarrollo
oordinadores de !esas de ;yuda
;reas relacionadas
5ue se va a $onitorear
3ay #ue de"inir o acotar #ue niveles y aspectos se van a monitorear
+istema 6perativo
*tilizacin de red
Ara"ico
+ervicios 0+;P, ?eb, 5ases de datos, :3P1
Co$o i$pacta
!ejora de productividad
;ntelacion de problemas
=eporte y aviso de incidentes
;gilidad en su tratamiento
!ejor y mayor relacion e integracion de sectores adjuntos
Re0ueri$ientos Operativos
Plan de accin bien diagramado
Personal con conocimiento medio8avanzado en redes

Recursos tecnol,gicos
3ard'are acorde a la inversion y criticidad de los datos
+i se van a monitorear GH IJJ host y GH KJJJ servicios hay #ue plantear
bien esto, no sobrevaluar pero tampoco escatimar
.jemplo un vez tuve #ue monitorear una red con LJJ hosts
y KJJJ servicios #ue a su vez guardaba estadisticas
completas en un !y+CL dentro del mismo e#uipo para
luego generar in"ormes +L; y mostrar datos en pantalla en
una inter"az personalizada y disponia de un @ntel Cuad ore
K.M )3z a DK bits con un disco +;A; de DKJ )5 y se #uedo
algo corto el hard'are para los re#uerimientos
%areas
.ependencias
Para una correcta instalacin de (agios, con todas sus caracter$sticas es
necesario tener instalados ciertos pa#uetes de so"t'are en el sistema, la
instalacin puede variar seg/n la distribucin de Linux #ue elijamos, si los
tenemos empa#uetados, o si los tenemos #ue compilar en instalar
manualmente.
Pa0uete .escripci,n #itio "eb
Perl @nterprete para el
lenguaje de script Perl
http-88'''.perl.org
(et--+(!P !odulo de Perl para
consultas +(!P
http-88search.cpan.org8dis
t8(et-+(!P
rypt--:.+ !odulo de Perl para
encripcin :.+, necesario
para consultas +(!PvD
http-88search.cpan.org8Nd
paris8rypt-:.+8
:igest--3!; Oeyed-3ashing "or
!essage ;uthentication
http-88search.cpan.org8dis
t8:igest-3!;8
:igest--+3;P Perl inter"ace to the +3;-
P algorithm
http-88search.cpan.org8dis
t8:igest-+3;P8
==:Aool *tilitario para generacin
de gr"icas de red y
adems
su mdulo de integracin
con el lenguaje Perl
http-88oss.oeti7er.ch8rrdto
ol
Qlib Librer$a de compresin
utilizada por las utilidades
gra"icas
http-88'''.gzip.org8zlib8
Lib4P.) Librer$a para exportacin
jpg
http-88'''.ijg.org8
LibP() Librer$a para exportacin
png
http-88'''.libpng.org8pub
8png8
>reetypeK Librer$a para
procesamiento de "uentes
http-88'''."reetype.org8
)raphviz *tilitario para generacin
de gra"icas
http-88'''.graphviz.org8
R>reeMI-libs Librer$as gr"icas
generales
http-887oala.ilog."r8lehors8
xpm.html
;pache K +ervidor ?eb http-88httpd.apache.org8
P3P @nterprete de lenguaje de
script
http-88'''.php.net
!y+CL +istema de base de datos http-88'''.mys#l.com
Post"ix +!AP para enviar mail http-88'''.post"ix.org8
): Librer$a para generacin
de "ormatos gra"icos
http-88'''.libgd.org8
(agvis ;ditivo para la
generacin de diagramas
dinamicos
http-88'''.nagvis.org8
P(PS(agios ;ditivo para la
generacin de gr"icos
estad$sticos y reportes
visuales
http-88'''.pnpSnagios.or
g8
(:6 ;gregado para articular
(agios con !y+CL
http-88'''.nagios.org
Plugins Plugins de che#ueo
standard de (agios
http-88'''.nagios.org
+(!P Plugins Plugins para la
integracin de che#ueos
+(!P de (agios
http-88nagios.manubulon.
com8
(agios +itio de descarga o"icial http-88'''.nagios.org
(agiosCL 3erramienta visual de
con"iguracin de (agios
via ?eb
http-88'''.nagios#l.org8
:o7u'i7i 3erramienta de
documentacin
colaborativa
http-88'''.do7u'i7i.org8
+yslog-(g Logueo de eventos del
sistema
http-88'''.balabit.com8n
et'or7-security8syslog-
ng8
+(;=. ;gente +yslog para
clientes ?indo's
http-88'''.intersectallian
ce.com8projects8index.ht
ml
!O Livestatus ;ditivo para obtener los
datos de (agios
en <ivo via +oc7et 0muy
/til para abandonar (:61
http-88mathias-
7ettner.de8chec7m7Elives
tatus.html
)no7ii ;plicacin de inter"az
para celulares y modems
D),
para la realizacin de
llamadas y alertas +!+
http-88gno7ii.org
Ahru7 @nter"az alternativa para
(agios, con muchas
"unciones extras,
basado en !O Livestatus
'''.thru7.org
@nter"acetableEvDt Plugin para detectar y
che#uear las inter"aces
de un =outer
http-88'''.tontonitch.co
m8
hec7 A+! Plugin para hacer https-88github.com8os7lil8n
che#ueos generales en
Aivoli A+!
agios-misc
hec7 @ostat .stadisticas y alertas en
base a los datos de iostat
http-88sysengineers.'ordp
ress.com8KJPJ8JT8KL8che
c7Eiostat-pl-version-J-U-L8
liente 6racle
5asic
+CLVPlus
liente de 6racle para
realizar los che#ueos
http-88'''.oracle.com8te
chnet'or78database8"eat
ures8instant-client8
.ventdb @ntegracin de che#ueos
de +yslog
https-88'''.net'ays.org8
projects8eventdb
(ota-
3ay algunos plugins #ue no estan mas disponibles en su sitio, aca los incluyo
.escarga y co$pilaci,n
.n este apartado nos concentraremos en la descarga y compilacin de los
di"erentes pa#uetes bajados en "ormato de codigo fuente.
Nagios
Para empezar deberemos descargar el cdigo fuente del so"t'are (agios
desde su sitio 'eb, en "ormato tar.gz, a la "echa la /ltima versin es la D.J.
Para ello descomprimiremos el pa#uete 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
con"iguracin sobre el, se debi crear el usuario nagios y el grupo nagios con
privilegios de usuario normal del sistema, con su home ubicado en el directorio
de instalacin de nagios /usr/local/nagios, luego se le atribuyeron permisos
de acceso y escritura para dicho usuario.
root@localhost # 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 pa#uete de plugins bsico de (agios 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
on esto ya tendremos un (agios instalado y "uncional en modo bsico.
PNP6Nagios
P(PS(agios es un addon para (agios #ue bsicamente, nos genera gr"icas
con los resultados de los anlisis de (agios, para poder llevar un control ms
general de la monitorizacin de un determinado servidor o servicio en las
/ltimas horas, d$as, semanas, meses o incluso aBos.
*na vez #ue tenemos instalado y con"igurado (agios procederemos a
descargar y descomprimir el pa#uete pnpSnagios,
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
N.O3tils
.l generador de gra"icas Nagvis necesita acceder a los datos #ue Nagios
genera, una de las "ormas de acceder a los mismos es #ue Nagios almacene
sus datos dentro de una base de datos My#5' ya #ue por de"ecto lo hace en
archivos de texto, para #ue Nagios pueda hacer eso, deberemos instalar el
modulo N.O #ue viene dentro del pa#uete N.O3tils descargable via el sitio
'eb de Nagios. .ste mdulo es el #ue se encarga de generar las consultas en
"ormato My#5', #ue son cargadas sobre un soc7et .l proceso N.O7./
corriendo como daemon lee de ese soc7et y carga los datos en una base de
datos My#5'.
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
3ay S componentes principales #ue inician las utilidades (:6-
P. (:6!6: .vent 5ro7er !odule 0!odulo de evento corredor1
K. L6)K(:6 *tility
D. >@L.K+6O *tility
S. (:6K:5 :aemon
El N.OMO. Event /ro8er Module
Las utilidades (:6 incluyen un (agios .ven 5ro7er !odule 0(:6!6:.61 #ue
exporta datos desde el demonio de nagios.
;sumiendo #ue nagios "ue compilado con el !odulo .vent 5ro7er activado
0esto es por de"ault1, usted puede con"igurar #ue nagios cargue el modulo
(:6!6: en tiempo de ejecucion. *na vez #ue el modulo "ue cargado por el
daemon de nagios, este puede acceder a todos los datos y logicamente
presente el el proceso de nagios #ue esta corriendo.
.l modulo (:6!6: tiene designado exportar la con"iguracion, como
in"ormacion variada de eventos en tiempo de ejecucion #ue ocurre en el
proceso de monitoreo, por el daemon de nagios. .l modulo puede enviar esta
in"ormacion a un archivo estandar, a un +oc7et *nix de :ominio o un a soc7et
AP.
.l (:6!6: escribe la in"o en un "ormato #ue el demonio (:6K:5 puede
entender.
+i el (:6!6: esta escrito para un archivo de salida, usted puede con"igurarlo
para rotarlo periodicamente y8o procesarlo en otra ma#uina "isicamente
0usando ++3, etc.1 y envia este contenido al daemon (:6K:5 usando la
utilidad >@L.K+6O 0#ue describiremos mas adelante1.
'a utilidad 'O+7N.O
.sta es designada para permitir importar un historial de logs de nagios a una
5: via el (:6K:5 daemon 0describiremos luego1. La utilidad trabaja enviando
archivos de logs histricos a un archivo estandar, un unix soc7 o un tcp soc7 en
un "ormato #ue (:6K:5 daemon entienda. .l (:6K:5 daemon puede luego
usarlo para procesar la salida y almacenar en un archivo de log historico
in"ormandolo en una 5:.
'a utilidad I'E7#OC9
.sta utilidad es muy simple, solo lee de un archivo estandar 0o +A:@(1 y escribe
todo sobre un soc7et de dominio unix o un tcp soc7et. .stos datos son leidos y
no son procesados por nada, antes de ser enviados al soc7et.
El de$onio N.O7./
La utilidad es diseBada para tomar los datos de salida de los componentes
(:6!6: y L6)K(:6 y almacenarlos en una 5: !y+CL o 5: Postgre+CL.
uando este inicia, el daemon (:6K:5 crea un soc7et y espera #ue los
clientes se conecten. (:6K:5 puede correr independientemente, bajo un
demonio multiproceso o bajo inetd 0si esta usando un soc7et AP1.
!ultiples clientes pueden conectarse al daemon (:6K:5 y transmitir
simultneamente.
Instalaci,n
*na vez compilado el modulo N.O procederemos a instalarlo manualmente
cp src/ndo$od(:2;o /usr/local/nagios/bin/ndo$od;o
Con esto copiaremos el modulo al directorio de ejecucin de $agios
cp config/ndo$od;cfg /usr/local/nagios/etc
%e esta manera instalaremos la configuracin inicial del modulo
@gualmente lo haremos con el daemon N.O7./
cp src/ndo7db(:2 /usr/local/nagios/bin/ndo7db
Con esto copiaremos el daemon al directorio de ejecucin de $agios
cp config/ndo7db;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
M9 'ivestatus
La "orma clsica de acceder a la in"ormacion actual de sus hosts y servicios es
mediante la lectura y anlisis del archivo status.dat, #ue es creado por (agios
en una base regular. .l intervalo de actualizacin se con"igura a travs
statusEupdateEinterval en nagios.c"g. *n valor t$pico es de PJ segundos. +i la
instalacin es cada vez ms grande, usted podr$a tener #ue aumentar este
valor con el "in de reducir al m$nimo el uso de P* y de . 8 + de disco. La
inter"az 'eb de (agios utiliza status.dat para mostrar sus datos.
;nalizar status.dat no es muy popular entre los desarrolladores de addons. ;s$
#ue muchos utilizan otro en"o#ue- (:6. .ste es un mdulo de 6= #ue se
carga directamente en el proceso de (agios y env$a todas las actualizaciones
de estado a travs de un soc7et *(@R a un proceso de ayuda. .so crea
sentencias +CL y actualizaciones de varias tablas en una base de datos !y+CL
o Postgre+CL. .ste en"o#ue tiene varias ventajas sobre status.dat-
Los datos se actualizan de inmediato, no slo cada PJ o KJ segundos.
Las solicitudes tienen acceso "cil a los datos a travs de +CL. ( analizador
para status.dat es necesario.
.n las grandes instalaciones el acceso de los addons a los datos es ms
rpida #ue la lectura status.dat.
Lamentablemente, sin embargo, ha (:6 tambin algunas de"iciencias graves-
Aiene una con"iguracin compleja.
+e necesita una 0creciente1 base de datos para ser administrado.
+e alimenta de una parte signi"icativa de sus =ecursos de la P*, solo con el
"in de mantener la base estrictas disponibles.
Limpieza peridica de la base de datos puede colgar (agios.
.l "uturo
:esde la versin P.P.J, hec7E!O o"rece un en"o#ue totalmente nuevo para
acceder a datos de estado y tambin histrico- Livestatus. ;s$ como (:6,
Livestatus hacer uso de la ;P@ de (agios evento 5ro7er y carga un mdulo
binario en su proceso de (agios. Pero luego otros (:6, Livestatus no realiza
escribir datos. .n su lugar, se abre un soc7et en la #ue 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 le$dos de estructuras de
datos internas de (agios. Livestatus no crea su propia copia de esos datos. ;
partir de la versin P.P.K #ue tambin se pueden recuperar los datos histricos
de los archivos de registro a travs de (agios Livestatus.
.sto es no slo un en"o#ue incre$blemente simple, si no tambin muy rpido.
;lgunas ventajas son-
6tro entonces (:6, utilizando Livestatus no impone una carga mensurable
de su P* para nada. +lo en el tratamiento de las consultas de una cantidad
muy pe#ueBa de la P* es necesario. Pero eso ni si#uiera se blo#uear
(agios.
Livestatus produce cero 8 + de disco cuando #uering datos de estado.
;cceso a los datos es mucho ms rpido #ue analizar status.dat o consultar
una base de datos +CL.
(o se necesita con"iguracin, base de datos no es necesaria. (inguna
administracin es necesario.
Livestatus escalas bastante bien a las grandes instalaciones, incluso ms all
de TJ,JJJ servicios.
Livestatus le da acceso a los datos espec$"icos de (agios no se dispone de
ning/n otro mtodo disponible acceder al estado - por ejemplo, la
in"ormacin del tiempo una multitud se encuentra actualmente en per$odo de
noti"icacin.
.n el mismo tiempo, o"rece a sus Livestatus propio lenguaje de consulta #ue es
simple de entender, o"rece la mayor$a de la "lexibilidad de +CL e incluso ms
en algunos casos. .s un protocolo rpido, ligero y no necesita un cliente
binario. @ncluso, pueden obtener acceso a los datos sin ning/n tipo de so"t'are
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-..!>
:espues tenemos #ue especi"icar #ue (agios cargue el archivo objeto
compilado livestatus#o, para eso debemos agregar a nagios.c"g-
'ro-erImo)uleT/usr/local/li'/m--livestatus/livestatus.o /var/li'/nagios/r=/live
eventI'ro-erIoptionsT-
9 dentro del log de (agios 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
6pciones del mdulo
Opci,n <alor por default 5ue significa
debug J +et this to P in order to
ma7e Livestatus log each
#uery it executes in
nagios.log
maxEcachedEmessages TJJJJJ LivestatusW access to
(agios log"iles caches
messages in-memory.
3ere you can set the
maximum number o"
cached messages. .ach
message ta7es about KTJ
bytes 0in the current
implementation1
maxEresponseEsize PJSMTLIJJ Livestatus constructs
each response in-memory
be"ore sending it to the
clients. @n order to avoid a
crash in case o" extensive
#ueries, the maximum
response size is limited.
Ahe de"ault limit is PJJ
!5
numEclientEthreads PJ Livestatus needs one
thread "or each
concurrent client
connection. ; "ixed
number o" threads is
created 'hen (agios
starts
threadEstac7Esize ITTDI Ahis parameter sets the
size o" the stac7 o" each
client thread. @n versions
be"ore P.P.S, the stac7
size 'as set to M !5
0pthread de"ault1. Ahe
ne' de"ault value is IS
O5. ; small stac7 reduces
virtual memory usage
and also save P*
ressources. ; too small
value 'ill probably crash
your (agios process,
though. 9ou have been
'arned
#ueryEtimeout PJJJJ Ahis value is in ms. @n
order to avoid being hung
by bro7en clients,
Livestatus imposes a limit
on the time "or reading
the #uery "rom the client.
; value o" J disables the
timeout
idleEtimeout DJJJJJ Ahis value is in ms.
Livestatus is 'aiting at
most that much time "or
the next #uery. ; value o"
J disables the timeout
.jemplo de como agregar opciones
'ro-erImo)uleT/usr/local/li'/m--livestatus/livestatus.o /var/run/nagios/r=/live
)e'ugT
.jemplo de como dejar !O Livestatus escuchando en un soc7et tcp para
consultarlo por red, por ejemplo por un sistema de reportes al estilo 4asper
=eports o alguna inter"az alternativa como Ahru7.
service livestatus
0
type T 9&2.68*F
port T 6UUJ
soc-etItype T stream
protocol T 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
Nagvis
(agvis es un addon para (agios, con el cual podemos tener gr"icos a modo de
diagrama estructural de red, dinmicos, con lo cual podemos conocer el estado
actual de la red mirando un gr"ico amigable al usuario "inal para #ue pueda
tomar acciones y8o in"ormar sobre el estado de los mismos a personal
responsable.
+e pueden utilizar imgenes propias de "ondo 0denominadas mapas1 y luego
integrarle iconos representativos de las m#uinas y servicios de la red #ue
muestren el estado actual de los mismos.
:eberemos bajar el pa#uete (agvis desde su sitio 'eb, y descomprimirlo y
copiarlo a un directorio visible desde la inter"az 'eb de (agios.
root@localhost # tar xvzf nagvis-.3.x.tar.gz
root@localhost # mv nagvis /usr/local/nagios/share
Para instalar la con"iguracin por de"ecto deberemos dentro de
8usr8local8nagios8share8nagvis renombrar o mover el archivo etc8nagvis.ini.php-
sample a etc8nagvis.ini.php.
Para su correcto "uncionamiento 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/*
Nota sobre la generaci,n del Auto$ap
Para una correcta generacin de la caracter$stica ;utomap de (agvis, primero
es necesario con"igurar todos los parents &osts para poder diagramar en
tiempo real la topolog$a de red. ;demas deberemos tomar los iconos de la
directiva statusmap'image #ue especi"icamos en el anexo &oste(tinfo, dicho
icono se almacena en nagios"s&are"images"logos, en "ormato gdK entendible
por el binario statusmap.cgi para mostrarlo via 'eb, pero no es entendible por
nagvis siendo #ue este lo busca en base al parametro statusmap'image
entonces aprovechando #ue dicho icono esta en "ormato gdK y en "ormato png
copiaremos en archivo en "ormato png al directorio nagvis"images"s&apes pero
cambiandole la extensin de png a gdK, y entonces (agvis lo vera como un
gdK siendo #ue realmente es un P() y debido a eso sera capas de mostrarlo.
Nota Nagvis =;> y te$plate integrada con PNP
!odi"icar el archivo nagvis"s&are"userfiles"templates"default#&over#&tml de la
siguiente manera, agregando solo las dos lineas donde especi"icamos el tag
img.
Vta'le classTRhoverIta'leRW
VtrWVth colspanTR!RWPlangIo'@ItypeQ ;PlangIlastIstatusIrefreshQ#
PlastIstatusIrefreshQ<V/thWV/trW
VtrWVt) classTRla'elRWVla'elWPlangInameQV/la'elWV/t)WVt)WPo'@InameQV/t)WV/trW
VA-- ,*$.& service --W
VtrWVt)
classTRla'elRWVla'elWPlangIserviceI)escriptionQV/la'elWV/t)WVt)WPserviceI)escrip
tionQV/t)WV/trW
VA-- *&F service --W
VtrWVt) classTRla'elRWVla'elWPlangIaliasQV/la'elWV/t)WVt)WPo'@IaliasQV/t)WV/trW
VA-- ,*$.& host --W
VtrWVt) colspanTR!R styleTRtext-align#centerLRWVimg srcTR/nagios/pnp/in)ex.phpX
hostTPo'@InameQYsrvTI5%68IYsourceTYvie=T0Y)isplayTimageR =ithTR300pxR
heightTRHEpxRWV/t)WV/trW
VtrWVt) classTRspacerR colspanTR!RWV/t)WV/trW
VtrWVt) classTRla'elPo'@IstateQRWVla'elWPlangIstateQ
;PlangIstateItypeQ<V/la'elWV/t)WVt) classTRstatePo'@IstateQRWPo'@IstateQ
;Po'@IstateItypeQ<Po'@IinI)o=ntimeQPo'@Iac-no=le)ge)QV/t)WV/trW
VtrWVt)
classTRla'elRWVla'elWPlangIoutputQV/la'elWV/t)WVt)WPo'@IoutputQV/t)WV/trW
VtrWVt)
classTRla'elRWVla'elWPlangIperf)ataQV/la'elWV/t)WVt)WPo'@Iperf)ataQV/t)WV/trW
VtrWVt)
classTRla'elRWVla'elWPlangIcurrentIattemptQV/la'elWV/t)WVt)WPo'@IcurrentIchec-Ia
ttemptQ/Po'@ImaxIchec-IattemptsQV/t)WV/trW
VtrWVt)
classTRla'elRWVla'elWPlangIlastIchec-QV/la'elWV/t)WVt)WPo'@IlastIchec-QV/t)WV/tr
W
VtrWVt)
classTRla'elRWVla'elWPlangInextIchec-QV/la'elWV/t)WVt)WPo'@InextIchec-QV/t)WV/tr
W
VtrWVt)
classTRla'elRWVla'elWPlangIlastIstateIchangeQV/la'elWV/t)WVt)WPo'@IlastIstateIch
angeQV/t)WV/trW
VA-- *&F host --W
VtrWVt) classTRspacerR colspanTR!RWV/t)WV/trW
VtrWVt)
classTRla'elPo'@IsummaryIstateQRWVla'elWPlangIsummaryIstateQV/la'elWV/t)WVt)
classTRstatePo'@IsummaryIstateQRWPo'@IsummaryIstateQ Po'@IsummaryIinI)o=ntimeQ
Po'@IsummaryIac-no=le)ge)QV/t)WV/trW
VtrWVt)
classTRla'elRWVla'elWPlangIsummaryIoutputQV/la'elWV/t)WVt)WPo'@IsummaryIoutputQV
/t)WV/trW
VA-- ,*$.& service --W
VtrWVt) colspanTR!R styleTRtext-align#centerLRWVimg srcTR/nagios/pnp/in)ex.phpX
hostTPo'@InameQYsrvTPserviceI)escriptionQYsourceTYvie=T0Y)isplayTimageR
=ithTR300pxR heightTRHEpxRWV/t)WV/trW
VtrWVt)
classTRla'elRWVla'elWPlangIperf)ataQV/la'elWV/t)WVt)WPo'@Iperf)ataQV/t)WV/trW
VtrWVt)
classTRla'elRWVla'elWPlangIcurrentIattemptQV/la'elWV/t)WVt)WPo'@IcurrentIchec-Ia
ttemptQ/Po'@ImaxIchec-IattemptsQV/t)WV/trW
VtrWVt)
classTRla'elRWVla'elWPlangIstateItypeQV/la'elWV/t)WVt)WPo'@IstateItypeQV/t)WV/tr
W
VtrWVt)
classTRla'elRWVla'elWPlangIlastIchec-QV/la'elWV/t)WVt)WPo'@IlastIchec-QV/t)WV/tr
W
VtrWVt)
classTRla'elRWVla'elWPlangInextIchec-QV/la'elWV/t)WVt)WPo'@InextIchec-QV/t)WV/tr
W
VtrWVt)
classTRla'elRWVla'elWPlangIlastIstateIchangeQV/la'elWV/t)WVt)WPo'@IlastIstateIch
angeQV/t)WV/trW
VA-- *&F service --W
VA-- ,*$.& chil)s --W
VtrWVt) classTRspacerR colspanTR!RWV/t)WV/trW
VtrWVt) colspanTR!RW
Vta'le =i)thTR00ZRW
VtrW
VA-- ,*$.& servicegroup --WVt)
classTRla'elRWVla'elWPlangIchil)InameQV/la'elWV/t)WVA-- *&F servicegroup --WVt)
classTRla'elRWVla'elWPlangIchil)InameQV/la'elWV/t)WVt)
classTRla'elRWVla'elWPlangIstateQV/la'elWV/t)WVt)
classTRla'elRWVla'elWPlangIoutputQV/la'elWV/t)W
V/trW
VA-- ,*$.& loopIchil) --W
VtrWVA-- ,*$.& servicegroupIchil) --WVt)WPo'@InameQV/t)WVA-- *&F
servicegroupIchil) --WVt)WPo'@InameQV/t)WVt)
classTRstatePo'@IsummaryIstateQRWPo'@IsummaryIstateQPo'@IsummaryIinI)o=ntimeQ
Po'@IsummaryIac-no=le)ge)QV/t)WVt)WPo'@IsummaryIoutputQV/t)WV/trW
VA-- *&F loopIchil) --W
V/ta'leW
V/t)WV/trW
VA-- *&F chil)s --W
V/ta'leW
My#5'
!y+CL es uno de los +istemas )estores de 5ases de :atos =elacional multihilo
y multiusuario, ms populares,
Co$pilacion
:ebemos descargar el pa#uete de su 'eb o"icial 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
Establecer la contrase4a del usuario root
Por de"ecto, el usuario root no tiene asignada una contraseBa y esto no es
nada recomendable, as$ #ue vamos a establecer una. *tilizamos el comando-
mys)ladmin *u root pass+ord ,contrase-adificil,
ambiar Xlo#ueseaY por la contraseBa #ue desemos establecer, pero es
importante no olvidarse de teclear las comillas simples.
omprobamos la nueva contraseBa abriendo una sesin en mys#l-
mys)l *u root *p
(os pedir la contraseBa, la tecleamos, y si todo es correcto entraremos en la
inter"az del cliente de !y+CL, podemos teclear alg/n comando de mys#l para
interactuar con el servidor, por ejemplo-
mys)l. s&o+ databases/
(os mostrar las bases de datos #ue existan en el servidor, normalmente y si
acabamos de instalar, aparecern las bases de datos mys#l y test.
:eberemos crear una base de datos llamada (agios
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<
;hora deberemos crear un usuario con privilegios de +.L.A, @(+.=A, *P:;A.,
:.L.A.
C:*38* 96*: nagios .F*&8.C.*F ,? >nagios!3>L
9 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
Aecleamos exit o #uit para salir del programa cliente.
Pa0uetes
La instalacion de My#5', en el caso de tenerlo empa#uetado en nuestra
distribucion Linux, es bastante simple
CentO# y Red!at
Para instalar el pa#uete mys#l haremos uso de la utilidad de sistema up7date
o yu$
up0date mys)l*server
yum install mys)l*server
9 para dejar el servicio corriendo en segundo plano
service mys)ld start
Para con"igurar el arran#ue del servicio
Lo habitual ser #ue cuando arran#ue o se pare nuestro servidor tambien se
inicie o detenga el !y+CL, para ello deberemos ejecutar-
c&1config 2level 34 mys)ld on
.sto activa el demonio mys#ld en los runlevel D y T, y lo detiene en el resto. +i
#ueremos comprobar el estado del servicio podemos utilizar lo siguiente-
c&1config 2list mys)ld
.ebian
Para instalar mys#l en :ebian, 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
9 para setear su arran#ue por de"ecto -
update*rc#d *f mys)l defaults
Nota #u#E
Para setear el arran#ue de un servicio en +u+. Linux deberemos ejecutar el
comando insserv *d nombre'servicio con el parametro *d estariamos indicando
una opcion similar a defaults como en :ebian.
Apac&e y P!P
(agios muestra los estados de todos los servicios con"igurados a travs de
pginas 'eb, esto implica #ue debe instalarse un servidor 'eb con la
in"ormacin correspondiente para hacerlo.
.n esta etapa se hace dicha instalacin siguiendo las mejores prcticas de
instalacin de ;pache poniendo n"asis en su seguridad.
;pache es un so"t'are libre servidor 3AAP de cdigo abierto para plata"ormas
*nix 05+:, )(*8Linux, etc.1, ?indo's, !acintosh y otras, es el mas usado en
internet.
P3P es un lenguaje de programacin interpretado, diseBado originalmente para
la creacin de pginas 'eb dinmicas, en nuestro caso nos servira realizar una
interpretacin extra de los datos de (agios via 'eb.
CentO#
Para instalar los pa#uetes desde ent6+ ejecutaremos -
yum install &ttpd p&p p&p*common
Para dejar el servicio corriendo -
"etc"init#d"&ttpd start
.ebian
Para instalar los pa#uetes de :ebian, deberemos ejecutar -
apt*get install apac&e0 p&p4
Para dejar el servicio corriendo -
"etc"init#d"apac&e0 start
Configuraci,n
;hora nos re"eriremos a la con"iguracin de los elementos instalados para su
posterior articulacin y "uncionamiento en conjunto.
I$ple$entaci,n
Para el correcto "uncionamiento de (agios, y asegurar escalabilidad con orden,
se debe seguir una estructura de con"iguracin y tener previamente
planteados temas como-
:e"inicin una estructura de archivos y directorios acorde a la situacin,
hacindolo a su vez mas entendible para su posterior administracin
on"igurar ;pache para su permitir su acceso via 'eb por 3AAP o 3AAP+
.n la mayor$a de los e#uipos a monitorear mientras "uera posible instalar y
dejar corriendo los servicios de +(!P
on"igurar servicio de env$o de emails
:e"inir grupos de contactos a los cuales se les enviar$an los avisos de
noti"icaciones, dependiendo de #ue hosts o servicio se trate.
:e"inir grupos de hosts y servicios, al tenerlos agrupados y verlos mas
"acilmente
5 continuacin se detalla como llevar a cabo dic&os pasos necesarios para su
implementacin#
En el servidor
on"iguraciones necesarias en el servidor de monitoreo.
Nagios
;lgunos puntos basicos previos a la instalacion -
PA%! .sta es la ruta de instalacin. Por de"ecto es 8usr8local8nagios
3suario *suario #ue va a usar nagios par ejecutarse. :ebe crearse con
adduser especi"icarle el P;A3 de (agios como su directorio &ome de inicio,
usualmente deberemos llamarlo nagios y debe estar dentro del grupo nagios
+rupo )rupo de usuario #ue va a usar (agios. .ste grupo tendr permisos
sobre todos los "icheros y directorios de (agios. Por de"ecto es nagios. Puede
crearse con groupadd.
3R' (agios utiliza una inter"az 'eb para ejecutarse. .sta *=L determina cual
va a ser el directorio virtual #ue debe usar para instalarse. Por de"ecto
8nagios, es decir, las peticiones irn dirigidas a http-88host8nagios
Estructura de arc&ivos
*na vez #ue compilamos e instalamos el pa#uete (agios nos termina
#uedando una nomenclatura de directorios como la siguiente -
bin
5)ui se almacenan los binarios ejecutables
etc
Guarda la configuracion de $agios
libe2ec
6e almacenan los plugins )ue efectuaran los c&e)ueos a monitorear
sbin
%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
bin
:entro de este directorio encontramos los ejecutable principales, como el
binario nagios #ue es el #ue se ejecuta como proceso en segundo plano, el
objeto ndomod.o #ue es el modulo #ue se encarga de traducir las estadisticas
de nagios en "ormato de consultas My69:, y ndo2db #ue el proceso en
segundo plano #ue se encarga conectarse con la base de datos para
posteriormente ejecutar esas consultas.
etc
.ste directorio guarda la con"iguracin de (agios, sus componentes,
hosts8servicios a che#uear, comandos de ejecucion, contactos de noti"icacin,
intervalos de che#ueos. :entro de el hay di"erentes subdirectorios y archivos.
libe2ec
;lli se contienen lo ejecutables de los plugins #ue e"ectuan los che#ueos,
+(!P, +;P, 6racle, ++3, #ue pueden ser binarios, scripts en Perl, P3P, +hell,
4ava, etc.
sbin
;#ui se almacenan los ejecutables cgi #ue se ejecutaran para la visualizacion
por 'eb de la consola (agios.
s&are
;#ui encontramos el contenido 'eb, imagenes, logos, los aditivos como P(P,
(agvis y los datos #ue necesitan para "uncionar estos.
var
;#ui se guardan los datos internos de (agios, estadisticas de los che#ueos,
in"ormacion de ejecucion actual, archivos de soc7ets, registros de logs, colas
de ejecucin de che#ueos.
Arc&ivos de configuracion nagios/etc
cgi;cfg
%efinir arc&ivo de configuracion principal de $agios
mainEcon"igE"ileH8usr8local8nagios8etc8nagios.c"g
;uta donde se ubican los arc&ivos a mostrar via +eb
physicalEhtmlEpathH8usr8local8nagios8share
;uta del url a donde ubicar $agios desde el navegador
urlEhtmlEpathH8nagios
Mostrar o no el icono de ayuda en la interfaz +eb
sho'EcontextEhelpHJ
Mostrar objetos pendientes de c&e)ueo
useEpendingEstatesHP
!sar autenticacion para acceder a $agios
useEauthenticationHP
<ener usuario logueado por default =no recomendado, dejar comentado>
Fde"aultEuserEnameHguest
!suarios con acceso permitido para ver la informacion de objetos =separados
por comas>
authorizedE"orEsystemEin"ormationHnagiosadmin
!suarios con acceso permitido para ver la informacion de configuracion
=separados por comas>
authorizedE"orEcon"igurationEin"ormationHnagiosadmin
!suarios con acceso permitido ejecucion de comandos nagios =separados por
comas>
authorizedE"orEsystemEcommandsHnagiosadmin
!suarios permitidos a ver informacion de &osts y servicios =separados por
comas>
authorizedE"orEallEservicesHnagiosadmin
authorizedE"orEallEhostsHnagiosadmin
!suarios permitidos para ejecutar comandos sobre &osts y servicios
=separados por comas>
authorizedE"orEallEserviceEcommandsHnagiosadmin
authorizedE"orEallEhostEcommandsHnagiosadmin
<asa de refresco para la interfaz +eb en segundos
re"reshErateHUJ
&tpass"d;users
;rchivo con pass'ords encriptadas de los usuarios #ue se autenti"icaran por
3AAP
nagios;cfg
;rchivo de con"iguracion principal de (agios, a#ui se especi"ican los
directorios de trabajo y se incluyen los archivos de con"iguracion extra a
utilizar por (agios
on diversos parametros -
log?file se especi"ica el archivo de log a utilizar por (agios
cfg?file se especi"ica un archivo de con"iguracion extra a incluir en la
ejecucion de (agios
cfg?dir se especi"ica un directorio con archivos de con"iguracion extra a
incluir recursivamente en la ejecucion de (agios
log?arc&ive?pat& path donde se alojaran los archivos de log
use?syslog integracion con syslog
ndo7db;cfg
;rchivo de con"iguracion del daemon #ue se encarga de introducir las
consultar generadas por el modulo ndomod
ndo$od;cfg
!odulo de (agios #ue se encarga de traducir la in"ormacion de ejecucion de
(agios en consultas !y+CL, disponiendolas por medio de un soc7et
resource;cfg
;rchivo de con"iguracion donde se de"inen macros de ejecucion
objects/
:irectorio de archivos generales de con"iguracion
objects/co$$ands;cfg
:e"inicion de comandos de ejecucion por de"ault, con los alias #ue #ueremos
usar
objects/contacts;cfg
:e"inicion de contactos de noti"icacion
objects/local&ost;cfg
Plantilla inicial para el che#ueo del host local
objects/printer;cfg
Plantilla de ejemplo de che#ueo de impresoras por +(!P
objects/s"itc&;cfg
Plantilla de ejemplo de che#ueo de s'itch por +(!P
objects/te$plates;cfg
Plantillas generales de host, contactos, y servicios
objects/ti$eperiods;cfg
Plantilla inicial para de"inir periodos de che#ueos, a#u$ se de"inen los rangos
de tiempo donde son vlidos el env$o de alertas y las veri"icaciones de los
servicios #ue estn "uncionando
objects/"indo"s;cfg
Plantilla de ejemplo de che#ueo de e#uipos ?indo's
services/
;#ui vamos a de"inir los servicios #ue usaremos en los che#ueos. +e de"ine la
mtrica o el servicio a monitorizar y el host8grupo de hosts sobre el #ue se
ejecuta
var/r"/
;lli se encuentra un archivo special de soc7et #ue realiza la comunicacion de
los comando y ordenes de la inter"az 'eb hacia nagios, como cambiar
horarios de che#ueo, deshabilitar noti"icaciones etc.
.l archivo #ue alli se encuentra nagios#cmd debe tener permisos de
escritura y lectura por el propietario y el grupo de pertenencia
nagios?nagcmd =@@A>, nagcmd es un grupo especial en el cual vamos a
incluir al usuario #ue ejecuta el servidor 'eb 0ej# en apac&e sobre %ebian
+++*data1, y asi poder enviar ordenes desde la inter"az 'eb )@. .sta es
una caracter$stica avanzada de (agios es #ue permite v$a 'eb la ejecucin
de ciertas tareas ms all del propio conjunto de )@Ys #ue vienen de serie,
como por ejemplo la
ca$da o el reinicio del propio (agios, etctera. Para poder ejecutar este tipo de
comandos es necesario tambin con"igurar el sistema de una "orma un tanto
especial. (o hay #ue olvidar #ue al con"igurar (agios de este modo se est
permitiendo desde la 'eb activar o desactivar opciones #ue en principio slo
estaban disponibles desde la consola del sistema. Para con"igurar (agios de
esta "orma, hay #ue editar el "ichero principal nagios#cfg y aBadir 0o modi"icar
si ya existen1 las siguientes l$neas-
chec-IexternalIcomman)sT
comman)Ichec-IintervalT-
comman)IfileT/usr/local/nagios/var/r=/nagios.cm)
Lo #ue har #ue (agios active el che#ueo para buscar comandos externos, con
tanta "recuencia como sea posible por el sistema y buscar los comandos en el
archivo nagios#cmd.
.n el siguiente gr"ico detalla la organizacin recomendada de la con"iguracin
de (agios.
+i por ejemplo tenemos estos dos casos -
Nagios un pa@s $ultiples provincias o localidades
/uenos Aires
Lan/s
>lorencio <arela
;5;
6lavarria
5ahia 5lanca
#anta e
=osario
Neu0uAn
Qapala
+an !artin
.n este caso, simplemente deberemos tener templates para hosts y servicios,
#ue se dividan por tipo. +i es un servidor, e#uipo de red, scada etc.
Nagios $Bltiples pa@ses y $ultiples provincias o localidades
Argentina
5uenos ;ires
(eu#uen
Aucuman
/rasil
=io
ajati
Paraguay
iudad del este
<illa hayes
Portugal
Lisboa
.n este caso algo mas complejo, deberemos tener templates para hosts
divididos para cada pa$s, templates para servicios divididos para cada pa$s,
templates para contactos divididos para cada pa$s.
+iempre debemos utilizar templates para todo, por#ue cuando debemos hacer
un cambio en masa es mucho mas simple y con menos posibilidad a errores.
#NMP %raps
*na trap es generado por el agente snmp en el dispositivo a monitorear para
reportar ciertas condiciones y cambios de estado en un procesp
+e %cae& un servicio
3ay un problema de memoria o de hard'are
La carga de procesos excede un l$mite
+e llena una particin de disco
.n debian para instalar el manejador de traps +(!P deberemos ejecutar los
siguiente -
apt-get install snmptt
/etc/sn$p/sn$ptt;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/sn$p/sn$ptt;conf
*G*&8 lin-Fo=n ..3.6..6.3...U.3 R6tatus *ventsR Critical
/etc/sn$p/sn$ptrapd;conf
)isa'le3uthorization yes
traphan)le )efault /usr/s'in/snmptthan)ler
on"iguracin de permisos -
usermo) -a -$ nagios snmptt
/etc/default/sn$pd
8:3+F:9&Tyes
+chema !y+CL
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
=einiciamos los servicios +(!P -
/etc/init.)/snmptt
/etc/init.)/snmp)
=e".- http-88exchange.nagios.org8directory8;ddons8+(!P8(agios-+(!P-Arap-
@nter"ace-ZKM(+A@ZKU8details
Apac&e
Para permitir y tener una correcta visualizacion de la consola 'eb de (agios,
procederemos a realizar una con"iguracin personalizada dentro del servidor
'eb ;pache.
:eberemos crear un archivo de con"iguracion pre"erentemente con el nombre
nagios.con" para tenerlo de una manera mejor organizada, y deber ir dentro
del directorio de donde el ;pache obtiene su con"iguracin, el mismo
depender del mtodo de instalacin elegido o con #ue distribucin de Linux
estemos trabajando.
CentO# 8etc8httpd8con".d
.ebian 8etc8apacheK8site-available y luego crear un lin1 simbolico a ese
arc&ivo dentro de 8etc8apacheK8site-enabled
#u#E 8etc8apacheK8vhosts.d
;rchivo de con"iguracin por de"ecto de (agios
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 ##'
: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 protocolo 66: dentro del
servidor +eb 5pac&e#
3+3C5*I6*:G*:IC23$6TR-F 662R
; continuacin mostramos un archivo de con"iguracin de ;pache mas
elaborado con autenticacin por ;ctive:irectory
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
.l usuario 5ind debe ser un usuario solo con privilegios necesarios para saber
#ue usuarios existen 0ver documentacin L:;P1, y su contraseBa debe estar
almacenada en texto plano en la con"iguracin, y el archivo de con"iguracin
debe tener los debidos permisos para #ue no sean le$dos por otros usuarios.
.n la directiva Aut&'.AP3R', especi"icamos
@P del servidor de autenticacion
:( donde buscar
6*H*suarios,:Htest,:Hcom,:Har
Cue buscar, en este caso usuarios
objectlassHuser
Cue sean miembros del grupo !onitoreo a su vez dentro del grupo Aech
member6"H(H!onitoreo,6*HAech,6*H)rupos,:Htest,:Hcom,:Har
.n caso de tener re#uerimientos mas exhaustivos con respecto a la
autenticacin, como restringir el acceso por ip se puede agregar a cada campo
[:irectoryG los siguientes parmetros.
%r)er )eny(allo=
Feny from all
3llo= from !J.0.0.
on esto restringimos todo el acceso, y lo vamos abriendo @P x @P.
.n el caso por ejemplo de #ue usemos otro sistema de autenticacion como
;+, deberemos compilar el modulo de apache ;uthE;+, si estammos usando
:ebian 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 #ue a la "echa
no estan en la rama estable, si no en la inestable, pero tenemos los "uentes
originales y el di"" para parchear esos "uentes y ejecutar los scripts #ue lo
convierten en pa#uete debian. ;ntes deberemos tener instalados los pa#uetes
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'>.
on eso tenemos el pa#uete libapacheK-mod-auth-cas listo para "uncionar,
para instalarlo deberemos ejecutar el comando dp1g *i libapac&e0*mod*aut&*
cas'E#A#F*3'i3F@#deb, luego ejecutar el comando a0enmod aut&'cas, con lo
cual habilitamos ese modulo en la ejecucion del servicio ;pache.
.n el archivo de con"iguracin del site de (agios, 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
.n la directiva ;+oo7iePath, especi"icamos un directorio temporal donde
alojar las coo7ies, por de"ault en debian es "var"cac&e"apac&e0"mod'aut&'cas
Luego en cada entrada :irectory eliminamos todas las entradas de
autenticacion y las cambiamos a solo esta 5ut&<ype C56.
:eberemos reiniciar el servicio ;pache para #ue los cambios tengan e"ecto.
Configuraci,n de E$ail
Para el env$o de noti"icaciones por parte de (agios es necesario con"igurar un
!A; 0;gente de Aransporte de orreos1, por lo general suele estar previamente
con"igurado el +endmail en el caso de #ue nos basemos en un ent6+, o un
Posti"x tratndose de un +u+. o :ebian.
.n caso de #ue utilizemos el pa#uete de Post"ix disponible en la distribucin, y
debamos utilizar otro servidor saliente +!AP dentro de la red, deberemos
con"igurar el relayhost apuntando al servidor +!AP de la red local ej
PUK.PIM.P.PPJ, #uedando el archivo 8etc8post"ix8main.c" con las siguientes
entradas de con"iguracin.
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
+iendo 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<.
PNP6Nagios
Para la ejecucin de almacenamiento de gr"icas deberemos con"igurar ciertos
comandos #ue obtengan los resultados de la ejecucin de comandos y
servicios, para ellos deberemos agregar y8o modi"icar en la con"iguracin de
(agios
Modo si$ple
6e ejecutara el procesamiento de perfdata, por la ejecucion de cada comando#
nagios;cfg
ena'leIenvironmentImacrosT
serviceIperf)ataIcomman)Tprocess-service-perf)ata
hostIperf)ataIcomman)Tprocess-host-perf)ata
co$$ands;cfg
)efine comman) 0
comman)Iname process-service-perf)ata
comman)Iline /usr/'in/perl /usr/local/nagios/li'exec/processIperf)ata.pl
1
)efine comman) 0
comman)Iname process-host-perf)ata
comman)Iline /usr/'in/perl /usr/local/nagios/li'exec/processIperf)ata.pl -)
5%68+*:CF383
1
Modo avan-ado
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
.irectivas
service?perfdata?file
=uta al archivo temporal #ue debe contener los datos de rendimiento.
service?perfdata?file?te$plate
>ormato del archivo temporal. Los datos se de"inen utilizando (agios
macros.
service?perfdata?file?$ode
6pcin %a& especi"ica #ue los datos se insertan como anexo.
service?perfdata?file?processing?interval
.l intervalo de procesamiento es de PT segundos
service?perfdata?file?processing?co$$and
.l comando #ue habr de ejecutarse durante dicho intervalo.
co$$ands;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
Luego se deja ejecutando en segundo plano el demonio npcd para procesar la
cola de mensajes.
(ota- en modo avanzado con (P: se puede deshabilitar la opcion
enable'environment'macros para ahorrar carga de P*, ya #ue en este modo
esta ya no es re#uerida.
Interfa- "eb
Luego en el template #ue 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 @!P, +(!P o
de mecanismos como ver si tenemos x puerto abierto, o ciertos mensajes de
respuesta, a#ui se comentan los protocolos mas comunes para monitorear
estados de e#uipos 0@!P8+(!P1 o servicios 0+(!P1.
ICMP
.l protocolo @!P 07nternet Control Message rotocol1 puede ser considerado
como parte de la capa @P. La especi"icacin completa de este protocolo se
encuentra en => LUK. ;un#ue sus mensajes son encapsulados en datagramas
@P como cual#uier otro protocolo de capa superior, su uso corresponde a
mensajes especiales de la propia capa de red, aun#ue tambin pueden acceder
a l las propias aplicaciones 0por ejemplo el programa ping1.
;lgunos ejemplos de uso de @!P son- obtencin de mscaras de red 0solicitud
y respuesta1, obtencin de marcas de tiempo 0solicitud y respuesta1,
condiciones de error del tipo %port unreachable& o %se necesita "ragmentar el
datagrama habindose solicitado la no-"ragmentacin&, peticin y respuesta de
eco para comprobar la actividad de otro host, in"ormacin sobre el estado de
las comunicaciones en una red, etc.
Algunas consultas ICMP
Los mensajes de #uery incluyen tras la cabecera K bytes de identi"icacin, para
#ue el cliente distinga las respuestas dirigidas a l de las dirigidas a otros
procesos, y K btes de n/mero de secuencia, para #ue el cliente pueda
identi"icar Wre#uestsW con WreplaysW. La generacin de replys suele correr a cargo
del 7ernel 0no es un proceso de usuario1. Los mensajes @!P de W#ueryW ms
importantes son-
Peticin/respuesta de mscara- ;un#ue normalmente se usa :3P,
tambin es posible para el host hacer una peticin durante el proceso de
arran#ue para obtener la mscara y una peticin =;=P para obtener su @P. La
peticin de mscara suele enviarse en di"usin. *n servidor de mscaras se
encarga de contestar.
Peticin/respuesta de marca de tiempo- +e utiliza para conocer el
tiempo #ue un host tarda en procesar un mensaje y contestarlo o para
sincronizar relojes entre hosts. Los tiempos se ponen en milisegundos desde
las Jh *A 0Aiempo oordinado *niversal1. +e proveen tres campos, a parte
de los anteriormente citados para este tipo de mensajes. W!arca de tiempo
de generacinW, a rellenar por el emisor, y W!arca de tiempo de recepcinW, y
W!arca de tiempo de transmisinW, a rellenar por el receptor. Los signi"icados
de los campos resultan evidentes.
Solicitud/anuncio de router- +e trata de una "orma de inicializar la tabla
de enrutamiento. Aras el arran#ue, un host env$a en broadcast o multicast un
mensaje de solicitud de router. *no o ms routers respondern con mensajes
de anuncio de router. .sto lo podrn hacer peridicamente permitiendo a los
hosts actualizar sus tablas de enrutamiento.
Peticin/respuesta de eco- +e utiliza para conocer si un host est en red.
.l mensaje @!P contiene unos datos 6P@6(;L.+ cuyo contenido es
irrelevante. !uchos +6 implementan este mensaje mediante el programa
ping. .n las implementaciones *(@R de ping el campo identi"icador suele
asociarse con el @: del proceso #ue env$a el re#uest. .sto permite identi"icar
las respuestas si hubiera varias instancias de ping corriendo en el mismo
host. .n el campo de secuencia, se suele llevar un contador #ue permite ver
si se han perdido, duplicado o desordenado pa#uetes, cosa t$pica en la capa
@P sobre la #ue se encapsulan los mensajes @!P.
<eamos 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'+3NO# ICMPC# .E ERROR
9a se ha dicho #ue el "ormato de los mensajes de error tan slo incluye,
adems de la cabecera, una copia de la cabecera @P del datagrama #ue gener
el error y los M primeros bytes del datagrama. .n algunos de los ejemplos #ue
siguen veremos la razn de ser de este "ormato-
Destination unreachable- .ste tipo de mensajes de error se generan
cuando por alguna razn, el datagrama no pudo alcanzar su destino 0puerto,
host, red inalcanzable, necesidad de "ragmentar con bit :> activado\1. La
"orma de comunicar este error a la capa superior es copiando la cabecera @P
en el propio mensaje de error. )racias al campo WprotocoloW el mdulo @!P
#ue lo reciba sabr asociarlo con el protocolo adecuado. +upongamos #ue se
produce un Wport unreachableW en el env$o de un datagrama *:P. La cabecera
@P permite identi"icar #ue el error se produjo en el protocolo *:P, y adems
esto sirve para interpretar los M bytes adicionales, #ue pertenecern a la
cabecera *:P. .stos contendrn los puertos origen y destino 0ver tema *:P1.
.l puerto de origen puede servir para asociar el error con un determinado
proceso de usuario 0ej. puerto KUKS asociado a un cliente t"tp1, mientras #ue
el destino nos indica #u puerto origin el error Wport unreachableW.
6tro ejemplo, al intentar hacer ping al otro e#uipo de la red, #ue 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
+e han producido mensajes @!P de error en respuesta a mensajes @!P de
#uery, lo cual +@ est permitido, como ya se ha dicho.
Source quench- .ste tipo de mensaje es generado por un router con
problemas de congestin para avisar al host "uente de #ue reduzca el "lujo de
transmisin. .s muy poco usado, normalmente los routers se limitan a tirar
pa#uetes y a intentar solucionar la congestin mediante algoritmos de
enrutamiento.
Parameter problem- +i un router intermedio o el host destino encuentran
un problema en la cabecera @P #ue le obliga a desecharlo, puede enviar un
mensaje @!P de este tipo al host "uente. +i el cdigo es cero, un puntero
marca el lugar de la cabecera en el #ue se produjo el error.
Redireccin- +on enviados por un router al remitente de un datagrama @P
cuando ste deber$a haber sido enviado a travs de otro router.
Time !ceeded- +on enviados al remitente de un datagrama @P cuando se
cumple el tiempo de vida mximo del pa#uete. .sto puede ocurrir por#ue el
campo AAL del datagrama se haya puesto a J en un router, o bien el tiempo
de reensamblado de "ragmentos se haya cumplido en el destino. 5asndose
en este mensaje, y variando el campo AAL de un mensaje de peticin de eco
es posible obtener la ruta a un destino. +i el AAL es insu"iciente, se recibir
un mensaje de tiempo excedido por cada router donde al recalcular el AAL
valga J, y un mensaje de respuesta de eco cuando el AAL sea su"iciente para
llegar al destino. .l comando tracert de 'indo's se basa en este algoritmo.
#NMP D#i$ple Net"or8 Manage$ent ProtocolE
Protocolo +imple de ;dministracin de =ed o +(!P es un protocolo de la capa
de aplicacin #ue "acilita el intercambio de in"ormacin de administracin entre
dispositivos de red. .s parte de la "amilia de protocolos AP8@P. +(!P permite a
los administradores supervisar el desempeBo de la red, buscar y resolver sus
problemas, y planear su crecimiento. Podemos conocer datos internos de
dispositivos a monitorear, ej uso de P*, !emoria, :isco, *ptime etc.
+e basa entre gestor y agentes.
Los agentes se centran en recopilar cierta in"ormacin y mantenerla
organizada para #ue el gestor pueda acceder a ella cuando lo necesite. .l
agente tambin puede mandar noti"icaciones al gestor sobre problemas o
in"ormacin relevante sin #ue el gestor se lo solicite.
.l gestor controla y act/a sobre los elementos de la red, controlando la
in"ormacin #ue recopilan los agentes se pueden tomar decisiones y actuar
sobre la red para mejorar los aspectos #ue se necesiten. Para ello se basa en
tres elementos-
#NMP- .s el protocolo entre el gestor y el elemento de red, se suele utilizar
*:P
#MI- 0+tructure o" !anagement @n"ormation1- conjunto de estructuras y
es#uemas de identi"icacin para de"inir las !@5]s
MI/- 0!anagement @n"ormation 5ase1- especi"ica #u variables mantienen los
elementos de la red 0agentes1
#MI D#tructure of Manage$ent Infor$ationE
+!@ es el conjunto de estructuras y es#uemas para de"inir elementos de las
!@5. :ichas estructuras estn "ormateadas en ;+(.P 0;bstract +ynstax
(otation 6ne1, indicando cmo debe ser el nombre, la sintaxis y el mtodo de
codi"icacin de los datos para su transmisin por la red.
*n objeto en +!@ consta de los siguientes campos-
6bjeto- Literal 06bject descriptor1 con la eti#ueta #ue identi"ica el objeto
+intaxis- Puede ser alguno de los siguientes tipos ;+(.P-
+imple+yntax 0@(A.).=, 6A.A +A=@(), 654.A @:.(A@>@.=, (*LL1
;pplication+yntax 0(et'or7;ddress 0direcciones ip de DK bits1, ounter
0enteros no negativos de tamaBo DKbits1, )auge 0contadores #ue
mantienen el maximo valor alcanzado, pueden decrementarse en algun
momento1, AimeAic7s 0centsimas de segundo desde el evento deseado1,
6pa#ue 0in"ormacin arbitraria11
6tros tipos 0=> PPTT1.
;cceso- Puede ser- read-only, read-'rite, 'rite-only, not-acessible. +!@vK
incluye adems read-create, y deja de usar 'rite-only
+tatus- Puede ser- mandatory 0en +!@vK se indica como current1, #ue tienen
#ue ser implementadas por cual#uier versin de la !@5 #ue incluya ese
modulo, optional, #ue pueden "altar sin #ue eso cause ning/n problema 0 en
vez de optional, +!@vK incluye deprecated, para objetos #ue ya no se usan, y
#ue por tanto, no tienen por #u estar implementados1, u obsolete, #ue han
dejado de mantenerse y revisarse.
:escripcin- :e"inicin textual de la semntica del tipo de objeto. (o es
codi"icable mediante una computadora, es una descripcin para
programadores y administradores #ue pueden leerla para entender el
"uncionamiento de la !@5.
La de"inicin termina indicando bajo #u nodo del rbol de 6@:s 0ver la
siguiente seccin1 debe situarse y con #u n/mero a e"ectos de identi"icacin
MI/F DManage$ent Infor$ation /aseE
La in"ormacin re#uerida de un sistema se almacena en las !@5s usando una
estructura jerr#uica #ue contiene los identi"icadores de objeto descritos
mediante ;+(.P.
.sta jerar#u$a de rbol contiene los elementos #ue pueden ser de tipo escalar o
tablas de datos. .stos objetos cuelgan en el rbol de la !@5 de la rama
correspondiente a la organizacin #ue mantiene dicha estructura. +e nombra a
los ejemplares de la !@5 mediante su identi"icador de objeto #ue es una
cadena de enteros #ue representa como cuelga el objeto del nodo ra$z. Por
ejemplo @P es el 0P.D.I.P.K.P.S.1
.sta es la estructura de la !@5-@@ 0=> PKPD1 y sus di"erentes subgrupos. .stas
son algunas de las variables #ue se mantienen en cada grupo-
)rupo system- :escripcin de la entidad, identi"icador, tiempo desde
arran#ue, nombre del administrador, localizacin "$sica, servicios o"recidos
)rupo inter"aces- (/mero de inter"aces del sistema
)rupo at- (/mero de inter"az, :ireccin "$sica, :ireccin @P
)rupo ip- +i el sistema hace "or'ard, valor del AAL, n/mero de datagramas
recibidos y enviados, errores, datagramas con protocolo no vlido, etc.
)rupo icmp- cuatro contadores generales- n/mero total de mensajes @!P de
entrada y salida con o sin errores y KK contadores para los di"erentes
mensajes @!P
)rupo tcp- ;lgoritmo de retransmisin, timeout en milisegundos, n/mero de
conexiones AP, n/mero de transiciones entre los di"erentes estados de AP,
n/mero de segmentos recibidos y enviados, n/mero de segmentos
retransmitidos, con error y con el "lag =+A activado.
)rupo udp- (/mero de datagramas enviados y recibidos, datagramas sin
proceso receptor
)rupo egp- (/mero de mensajes de encaminamiento recibidos con y sin
error, n/mero de mensajes generados en el sistema, estado del sistema.
unciona$iento del protocolo
omo sigue el paradigma gestor-agente la los comandos son para solicitar,
modi"icar o devolver in"ormacin de la !@5, as$ como env$ar noti"icaciones
0traps1. Las operaciones disponibles en +(!PvP son-
)et-re#uest - +olicitar el valor de una o varias variables
)et-next-re#uest - +olicitar el valor de la siguiente variable o grupo de
variables. +e utiliza para recorrer tablas, celda a celda.
+et-re#uest - :ar valor a una variable
)et-response - :evolver el valor de una o varias variables
Arap - .l agente noti"ica al gestor de alguna situacin especial sucede en el
elemento de red. =einicializacin, "allo y recuperacin en un enlace
Posteriormente, a partir de la versin K se introdujo la operacin de get-bul7-
re#uest, #ue permite realizar varios get-next seguidos sin tener #ue hacer
varias peticiones. Aambin se introdujo la operacin de in"orm, para #ue
distintos gestores puedan intercambiarse noti"icaciones.
#NMPv=
.jemplo de con"iguracin +(!PvD para un sistema t$pico Linux8*(@R8;@R8+olaris
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
:onde rocommunity es una comunidad de solo lectura, de nombre public y #ue
solo se le permita el acceso desde la ip PUK.PIM.P.S, el nombre de la
comunidad de"ine la di"icultad de adivinar su acceso, por eso es recomendable
#ue tenga un nombre similar a una contraseBa.
#NMPv:
on"iguramos un usuario #ue 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 !:T y :.+
.jemplo de con"iguracin +(!PvD para un sistema t$pico Linux8*(@R8;@R8+olaris
etc
rouser nagios auth
create9ser nagios 4FU RClaG3:fs8tF!R F*6
:ebemos reiniciar el servicio +(!P 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
%IP#
(6A;- .n :ebian deberemos editar el archivo "etc"default"snmpd, modi"icando
la siguiente linea
:e-
6&4+F%+86T>-2s) -2f /)ev/null -u snmp -. -smux -p /var/run/snmp).pi) !J.0.0.>
; -
6&4+F%+86T>-2s) -2f /)ev/null -u snmp -. -smux -p /var/run/snmp).pi)>
Para #ue el servicio se accesible por red.
; veces por causa de tener montados "ilesystems remotos (>+ o @>+, cuando
tenemos retrasos en la conexion con ellos se puede colgar el servicio +(!P,
para prevenir esto deberemos agregar la siguiente opcin en el archivo de
con"iguracin snmpd#conf.
s-ip&C6.n5ost:esources yes
Agregar variables a #NMP
Por ejemplo si #ueremos obtener desde +(!P la in"ormacin de un script
/usr/local/bin/var;s&
echo RholaR
echo RchauR
.n el snmpd.con" le agregamos la siguiente con"iguracin-
exec ..3.6..E..!0!.UUU /'in/sh /usr/local/'in/var.sh
+i corremos esta consulta sn$p"al8 (v = (c public local&ost ;
=;:;G;=;6;=;7H7=;>>> 6btendremos -
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
#NMPv= en Iindo"s
.n los e#uipos ?indo's se con"igurara una community =6 0read only1
denominada public, acceso para la ip #ue corresponda al servidor #ue tiene
acceso al +(!P, en este caso nuestro nagios.
Para ello nos situamos en el panel de control dentro de agregar programas en
la seccin de componentes.
*na vez dentro nos situamos dentro de 3erramientas de administracin y
supervisin o !anagement and !onitoring tools
:entro de ella nos situamos sobre la opcion +(!P y la tildamos
Luego en la ;dministracin de +ervicios, nos dirigiremos a las propiedades del
servicio +(!P
:entro de ella nos encontraremos con un cuadro de dialogo
on"iguraremos el accesso a la ip del servidor con acceso +(!P
9 luego la comunidad de aceso a los datos +(!P
Luego de realizados los cambios de con"iguracin procederemos a reiniciar el
servicio para #ue estos surtan e"ecto.
; veces en ?indo's es necesario con"igurar el servicio de >ire'all para
permitir las consultas por medio +(!P.
=e".- http-88support.microso"t.com87b8DKSKID8es
NRPE
N#ClientJJ
P/settings/external scripts/scriptsQ
chec-IpagefileTRC#\+rogram Ciles\&agios +lugin Collection\chec-Ipagefile.exeR
En el Monitoreo
Creando directivas
:ebemos crear algunas entradas de con"iguracin para especi"icar donde
encontramos los servicios, grupos, contactos etc, las mismas debemos
incluirlas en nuestro archivo de con"iguracin nagios.c"g
# 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
on la directiva c"gEdir el indicamos (agios #ue tome como con"iguracin los
archivos con extencion %c"g& encontrados en tal directorio.
Configuraci,n de alertas
Agregando +rupos de contacto
Para #ue el (agios env$e noti"icaciones sobre el estado de los servicios es
necesario de"inir grupos a los cuales envirselas, y dentro de ellos estarn los
miembros a cuales enviarlos
; continuacin podemos ver una con"iguracin t$pica 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?na$e
(ombre #ue se le asignara al grupo de contacto
alias
:escripcin corta para identi"icar al grupo
$e$bers
!iembros 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 noti"icaciones de (agios es necesario generar contactos #ue
estn incluidos en di"erentes grupos de contactos, una con"iguracin 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?na$e
(ombre literal a asignarle al contacto
alias
;lias descriptivo del contacto, ej ;dministrador de =outers
contactgroups
)rupos de contactos a los cuales pertenece
service?notification?period
Periodo de tiempo en el cual recibir noti"icaciones sobre el estado de los
servicios
&ost?notification?period
Periodo de tiempo en el cual recibir noti"icaciones sobre el estado de los hosts
service?notification?options
6pciones de cuando realizar una noti"icacin sobre el estado de un servicio
&ost?notification?options
6pciones de cuando realizar una noti"icacin sobre el estado de un host
service?notification?co$$ands
omando para realizar la noti"icacin del estado del servicio, podemos de"inir
m/ltiples comandos
&ost?notification?co$$ands
omando para realizar la noti"icacion del estado del host, podemos de"inir
m/ltiples comandos
e$ail
.mail perteneciente al contacto en el cual recibira las noti"icaciones por email.
Para #ue esto "uncione se debe tener correctamente con"igurado 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 for$ato !%M'
Podemos estilizar nuestras alertas por email de nagios con colores, s$mbolos eh
imgenes.
;#u$ adjunto dos scripts descargados de nagiosexchange #ue estn
modi"icados por mi -

Alertas por #M#
Podemos con"igurar alertas +!+ de "orma muy simple con el so"t'are )no7ii.
.jemplo de archivo de con"iguracin de )no7ii
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
!odo de uso -
ec&o K!ola $undoL M sudo gno8ii Nsends$s ==>>GGOOPQ
:e"inicin como comando de noti"icacin, 0podemos agregarlo como comando
extra al contacto, para #ue ademas del comando com/n de noti"icacin por
email tambien se ejecute este para el env$o de la alerta por sms1.
(otemos #ue lo ejecutamos por ssh, es para una situacin hipottica de #ue el
modem *+5 D) de nuestro proovedor de tele"on$a celular este enchu"ado en
otra ma#uina 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
Agregando Co$andos
.n (agios 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 per"ormance y en comandos de
che#ueo, los primeros son utilizados para algunos casos en particular.
Los comandos de che#ueo no traen datos de los e#uipos a monitorear, como
consumo de P*, !emoria, :isco, procesos corriendo, puertos abiertos etc, es
decir todos los datos necesarios de la monitoria.
Los comandos de per"ormance se utilizan cuando hay #ue guardar ciertos
datos o enviarlos a alg/n host externo etc, con in"ormacin de alg/n servicio.
*na entrada en un archivo de con"iguracin 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
co$$and?na$e
.l nombre #ue el comando tendra para nuestra con"iguracin personal de
(agios
co$$and?line
!odo del cual (agios ejecutara el comando en cuestin, con su ruta "$sica y
argumentos Lo #ue vemos en entre signos ^ son variables internas de nagios,
llamadas macros, las mas comunes son-
R3#ER=R - ontiene datos del path de ejecucin de los plugins de (agios
R!O#%A..RE##R - Aiene la @P de hosts desde el cual se esta corriendo el
servicio
RAR+=R RAR+7R RAR+:R RAR+6R - +on los n/meros en orden de
argumentos #ue recibe el comando a ejecutar
Podemos de"inir nuestros propios macros seteando variables en el archivo
resource.c"g
6e debern agregar al arc&ivo Hnagios*dirI"etc"commands#cfg las entradas
correspondientes anteriormente e(plicadas#
Agregando +rupos de #ervicios
Los grupos de servicio se utilizan para denotar un variedad de servicios sobre
otros, debemos tener asignado aun#ue sea un servicio a ese grupo por #ue si
no de lo contrario el (agios mostrara un error al arran#ue, para eso lo
asignamos en la propiedad servicegroups de un servicio en particular. .jemplo
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
+e deber crear el archivo _nagios-dir`8etc8servicegroup8
_nombregrupodeservicios.c"g` con las entradas correspondientes
anteriormente explicadas.
Agregando #ervicios
; continuacion se muestra una tipica entrada de con"iguracin 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
Aemplate de servicio a utilizar
&ost?na$e
(ombre del o los host a los cuales esta asignado dicho servicio
&ostgroup?na$e
(ombre 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
;lias descriptivo del nombre del servicio
contact?groups
)rupos de contacto a los #ue enviar las noti"icaciones
$a2?c&ec8?atte$pts
!axima cantidad de che#ueos a e"ectuar por (agios, antes de enviar un 6O
como resultado
nor$al?c&ec8?interval
@ntervalo de tiempo antes de programar un nuevo che#ueo del servicio
retry?c&ec8?interval
@ntervalo de tiempo antes de realizar un re-che#ueo del servicio
notification?interval
.sta directiva se utiliza para de"inir el n/mero de las %unidades del tiempo&
para esperar antes de re-noti"icar a un contacto #ue este servidor todav$a est
abajo o inalcanzable. ; menos #ue se haya cambiado la directiva
intervalElength del valor pre"ijado de IJ, este n/mero signi"icar minutos. +i
este valor se establece a J, (agios re-no noti"icar contactos sobre los
problemas para este host - solamente una noti"icacin del problema ser
enviada.
notification?period
Periodo de tiempo en el cualse envia noti"icacion y noti"icacion
notification?options
.sta directiva indica a (agios en #ue momentos debe enviar noti"icaciones de
estado
d H :6?( cuando el host esta caido
u H *(=.;3;5L. cuando el host no es visible o es inalcanzable
r H =.6<.=9 06O1 cuando el host se recupero
" H >L;PP@() cuando es de estado cambiante
n H (6(. no enviar noti"icaciones
c&ec8?co$$and
omando para e"ectuar el che#ueo 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
.n caso en los cuales el estado de un servicio dependa de la disponibilidad o el
estado de otro, se pueden de"inir dependencias. *na 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?na$e
(ombre del o los host dentro de los cuales se ejecuta el servicio dependiente
service?description
:escripcion del servicio dependiente, debe ser igual a la entrada #ue aparece
en la con"iguracion del servicio.
dependent?&ost?na$e
3ost donde se esta ejecutando el servicio del cual se depende
dependent?service?description
(ombre descriptivo #ue corresponde al servicio del cual se depende, debe ser
igual al de su con"iguracion de servicio
e2ecution?failure?criteria
riterios para de"inir el estado del servicio
notification?failure?criteria
.n base a #ue estado realizar las noti"icaciones, si esta caido, si esta o7 o no
realizar noti"icaciones
Infor$acion e2tendida de servicio
.n algunos casos podemos agregar un lin7 in"ormativo u externo haciendo
re"erencia al servicio en ejecution
)efine serviceextinfo0
hostIname linux!
serviceI)escription Carga )el sistema 2inux
notes Carga sistema
notesIurl http#//localhost/cargalinux.plXhostTlinux!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?na$e
3ost donde se ejecuta dicho servicio
service?description
(ombre descriptivo del servicio al cual corresponde la in"ormacion extra
notes
:escripcion sobre %#ue es& o %a #ue corresponde& la in"ormacin extra a
mostrar
notes?url
*rl donde encontrar la in"ormacion extra
icon?i$age
@cono a re"erenciar el lin7 de la in"ormacin extra
icon?i$age?alt
Aexto alternativo del icono
Agregando +rupos de !osts
Los host en nagios de puede agrupar mediante grupos y asi tener un listado
aparte #ue los di"erencia de los demas. por ejemplo tener por un lado los
servidores +;P con 6racle y por otro los servidores Lotus, o Linux y ?indo's
por separado etc.
*n 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?na$e
(ombre del grupo de hosts
alias
;lias descriptivo del grupo
$e$bers
3ost #ue son miembros del grupo, debemos ingresar el hostEname 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 !osts
Para con"igurar un host con o sin +(!P previamente instalado y con"igurado
como lo indicado anteriormente, para su posterior monitoreo. +e debe crear
una entrada en la con"iguracion de (agios.
*n tipico archivos hosts.c"g
)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
Aemplate de host a utilizar
&ost?na$e
(ombre del host
&ostgroup?na$e
)rupos a los #ue pertenece este host
address
:ireccion @P del host
parents
3ost del #ue depende y #ue esta delante suyo, por ejemplo puede ser un
router o un e#uipo #ue le brinde la conectividad etc, y en el mapa se dibujara
como dependiente de ese nodo
contact?groups
)rupos de contacto a los #ue enviar las noti"icaciones
$a2?c&ec8?atte$pts
!axima cantidad de che#ueos a e"ectuar por (agios, antes de enviar un 6O
como resultado
notification?interval
.sta directiva se utiliza para de"inir el n/mero de las %unidades del tiempo&
para esperar antes de re-noti"icar a un contacto #ue este servidor todav$a est
abajo o inalcanzable. ; menos #ue se haya cambiado la directiva
intervalElength del valor pre"ijado de IJ, este n/mero signi"icar minutos. +i
este valor se establece a J, (agios re-no noti"icar contactos sobre los
problemas para este host - solamente una noti"icacin del problema ser
enviada.
notification?period
Periodo de tiempo en el cualse envia noti"icacion y noti"icacion
notification?options
.sta directiva indica a (agios en #ue momentos debe enviar noti"icaciones de
estado
d H :6?( cuando el host esta caido
u H *(=.;3;5L. cuando el host no es visible o es inalcanzable
r H =.6<.=9 06O1 cuando el host se recupero
" H >L;PP@() cuando es de estado cambiante
n H (6(. no enviar noti"icaciones
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,
Infor$acion e2tendida de &ost
La in"ormacion extendida de host se utiliza para el loo7 and "eel de los host
dentro de los mapas de estado, ya sea tanto el K: como el D:
)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?na$e
(ombre del host al cual corresponde la in"ormacin dada
notes
Pe#ueBa nota descriptiva de la in"ormacion del host a presentar en los mapas
de estado
icon?i$age
@cono a visualizar en el entorno html de la consola (agios
icon?i$age?alt
Aexto alternativo para mostrar al logo
vr$l?i$age
@cono a visualizar en el mapa D:
status$ap?i$age
@cono a visualizar en el mapa K:
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 gdK 0necesario para la
generacion del gra"ico de statusmap K:1 debemos ejecutar el siguiente
comando-
pngtog)! mi-icono.png mi-icono.g)!
.l primer parametro es mi ya existente imagen png, el segundo parametro es
el nombre de archivo de salida en "ormato gdK, el parametro P se re"iere a #ue
la cree en "ormato ra' 0crudo1, y el segudo parametro es para #ue 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
.n casos donde hay host donde su estado depende del estado de otro host, es
posible especi"icar dependencias. ;#ui 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?na$e
(ombre del host al cual corresponde la in"ormacin dada
dependent?&ost?na$e
(ombre del host del cual depende
notification?failure?criteria
6pciones de noti"icacion 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 tie$pos de c&e0ueo
:entro de (agios se pueden establecer de"iniciones para controlar cuando
diversos aspectos de la lgica de vigilancia y alerta sobre elementos
monitoreador por ejemplo #ue tal servicio o host se che#uee en ciertos
intervalos de tiempo, por ejemplo si un host no debe ser che#ueado los
domingos o un servicio debe ser che#ueado solo de lunes a viernes de JM-JJ
3+ a PM-JJ 3+ etc
; su ves las de"iniciones Aimeperod pueden contener varios tipos de directivas,
entre los d$as de semana, d$as del mes, y las "echas. .l orden de precedencia
de los distintos tipos de directivas 0en orden descendente1 es el siguiente-
>echa del calendario 0KJJM-JP-JP1
!es espec$"ico "echa 0P de enero1
!es d$a genricos 0:$a PT1
ompensar los d$as de la semana de mes espec$"ico 0K a martes de
diciembre1
ompensar los d$as de la semana 0D a lunes1
(ormal del d$a de la semana 0martes1
.jemplos de las di"erentes directivas timeperiod #ue 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-)ays L .nclu)e =ee-)ays
exclu)e holi)ays L *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
Manejadores de Eventos ( Event !andler
uando hablamos de event &andler o $anejador de eventos, nos re"erimos
a "unciones #ue responden a eventos #ue se producen, como pueden ser un
cambio de estado.
Progra$ando plugins
:esarrollar plugins de che#ueos para (agios es extremadamente "lexible, ya
#ue no dependemos del lenguaje de programacin debido a #ue (agios toma
la salida resultante de su ejecucin.
:eberemos conocer bien lo #ue #ueremos che#uear y conocer los indicadores
#ue nos mostraran si deberemos expresarlos como un 6O, un ?;=(@() o un
=@A@;L.
Luego deberemos re"lejar esos estados en su cdigo de retorno o .xit status,
dependiendo del cdigo del mismo (agios entender #ue debe mostrar.
E2it status Estado de
#ervicio
Estado de !ost .escripcion
J 6O *P .l plugin es capaz
de veri"icar el
servicio y #ue
parece estar
"uncionando
correctamente
P ?;=(@() *P8:6?(8*(=.;
3;5L.
.l plugin es capaz
de veri"icar el
servicio, pero #ue
parec$a estar por
encima de un
umbral de
%advertencia& o
parece no estar
"uncionando
correctamente
K =@A@;L :6?(8*(=.;3;
5L.
.l plugin detecta
#ue o bien el
servicio no
"unciona o #ue
est por encima de
un umbral %cr$tico&
D *(O(6?( :6?(8*(=.;3;
5L.
;rgumentos de
l$nea de comandos
no vlida o "allas
internas del plugin
0por ejemplo error
en un soc7et o
dns1 #ue le
impiden realizar
las operaciones
especi"icadas
A4adir nuestro plugin
Para aBadir nuestro plugin a (agios
:eberemos copiar nuestro ejecutable 0ya sea script o binario1 al directorio
"usr"local"nagios"libe(ec con permisos de ejecucin.
rearle una entrada dentro del archivo de con"iguracin de omandos.
rear un +ervicio y asignarle ese comando para #ue se encargue de dicho
che#ueo.
Notas sobre el desarrollo de plugins
(o ejecutar comandos del sistema, sin especi"icar su ruta de acceso
completa.
*tilice spopen 01 si deben ser ejecutados comando externos en su plugin en
.
<er los principales ejemplos de plugin para ver cmo se hace esto.
(o haga archivos temporales a menos #ue sea absolutamente necesario.
+i se necesitan archivos temporales, aseg/rese de #ue el plugin y elimine
el archivo temporal, cuando "inalice.
(o se deje engaBar por enlaces simblicos
+i el plug-in abre todos los archivos, tomar medidas para asegurarse de
#ue no estn siguiendo un enlace simblico a otro lugar en el sistema.
<alidar todas las entradas
*sar rutinas en utils.c utils.pm o escribir ms seg/n sea necesario
Referencias sobre el desarrollo de plugins
http-88nagios.source"orge.net8docs8DEJ8pluginapi.html
http-88nagiosplug.source"orge.net8developer-guidelines.html
Eje$plo de desarrollo paso a paso
Plugin consultando #NMP
:ado el caso #ue #ueramos obtener in"ormacin interna de determinado 3ost
y necesitemos #ue este disponible para consultarla por +(!P, podemos incluir
dicha in"ormacion. Para ellos deberemos incluir di"erentes directivas de
con"iguracion en el archivo snmpd#conf, y haremos uso de la tabla externa del
objeto *:. 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/sn$p/sn$pd;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 +(!P a
!C%*6$M*M7M??e(t<able o #E#3#@#E#J#E#0A0E#F, obteniendo resultados similares
a -
sn$p"al8 (v : (l aut&NoPriv (a M.> (u consultorsn$p (A
consultorsn$p=7: =7O;H;H;= 3C.(#NMP(MI/FFe2t%ableV
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:.&$#
=amas +(!P -
*:-+(!P-!@5--ext(ames
.n esta rama obtendremos el nombre #ue le hemos asignado a dicho
comando
*:-+(!P-!@5--extommand
.sta rama nos devolvera la ruta completa al ejecutable del comando
*:-+(!P-!@5--ext=esult
(os devolvera el resultado de la ejecucion del comando "ue exitosa o no,
devolviendonos su e(it status
*:-+(!P-!@5--ext6utput
;#ui obtendremos la salida del comando con el string o expresion #ue
necesitemos conocer
Referencias sobre consultas #NMP a la tabla 3C.
http-88net-snmp.source"orge.net8docs8mibs8ucdavis.html
Eje$plo de consulta #NMP con Perl por $edio de NetFF#NMP
.jemplo simple de como consultar una variable +(!PvP.
#A/usr/local/'in/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
.jemplo simple de como consultar una variable +(!PvD, igualmente se pueden
consultar mas de una variable por sesion. .n este caso estamos consultado la
variable ext6utput.P para ver la salida del primer comando.
#A/usr/'in/perl
use &et##6&4+L
/oi) T R..3.6..E..!0!."..0.RL
/snmpv3Iusername T RconsultorsnmpRL # 6&4+v3 username
/snmpv3Ipass=or) T Rconsultorsnmp!3RL # 6&4+v3 pass=or)
/snmpv3Iauthprotocol T Rm)URL # 6&4+v3 hash algorithm ;m)U / sha<
/snmpv3Iprivpass=or) T RRL # 6&4+v3 hash algorithm ;m)U / sha<
/snmpv3Iprivprotocol T R)esRL # 6&4+v3 encryption protocol ;)es / aes /
aes!"<
/version T R3RL
/timeout T R!RL
/hostname T R!J.0.0.RL
# Crear la sesion 6&4+
;/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 My#5'
Podemos realizar plugins #ue dependan de la salida de otros plugins sin
necesidad de consultar o ejecutar nuevamente estos, uilizando los datos
contenidos en la base de datos !y+CL
Por ejemplo si #ueremos 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'@ectIi)
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.servicegroupIi)
.&&*: _%.& nagiosIservices %&

nagiosIservicegroupImem'ers.serviceIo'@ectIi)TnagiosIservices.serviceIo'@ectIi)
.&&*: _%.& nagiosIo'@ects as o'@ %&
nagiosIservicegroups.servicegroupIo'@ectIi)To'@.o'@ectIi)
.&&*: _%.& nagiosIo'@ects as 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
=esultando en una tabla como esta
display?na$e current?state
"ire'all J
apache P
servidor-s#l J
sap-db J
Para conocer el estado de un servicio, independientemente de los hosts en los
#ue se encuentre disponible
.n este caso el servicio !%%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+>
=esultando en una tabla como esta
&ost?na$e service?object?id service?descripti
on
current?state
concentradorEmpls PM 3AAP J
router-vpn KD 3AAP P
central KM 3AAP K
router-ST DD 3AAP J
onsulta 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
=esultando en una tabla como esta
states nu$ber
6O PLTS
?;=(@() PD
=@A@;L MS
*(O(6?( KJ
onsulta simple para obtener un conteo general de los estados generales
ordenados por meses de un aBo 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.state
=esultando en una tabla como esta
%EMP# E%A% 53AN%I%E
(ovember 6O PLTS
(ovember ?;=(@() PD
(ovember =@A@;L MS
(ovember *(O(6?( KJ
Arigger para guardar el /ltimo estado de los objetos
(agios no guarda en ninguna tabla de !y+CL el /ltimo estado de los objetos,
pero guarda los cambios de estado en la tabla nagiosEstatehistory. Para
mantener el /ltimo estado se puede usar un trigger-
create ta'le lastIstate ;o'@ectIi) int;<( state int;6<<L
create trigger lastIstate after insert on nagiosIstatehistory
for each ro=
'egin
if ne=.stateIchange T then
up)ate lastIstate set state T ne=.state =here o'@ectIi) ne=.o'@ectIi)L
en) ifL
en)L//
.se trigger hace un update as$ #ue hay #ue cronear esto para mantener al d$a
con los objetos la tabla.
insert into lastIstate
select o'@.o'@ectIi)( 0
from nagios.nagiosIo'@ects as o'@
=here o'@.o'@ectIi) not in
;select o'@ectIi) from lastIstate<L
Luego estas consultas podemos integrarlas en P3P o Perl, y obtener resultados
#ue necesitemos para re"lejarlos en un visor 'eb, o en los resultados de un
plugin.
NO%AF @mportante el modulo mys#l de P3P no soporta la consulta a los
P=6.:*=. de !y+CL, para ello deberemos utilizar el modulo mys#li de P3P,
otra cosa tambien importante es #ue mys#li soporta conecciones persistentes,
asi #ue para evitarse tiempo de implementacion a veces es necesario o
implementar un script en Perl, o hacer #ue el resultado del P=6.:*=. se
almacene en una tabla temporal y realizar una consulta simple desde ahi.
Correlaci,n de eventos
+i bien (agios provee de monitoreo en vivo para saber el estado de nuestros
servicios, a veces necesitamos un proceso para analizar los datos de eventos e
identi"icar patrones, #ue nos ayudaran a entender causas comunes y causas
iniciales, por medios de reglas para estados prede"inidos.
Para poder determinar estos casos deberemos implementar una 5itcora
centralizada de eventos del sistema 0+9+L6)1.
#iste$a de loggueo centrali-ado
+e tiene la necesidad de un sistema #ue reciba y almacenes archivos de
registros determinados de nV servidores. Cue se disponga de una inter"az 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.
#yslog es un estndar de "acto para el env$o de mensajes de registro en una
red in"ormtica @P. Por syslog se conoce tanto al protocolo de red como a la
aplicacin o biblioteca #ue env$a los mensajes de registro.
*n mensaje de registro suele tener in"ormacin sobre la seguridad del sistema,
aun#ue puede contener cual#uier in"ormacin. 4unto con cada mensaje se
incluye la "echa y hora del env$o.
.s /til registrar, por ejemplo-
*n intento de acceso con contraseBa e#uivocada
*n acceso correcto al sistema
;nomal$as- variaciones en el "uncionamiento normal del sistema
;lertas cuando ocurre alguna condicin especial
@n"ormacin sobre las actividades del sistema operativo
.rrores del hard'are o el so"t'are
Aambin es posible registrar el "uncionamiento normal de los programas, por
ejemplo, guardar cada acceso #ue se hace a un servidor 'eb, aun#ue esto
suele estar separado del resto de alertas.
.l protocolo syslog es muy sencillo- existe un ordenador servidor ejecutando el
servidor de syslog, conocido como syslogd 0demonio de syslog1. .l cliente
env$a un pe#ueBo mensaje de texto 0de menos de PJKS bytes1.
Los mensajes de syslog se suelen enviar v$a *:P, por el puerto TPS, en "ormato
de texto plano. ;lgunas implementaciones del servidor, como syslog-ng,
permiten usar AP en vez de *:P, y tambin o"recen +tunnel para #ue los
datos viajen ci"rados mediante ++L8AL+.
+eneralidades de un siste$a 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#
.l programa syslog, es una inter"ace #ue provee un "rame'or7 standard para
#ue tanto programas como el mismo sistema operativo puedan generar
mensajes #ue peuden ser almacenados localmente o ser enviados a un host
remoto. 6riginalmente escrito para *nix, se convirti en un standard #ue se
usa en muchos sistemas operativos y dispositivos de red.
) Cual es la utilidad de un siste$a de syslog centrali-ado *
.n un sistema de syslog centralizado, un server com/n recibe todos los
mensajes de syslog de todos los sistemas de la red. .sto incluye logs de los
servers *nix8linux8?indo's etc, "ire'alls, y dispositivos de red 0routers,
s'itches, etc1
3ay varias ventajas de un sistema de syslog centralizado
.l syslog puede ser conectado en un segmento de red di"erente protegido
por un "ire'all
para mantener ms segura la in"ormacin
Aeniendo los mensajes de todos los e#uipos, puede hacerse una correlacin
de ata#ues o
"allas en distintos puntos de una manera mucho ms sencilla. Por ejemplo si en
el syslog aparece un mensaje de desconexin de la inter"ace de red de varios
servers en el mismo momento, es lgico suponer una "alla en el s'itch donde
estos servers estan conectados.
*n usuario no deseado #ue haya ingresado en un server, no podr alterar los
mensajes #ue
se hayan almacenado en el server central.
+e pueden generar alertas usando sistemas de monitoreo de logs.
#iste$a de $onitoreo de logs
.l anlisis de logs es una herramienta muy importante para mantener el
control de servers y dispositivos de red.
+in embargo esta es una de las tareas #ue ms tiempo consume y por
consiguiente #ue menos se hace.
on la cantidad de mensajes in"ormativos #ue se generan en un sistema de
log, detectar en "orma manual los mensajes de problemas es muy di"icultoso y
con mucha probabilidad de error. .sto se v aumentado cuando se usa un
sistema de syslog centralizado, donde la in"ormacin proviene de varias
"uentes distintas. !uchas soluciones de monitoreo se basan en sumarizar la
in"ormacin de archivos de log de dias previos.
.sto es muy /til para la generacin de estad$sticas y anlisis posterior a una
"alla o intrusin, pero no tanto para la resolucin de problemas.
*n administrador no puede actuar en "orma proactiva, previamente a #ue el
error ocurra.
!uchas "allas o accesos no autorizados se ven precedidos por mensajes #ue de
haber sido detectados, podr$an haber permitido tomar acciones preventivas.
Por ejemplo, un acceso no autorizado via ssh, puede haber estado precedido
por una gran cantidad de intentos "allidos de acceso.
:isponer una solucin online de monitoreo, permite disponer de herramientas
#ue pueden ayudar a prevenir problemas graves antes #ue ocurran.
:etectar eventos en el momento #ue ocurren permite generar acciones en ese
mismo instante y no luego de las consecuencias.
+iguiendo con el ejemplo del acceso ssh, podr$a blo#uearse el acceso ssh
desde determinada direccin @P despues de un n/mero de intentos "allidos de
acceso.
*n concepto #ue aparece a#u$ es el de correlacin de eventos.
*n sistema automatizado de anlisis de logs #ue pueda hacer una correlacin
de varios eventos simpli"ica y acelera el monitoreo de eventos consolidando
alertas y mensajes de error en un mensaje ms corto y "cil de entender.
*na serie de operaciones estn relacionadas con la correlacin de eventos.
ompresin toma varias apariciones del mismo evento y se examina la
duplicacin de in"ormacin, se remueve las redundacias y se reporta como un
/nico evento. :e esta manera PJJJ mensajes %route "ailed& se convierte en un
/nico alerta #ue dice %route "ailed PJJJ times& =ecuento reporta un n/mero
espec$"ico de eventos similares como uno solo. .sto se di"erencia de la
compresin en #ue no solo cuenta en #ue sea el mismo evento, sino #ue se
supere un determinado umbral para generar un reporte.
+upresin asocia prioridades con alarmas y permite #ue el sistema suprima un
alarma de prioridad ms baja si ha ocurrido un evento de prioridad mayor.
)eneralizacin asocia alarmas con eventos de ms alto nivel #ue son los #ue
son reportados.
.sto puede ser /til para por ejemplo para correlacionar eventos de m/ltiples
discos de un array.
(o se necesita ver cada mensaje espec$"ico si se puede determinar #ue el
array completo tiene problemas.
orrelacin basada en tiempo puede ser /til estableciendo causalidad. ;
menudo una in"ormacin puede ser obtenida relacionando eventos #ue tienen
una relacin temporal espec$"ica.
Eje$plos genAricosF
.l .vento ; est seguido del .vento 5.
.ste es el primer .vento ; desde el .vento 5 reciente.
.l .vento ; sigue al .vento 5 dentro de los dos minutos.
.l .vento ; no "ue observado dentro del @ntervalo @.
Objetivos
+impli"icar y optimizar la administracin de di"erentes servicios para conocer
su estado minuto a minuto, y elaborar planes de accin. ; su vez el sistema
debe ser simple de utilizar por el administrador, y ser posible de ver via 'eb
los registros del sistema, realizar bus#uedas etc.
.s /til registrar, por ejemplo-
*n intento de acceso con contraseBa e#uivocada
*n acceso correcto al sistema
;nomal$as- variaciones en el "uncionamiento normal del sistema
;lertas cuando ocurre alguna condicin especial
@n"ormacin sobre las actividades del sistema operativo
.rrores del hard'are o el so"t'are
Aambin es posible registrar el "uncionamiento normal de los programas, por
ejemplo, guardar cada acceso #ue se hace a un servidor 'eb, aun#ue esto
suele estar separado del resto de alertas.
Puede logguear tanto por *:P como por AP, teniendo compatibilidad con el
viejo syslog, soportando a su vez muchas mas opciones y tareas #ue el syslog
comun.
#obre #yslog(N+
+yslog-() es un sistema para el env$o de mensajes de registro en una red.
.s /til registrar, por ejemplo-
*n intento de acceso con contraseBa e#uivocada
*n acceso correcto al sistema
;nomal$as- variaciones en el "uncionamiento normal del sistema
;lertas cuando ocurre alguna condicin especial
@n"ormacin sobre las actividades del sistema operativo
.rrores del hard'are o el so"t'are
Aambin es posible registrar el "uncionamiento normal de los programas, por
ejemplo, guardar cada acceso #ue se hace a un servidor 'eb, aun#ue esto
suele estar separado del resto de alertas.
Puede logguear tanto por *:P como por AP, teniendo compatibilidad con el
viejo syslog, soportando a su vez muchas mas opciones y tareas #ue el syslog
comun.
E2plicacion tecnica si$ple
+yslog-() se compone en capas de "uncionamiento
6sea tengo en primer lugar opciopnes generales, luego "uentes de donde
obtener datos de los registros, ya sean locales, externos por red 0udp, tcp,
archivos de texto1, y luego tenemos destinos y "iltros con"igurados, uniendolos
"orman los registros de sistema
%areas
+e instalo el so"t'are syslog-ng dentro de un servidor :ebian.
apt-get install syslog-ng
.n la instalacion como resultante se tiene el siguiente archivo de con"iguracion
principal
/etc/syslog(ng/syslog(ng;conf
Clientes
.n los clientes se procedi a con"igurar el syslog convencional para #ue
loggueara por *:P hacia el servidor syslog.
syslog(ng;conf
)estination syslogIserver 0
tcp; R0...!R port;UE< <L
1L
filter fIlocal6 0 facility;local6<L 1L
filter fIauth 0
facility;auth( authpriv<L
1L
log 0
source;src<L
filter;fIauth<L
)estination;syslogIserver<L
1L
log 0
source;src<L
filter;fIlocal6<L
)estination;syslogIserver<L
1L
syslog;conf
auth.*Lauthpriv.*Lauth.noticeLauth.errorLauth.infoLauthpriv.noneL @0...!
local6.* @0...!
/etc/profile;local
.sto es para logguear todos los comandos #ue ejecutan los
usuarios, "unciona aun#ue ejecuten un sudo o un su sin
perder el rastro del usuario original, siempre y cuando no
modi"i#uen 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 #ervidor
:ebian )(*8Linux .tch
;rchivo 8etc8syslog-ng8syslog-ng.con"
6pciones generales, "uentes de donde obtener in"ormacin, "iltros y destinos
paracada "iltro
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
P!P(#yslog(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#
*na vez instalado se con"iguro el apache para su puesta en marcha de la
siguiente manera 0se omitieron las directivas de autenticacion1.
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 Nagios
Eventdb
)5ue es Eventdb*
.vent:5 es una herramienta para "acilitar el tratamiento de los datos basados
en eventos de +yslog para herramientas de monitoreo como (agios o @cinga y
su integracin con los mismos se logra a travs de un plug-in de che#ueo.
uenta con varios plugins para di"erentes "uentes de datos. La inter"az 'eb
permite a los usuarios buscar, "iltrar y reconocer todos los eventos.
)C,$o funciona*
.l .vent:5 toma los eventos recibidos y los almacena en una base de datos
!y+CL. +e tomando los datos de syslog-ng desde un pe#ueBo demonio perl
0syslog-ngKmys#l.pl1. syslog-ngKmys#l.pl abre una unix-pipe por un lado desde
donde recibe los mensajes de syslog-ng, y utiliza :5@ en el otro para escribir
datos en !y+CL.
Referencias
%IPSs varios
#obre perfor$ance
ompilar (agios y (:6 con optimizaciones para nuestro procesador
http-88en.gentoo-'i7i.com8'i7i8+a"eE"lags
<er los tips de la documentacion o"icial
http-88nagios.source"orge.net8docs8DEJ8tuning.html
!odi"icar opciones de bu""er y cache de !y+CL
.stablecer los valores #ue necesitemos de timeouts de (agios
*bicar el archivo de estado de (agios, sus archivos temporales en el sistema
de archivos de memoria compartida
nagios.c"g - statusE"ileH8dev8shm8status.dat
nagios.c"g - tempE"ileH8dev8shm8nagios.tmp
nagios.c"g - tempEpathH8dev8shm
$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#
on"iguracin por de"ecto-
chil)IprocessesIfor-It=iceT
on"iguracin recomendada-
chil)IprocessesIfor-It=iceT0
lap .etection
>lap detection es un mecanismo mediante el cual (agios induce #ue un
servicio esta cambiando de estado continuamente sin entrar en un rgimen
permanente. .l procedimiento del #ue se vale "lap detection para detectar #ue
un servicio o host esta en ese estado 0%"lapping&1, es tomar los /ltimos KP
resultados de los chec7s y veri"icar cuantos cambios de estado hay en los
mismos. ;nalizando ms en detalle, dentro de KP resultados hay KJ posibles
cambios de estado. +uponiendo #ue dentro de estos KJ cambios de estado
posibles, hubo PJ cambios de estado reales, la relacin dar$a como resultado
PJ8KJHJ,TJ, es decir, TJZ. !ediante dos parmetros se con"iguran los
umbrales para #ue el mecanismo considere #ue el servicio o host se encuentra
en ese estado.
.s interesante entender #ue el concepto de %"lapping& se puede asignar por
servicio ya sea en el template utilizado o en la de"inicin de un servicio en
particular. @gualmente es conveniente dejar la con"iguracin general en su
estado original y solo alterar la con"iguracin particular del servicio #ue
presenta problemas de esta $ndole.
6tra consideracin importante es #ue se pueden #uitar estados a interpretarse
como cambio de estado, por ejemplo el estado %*(O(6?(& podr$a
considerarse como #ue no hubo cambio respecto del estado anterior. Para ello
hay #ue utilizar la directiva "lapEdetectionEoptions dentro de la con"iguracin
del servicio o host.
#obre los flags de co$pilacion
.jemplo para un Pentium :ual .KPIJ o un @ntel Cuad ore
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 (agios
C5%68TRi6"6-pc-linux-gnuR CC23$6TR-marchTprescott -%! -pipe -fomit-frame-
pointerR CKKC23$6TR/0CC23$61R ./configure
La misma con"iguracion es valida para compilar !y+CL 0ej T.P.DL1
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
N.O
uando la base de datos esta cargada con una gran cantidad de registros, el
(:6 comienza a tener un comportamiento erratico, y los datos re"lejados no
son los correctos, por lo tanto cada cierto tiempo hay #ue purgar algunas
tablas, ese tiempo sera dependiendo de la cantidad de objetos a monitorear.
Podemos crear un script #ue realize dicha tarea
#A/'in/'ash
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 crontab, por ejemplo si tenemos alrededor de mas
de IJJ hosts y alrededor de KJJJ servicios o mas, che#ueando ambos en
intervalos de ente P y T minutos, podemos establecer su ejecucion en PT
minutos.
0(U(30(EU * * * root /usr/local/nagios/s'in/truncarI)'.sh
@gualmente en las opciones de con"iguracion del daemon ndoKdb tenemos
opciones re"eridas a esto, aun#ue igualmente dependeremos del script a
realizar ya #ue el (:6 en si mismo puede "allar. La con"iguracion se re"iere 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
=eparar tabla de (:6 - .n caso de #ue una tabla se corrompa, deberemos
bajar el servicio (:6 para #ue nagios no siga escribiendo registros y ejecutar
la siguiente orden desde el shell.
mysBlchec- a-auto-repair nagios nagiosIservicechec-sL
Reto0ues al codigo fuente
Para #ue cuando elegimos exportar los in"ormes de disponibiliad en "ormato
+<, 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 modi"icar los encabezados 3AAP #ue imprime (agios 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
#cripts Btiles
; continuacion se detallan scripts #ue pueden ser de utilidad para el dia a dia
con (agios
<olcado 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
#A/usr/'in/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
=ecordemos #ue para instalar modulo de P;( deberemos ejecutar
# perl -4C+3& -e shell
cpanW install 4%F92%##&%4,:*
*@emplo para este caso
cpanW install &agios##6tatus2og
.jemplo de uso de (agios--=eport
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(
# 3ll recor)s
# su' 0 1(
# 3ll recor)s =hose 5%68I&34* starts =ith >3l'>
# su' 0 my ZC T @IL my /h T /C05%68I&34*1L /h
T[ /^3l'/ 1(
# :egretta'ly( this is I&%8I the same since
# @I can>t 'e use) as a hash.
# su' 0 /I05%68I&34*1 T[ /^3l'/ 1
# 3ll recor)s =ith an up time percent V H"Z
su' 0
my ZC T @IL
my /u T /C0+*:C*&8I8%832I8.4*I9+1L
/u T[ s/Z//L
/u W 0
1(
# 6ort or)er
Ycomp; alpha TW 0( ascen) TW 0( fiel)s TW P B=;8%832I8.4*IF%7&
8%832I8.4*I9&:*3C53,2*< Q<(
# 6orts )escen)ing 'y max of 8%832I8.4*IF%7& an) 8%832I8.4*I9&:*3C53,2*
# F.? sorters remem'er that /a an) /' ImustI 'e in
&agios##:eport pac-age.
# eg 'y 8%832IF%7&I8.4* )escen)ing.
# su' 0 my Zf T @I L
# pac-age &agios##:eportL
# /'-WP/f08%832I8.4*IF%7&1Q VTW /a-
WP/f08%832I8.4*IF%7&1Q
# 1(
# 6ame as
# Ycomp;alpha TW 0( ascen) TW 0( fiel)s TW
P>8%832I8.4*IF%7&>Q<
# 6ame 'ut har)er(
# su' 0 pac-age &agios##:eportL /'-WP6Q VTW /a-
WP6Q 1(
# %ptional call'ac- to a)) or mangle fiel)s.
# 3)) ! fiel)s for )o=ntime vals in hours minutes
an) secs.
su' 0
/C T shift @IL
/C-W0+*:C*&8I8%832I8.4*I9+1 T[ s/Z//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
<olcado de variables de entorno de (agios 0esto es /til cuando programamos
plugins #ue re#uiren variables de entorno y no sabemos como las tenemos #ue
ver o capturar1 -
#A/usr/'in/perl -=
my /oIhoststate T /*&G0&3$.%6I5%686838*1L
# &agios monitore) host chec- output )ata
my /oIhostoutput T /*&G0&3$.%6I5%68%98+981L
# &agios )ate =hen the event =as recor)e)
my /oI)atetime T /*&G0&3$.%6I2%&$F38*8.4*1L
# 8he recipients )efine) in /C%&83C8*43.2/
my /oItoIrecipients T /*&G0&3$.%6IC%&83C8*43.21L
use Fata##Fumper##ConciseL
print RVpreWRL
print Fumper;Z*&G<L
print RV/preWRL
.jemplo de m7Elivestatus
#A/usr/'in/python
#
# 6ample program for accessing the 2ivestatus 4o)ule
# from a python 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<
# 7rite comman) to soc-et
s.sen);R$*8 hosts\nR<
# .mportant# Close sen)ing )irection. 8hat =ay
# the other si)e -no=s( =e are finishe).
s.shut)o=n;soc-et.6598I7:<
# &o= rea) the ans=er
ans=er T s.recv;00000000<
# +arse the ans=er into a ta'le ;a list of lists<
ta'le T P line.split;>L>< for line in ans=er.split;>\n><P#-Q Q
print ta'le
Llamando al soc7et directamente desde P3P.
/)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 /returnvalL
1
fclose;/fp<L
if ;/returnval TT RPQ R<
/returnval T RRL
1
printIr;@sonI)eco)e;/returnval(true<<L
Llamando al soc7et indirectamente desde P3P utilizando uni(cat.
.jemplo de como obtener la lista de e#uipos y su estado desde php y
exportarlo a "ormato +<
/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
onvertir el timestamp de nagios.log a human readable
tail -f nagios.log S perl -pe >s/;\)O</localtime;/</e>
'5' ( %&e 'ivestatus 5uery 'anguage
.l lenguaje de consultas de Livestatus, basicamente consiste en consultas del
tipo ).A 0case sensitive1 con estos parmetros a los cuales consideraremos
como e#uivalente a tablas +CL -
hosts - your (agios hosts
services - your (agios services, joined 'ith all data "rom hosts
hostgroups - you (agios hostgroups
servicegroups - you (agios servicegroups
contactgroups - you (agios contact groups
servicesbygroup - ne' in P.P.D - all services grouped by service groups
servicesbyhostgroup - ne' in P.P.D - all services grouped by host groups
hostsbygroup - ne' in P.P.D - all hosts group by host groups
contacts - your (agios contacts
commands - your de"ined (agios commands
timeperiods - time period de"initions 0currently only name and alias1
do'ntimes - all scheduled host and service do'ntimes, joined 'ith data "rom
hosts and services.
comments - all host and service comments
log - a transparent access to the nagios log"iles 0include archived ones1ones
status - general per"ormance and status in"ormation. Ahis table contains
exactly one dataset.
columns - a complete list o" all tables and columns available via Livestatus,
including descriptionsb
<er co$o !u$an Readable el ti$esta$p del arc&ivo nagios;log
# cat /usr/local/nagios/var/nagios.log S perl -pe >s/;\)O</localtime;/</e>
NetMy#'A
net!y+L; es una variedad de procedimientos almacenados de !y+CL. +e cre
un procedimiento para calcular un /nico valor de disponibilidad de servicio. .l
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 d$a y consulta la tabla de resultados para
obtener sus datos.
https-88'''.nagios"orge.org8g"8project8netmysla8
.jemplo de consulta con net!y+L;
'ista de argu$entos
P. 3ostname varchar 0objects1
K. +ervicename varchar 0objects1 can be null
D. onsider :o'ntime boolean
S. onsider ;c7no'ledge boolean
T. onsider *n7no'n boolean
I. onsider ?arning boolean
L. Ahe initial state boolean 0true H up, "alse H do'n1
M. +tartdate datetime
U. +topdate datetime
PJ. :ebug"lag boolean 0:isplay some 'or7"lo' output1
PP. #uiet 0(o resultset, only inserts the values into a table npEsla1
call npIchec-3vaila'ility;>srv-=e'>( >588+>( true( true( true( true( null(
>!00"-0- 00#00#00>( >!00H-0J-0 00#00#00>( false( false<L
sla?id &ost?obje
ct?id
&ost?na$
e
service?o
bject?id
service?n
a$e
outage?p
ercent
availabili
ty?percen
t
P PKK srv-'ebP PLIP 3AAP J.JKKLSLI UU.ULLK
.jemplo de como llamar al procedimiento desde P3PT, para por ejemplo
conocer el +L; de 2 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 ne= +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
:evolviendonos 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
<
Aambien podemos utilizar el script np'aggregate#s& para ejecutarlo por medio
de cron y tener autogenerados los in"ormes, por cada hosts y cada servicios,
organizados diaria, semanal, mensual y anualmente.
.ocu$entacion al vuelo
Para tener una documentacion actualizada de los e#uipos y sus servicios, lo
ideal es implementar un 'i7i.
:o7u?i7i es un so"t'are para gestin de 'ebs colaborativas de tipo 'i7i,
escrito en lenguaje P3P y distribuido en cdigon abierto bajo la licencia )PL.
.st en"ocado para ser usado por grupos de desarrolladores, grupos de trabajo
en general y pe#ueBas compaB$as.
+u sintaxis es similar a la de !edia?i7i, aun#ue a di"erencia de este so"t'are,
la in"ormacin se almacena en archivos de texto planos, por lo #ue no re#uiere
el uso de una base de datos.
Caracter@sticasF
)estin de espacios de contenidos #ue permite un almacenamiento
ordenado de los documentos.
+oporte para imgenes y otros contenidos multimedia.
cndices automatizados de contenidos.
ontrol de versiones.
orrector ortogr"ico opcional.
@nter"az traducido a m/ltiples idiomas, incluyendo el castellano.
Posibilidad de utilizar plantillas de diseBo.
:isponibilidad de complementos 0plugins1 para extender la "uncionalidad.
ontrol de blo#ueos para solucionar problemas de concurrencia.
)estin de usuarios.
5/s#ueda de texto completo.
Para integrarlo con (agios podemos implementar un script en P3P como este -
VXphp
/**
* 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
on lo cual deberemos agregar algunas directivas a la con"iguracin de (agios.
.jemplo de un serviceextin"o, aun#ue 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
:esde :o7u'i7i haciendo uso de la extension P3P, podemos embeber los datos
actuales de los objetos de (agios, gracias a !O Live +tatus
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.cgiXtypeTYhostTR.
/hostP>0>Q.R>WVfont colorT>#00"000>W3::.,3V/fontWV/aWRL
if;/hostP>3>QTT< print RVa hrefT>/nagios/cgi-'in/extinfo.cgiXtypeTYhostTR.
/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.cgiXtypeTYhostTR.
/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
Aambien desde do7u'i7i por ejemplo si necesitamos podemos consultar
comandos por ++3 para mostrar su salida en la documentacin de nuestro
e#uipo, 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 R+u'lic Ney 3uthentication 6uccessful\nRL
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 )ata from comman)
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
A/usr/'in/perl
use strictL
use =arningsL
su' 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/.)'f/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/\.\///gL
/filename T[ s/\.\.//gL
print RVtrWVt)W/filenameV/t)WVt)WR( scalar localtime;/files0/-ey1<(
RV/t)WV/trW\nRL
1
print RV/ta'leWRL
c&ec8?$ultiaddr
; menudo sucede #ue tenemos hosts a monitorear con multiples ip
disponibles, y dado el caso por ejemplo #ue necesitemos che#uear por
cual#uiera de las dos @P para consultar disponibilidad, y #ue nuestro plugin
intente por una o por otra con un timeout de"inido, para eso ya existe la
solucion c&ec1'multiaddr, con la cual no necesitamos realizar ninguna
modi"icacion a el cdigo existente de nuestros plugins, por ejemplo en la
direccion ip del host a monitorear puede ir
EK0#E@F#A#E,EK0#E@F#A#EE,EK0#E@F#A#0E. Luego en la entrada de nuestro
comando de che#ueo realizamos modi"icaciones para #ue #uede 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
on 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.
;djunto - chec7Emultiaddr y una version alternativa basada en el mismo cdigo
apac&e
"etc"apac&e0"conf#d"security
iertos parametros son /tiles para evitar cierta exposicin de nuestro ;pache.
6erver8o-ens +ro)
6erver6ignature %ff
8race*na'le %ff
c&ec8?sap
Para #ue "uncionen correctamente algunas cosas de los plugins de (agios
!+, hay #ue realizar algunas minimas modi"icaciones por ejemplo en - .n el
plugin %(agios +;P !+& hay #ue modi"icar algunas lineas de los archivos
agntEmon.h y sapEmoniEccm.h ya #ue en estos se establece el path de acceso
a los archivos de con"iguracin #ue por de"ecto los busca en 8etc8sapmon, pero
nuestro objetivo es #ue los bus#ue en 8usr8local8nagios8etc8sapmon, de una
cierta manera #uede mas centralizao u ordenado. Para mas in"ormacin sobre
+;P pueden ver el apartado aprendiendo +;P.
agnt?$on;&
#)efine 3$*&8I.&.IC.2* b/usr/local/nagios/etc/sapmon/agent.cfgc
#)efine 3$*&8I2%$.&IC.2* b/usr/local/nagios/etc/sapmon/login.cfgc
#)efine 3$I*`IC.2* b/usr/local/nagios/etc/sapmon/moniItr.cfgc
sap?$oni?cc$;&
#)efine 3$*&8I.&.IC.2* b/usr/local/nagios/etc/sapmon/agent.cfgc
#)efine 3$*&8I2%$.&IC.2* b/usr/local/nagios/etc/sapmon/login.cfgc
;rchivo "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
;rchivo "usr"local"nagios"etc"sapmon"agent#cfg de ejemplo -
.E#CRIP%ION H [:escription o" the AemplateG ;rbitrary description "ield
MONI?#E%?NAME H [!onitor collectionG !onitor collection in =QKJ
MONI?NAME H [!onitor nameG (ame o" the speci"ic monitor
MAT?%REE?.EP%! H [numberG !onitor loading depth
PA%%ERN?H H [+;P+@:Gd[ontextGd[!onitor objectGd[!onitor attributG
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
+i #ueremos agregar en !+ el monitoreo de R jobs debemos seguir esta guia
http-88help.sap.com8saphelpEn'JS8helpdata8en8Pc8SMMJDdSMdeJIPJePJJJJJJJ
aPPSJMS8content.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
.jemplo de como podemos de"inir el comando en (agios -
)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 che#ueo en +;P nos arroja pipes M, para #ue no
tengamos problemas con un "also per"data, podemos apelar a este script -
c&ec8?sap?np;s&
#A/'in/'ash
C4FTM/usr/local/nagios/li'exec/ccms/chec-Isap / /!M
*K.8T/X
echo /C4F S /'in/se) -e >s/S/-/g>
exit /*K.8
Para poder hacer correctamente el che#ueo deberemos de"ini la variable
R?!O#%#API.R dentro de la con"iguracin del host -
I63+.F +:F
Interfa- ad$inistrativa
;nteriormente se vio de manera detallada las directivas de con"iguracion
necesarias para el "uncionamiento de un servicio (agios, igualmente esta
con"iguracion se puede establecer por medio de una inter"az 'eb, la misma es
(agiosCL, es una aplicacion desarrollada en P3P.
Para "uncionar dentros de nuestro actual servidor (agios-
P.;= !odule- 3A!LEAemplateE@A P.P o superior
P3P .xtension- gettext
P3P .xtension- mys#l
P3P .xtension- "tp
4avascript en el navegador
Para instalar por ejemplo el soporte 3A!LEAemplateE@A, deberemos ejecutar-
pear install 5842I8emplateI.8
6 si nos encontramos en una distribucion derivada de :ebian
apt-get install php-html-template-it
;demas si #ueremos soporte de idiomas deberemos asegurarmos #ue los
locales de nuestro sistema tengan generado su enconding, ej. esE.+.ut"M. Para
ver los enconding disponibles deberemos ejecutar %locale -a&.
+i realizamos la instalacion en un hosts con 3AAP+, deberemos modi"icar el
campo nagios)l#tbl'settings, de &ttp a &ttps.
:eberemos instalar (agiosCL donde residen los archivos 3A!L de (agios,
usualmente en "usr"local"nagios"s&are. (uestra con"iguracion actual de (agios
debera ser importada dentro de (agiosCL, para asi poder administrarla. ;l
realizar la importacion nos #uedara 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 #ue se realiza (agios+CL hace una copia de seguridad de
dicha con"iguracion.
Para comenzar con la instalacion deberemos crear un archivo dentro del
directorio de nagiosCL touc& nagios)l3"install"C$5M:C'7$6<5::C;. ;hora
podremos comnezar la instalacion via 'eb, una vez "inalizada la instalacion
deberemos eliminar el archivo creado rm *f
nagios)l3"install"C$5M:C'7$6<5::C;
Introduccion de uso de Nagios5'
;l ingresar a la ubicacion de (agiosCL nos aparecera una pantalla de login, en
la cual deberemos indenti"icarnos con el usuario #ue creamos al momento de
la instalacion.
*na vez ingresados al sistema, nos aparecera un menu con enlaces de uso a la
iz#uierda, con di"erentes secciones
:entro de la seccion supervision tendremos un resumen con el conteo de
elementos
#ub#ecci,n !ostsF %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#
#ub#ecci,n #erviciosF %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#
#ub#ecci,n +rupos de !ostsF %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#
#ub#ecci,n +rupo de #erviciosF %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#
#ub#ecci,n Plantillas de !ostsF %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#
#ub#ecci,n Plantillas de #erviciosF %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#
#ub#ecci,n !osts
;l 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 con"iguracin se
encuentra actualizada con respecto a la presente en el archivo de
con"iguracin.
3acia su derecha podremos observar di"erentes botones -
.e i-0uierda a derec&a
.l primer botn es para acceder a la in"ormacin de con"iguracin del host,
con la correspondiente posibilidad de su posterior modi"icacin.
.l segundo botn es para copiar y as$ duplicar la con"iguracin de dicho host,
en caso de #ue tengamos un e#uipo con similares caracter$sticas al realizar
esto se nos har mucho ms "cil su implementacin.
.l tercer botn es para generar la escritura en la con"iguracin de (agios
para dicho host en caso de #ue hayamos cambiado algo.
.l cuarto botn es para descargados el archivo con la con"iguracin individual
de dicho e#uipo.
.l #uinto y /ltimo botn es para mostrarnos in"ormacin de las relaciones de
con"iguracin de dicho e#uipo, si es posible borralo y no a"ectar otras
con"iguraciones mostrndonos un resumen como el siguiente-
=e"irindonos 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 #ue necesitamos
monitorear.
;l 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 #ue necesitamos monitorear.
; su vez deberemos utilizar una plantilla, en este caso la de generic-host o
podemos utilizar otra con opciones y ajustes prede"inidos para el tipo de
monitoreo a utilizar para esta clase de host 0intervalos de che#ueo,
noti"icaciones, alarmas, dependencias, grupo de hosts1.
omo datos "undamentales tenemos-
No$bre del !ostF 5)u definiremos el nombre real o de configuracin para
nosotros, sin espacios, comas, guiones L otros caracteres )ue no
correspondan#
.escripci,nF Mnimo dato descriptivo de )ue funcin cumple el &osts, ejemplo
NsmonAAA0l( 2 6ervidor de monitoreoN
.irecci,nF %ireccin 7 del e)uipo
omo datos adicionales tenemos-
PadresF 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 !ostsF 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#
Co$ando de co$probaci,nF 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#
ActivoF odemos activar o desactivar de la configuracin el e)uipo#
RAR+=R ( RAR+QRF :ista de argumentos ordenados uno a uno para pasarle al
comando de comprobacin de dic&o &ost#
PlantillasF 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 co$probaci,n del !ost
;#ui podemos ver las opciones generales del hosts, intervalos de che#ueo,
reintentos, periodo de che#ueos etc. :onde dice XsaltarY es por #ue se deja esa
opcin a la determinada globalmente por la plantilla.
Estado inicialF or defecto $agios al iniciar asume )ue el &ost esta activo,
pero esto no necesariamente puede ser as, entonces podemos definirlo como?
6 H *P
: H :6?(
* H *(=.;3;5L.
M2i$os intentos de co$probaci,nF M(ima cantidad de intentos de
comprobacin antes de definir el estado final del &ost#
Intervalo de reintentoF 7ntervalo de reintento entre cada intento de
comprobacin#
Intervalo de co$probaci,nF 7ntervalo entre cada comprobacin, incluidos
sus reintentos#
Co$probaci,n ActivaF 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#
Co$probaci,n pasivaF Cs un c&e)ueo ejecutado por aplicaciones e(ternas y
su resultado devuelto a $agios para su procesamiento#
Periodo de co$probacionesF 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#
3$bral de refrescoF 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#
Refresco de co$probaci,nF 5ctivar el refresco de c&e)ueos#
Concentraci,n en el e0uipoF !tilizar un comando luego de ejecutado el
gestor de eventos#
+estor de eventosF Comando a ejecutarse luego de obtenidos los resultados
del c&e)ueo del &ost#
+esto de eventos activadoF 5)u definiremos si utilizaremos o no un gestor
de eventos luego de los c&e)ueos#
3$bral bajo de oscilaci,nF 5)u definimos el umbral mnimo para considerar
una deteccin correcta del flapping de estado =cambios de estados muy
repentinos>
3$bral alto de oscilaci,nF 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 activadaF 5ctivar o desactivar la deteccin de
oscilacin para el &ost#
Opciones de detecci,n de estabilidadF 5)u definimos )ue estado
consideramos para establecer el flapping de un &ost#
Mantener infor$aci,n de estadoF Cn caso de )ue reinicie $agios, mantener
la Lltima informacin de estadstica obtenida del c&e)ueo del &ost
Mantener el resto de la infor$aci,nF Mantener otra informacin Ltil sobre
el &ost entre los reinicios de $agios#
.atos sobre el rendi$iento de los procesosF 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 alar$as del &ost
%esde este apartado podremos estableces las opciones de cmo llegaran las
notificaciones del estado del &ost a personal encargado de recibirlas#
Plugins
Plugins +(!P, caracteristicas generales
#cript detail
page
.escription perfor$ance #upported
platfor$s
chec7EsnmpEstora
ge
chec7s storages
0dis7s,s'ap,
memory, etc\1
9es ;ll !@5K compliant
chec7EsnmpEint chec7s inter"ace
states, usage on
hosts, s'itch,
routers, etc
9es ;ll !@5K compliant
chec7EsnmpEproce
ss
chec7s i" process
are running, the
number that are
running, memory
and cpu used.
(o ;ll !@5K compliant
chec7EsnmpEload chec7s the load or
the cpu o" a
machine
9es Linux, ?indo's,
isco, ;+SJJ, 3P
Procurve,
Lin7Proo", 5lucoat,
(o7ia,>ortinet,
(etscreen,3P*R.
chec7EsnmpEvrrp chec7s the (o (o7ia @P 0<==P e
inter"ace state o"
vrrp cluster
lustering1,
Lin7Proo", ;lteon
chec7EsnmpEcp"' chec7s hec7point
>ire'allP status
9es hec7point
>ire'all
chec7EsnmpEmem hec7s memory
and s'ap usage
9es Linux8(etsnmp,
isco, 3P +'itch
chec7EsnmpE'in hec7s 'indo's
services
(o ?indo's
chec7EsnmpEcss hec7s css
services state
(o ++
chec7EsnmpEenv hec7s
environemental
status 0"an, temp,
po'er supply1.
(o isco, (o7ia,
5luecoat, @ronPort,
>oundry
chec7EsnmpEnsbox hec7s nsbox
vhost e diode
status.
(o (et+ecure6ne
(etbox
chec7EsnmpEboost
edge
hec7s 5oostedge
services
(o 5oostedge
chec7EsnmpElin7pr
oo"Enhr
hec7s lin7proo"
(3=
(o =ad'are Lin7proo"
Co$andos default en Nagios
.l sistema (agios incorpora un gran n/mero de comandos por de"ault #ue se
pueden utilizar. ;lgunos de ellos hacen uso de librer$as y pa#uetes #ue deben
estar instalados en el sistema. .n las siguientes l$neas se comentan cuales son
los comandos #ue vienen por de"ault y #ue hacen.
c&ec8?by?ss&
.ste comando es muy interesante interesante. Permite ejecutar comandos en
ordenadores remotos v$a ++3 0de "orma segura, por tanto1. .l resultado de ese
comando ser tomado por (agios.
*so - chec7EbyEssh -3 [hostG - [commandG f-"#vg f-Ph-Kg f-Sh-Ig
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
6pciones- -h, ihelp
.mprimir ayu)a )etalla)a
-<, iversion
.mprimir informacion )e version
-3, ihostnameH;::=.++
5ostname( )ireccion .+( or soc-et unix ;path completo en este caso<
-p, iportH@(A.).=
+uerto a cheBuear
-S, iuse-ipvS
9sar .+vE
-I, iuse-ipvI
9sar .+v6
-P, iprotoP
9sar protocolo )e 665 PoptionalQ
-K, iprotoK
9sar protocolo ! )e 665 PoptionalQ
-+, is7ip-stdoutfHng
.gnora to)as o las primeras n lineas )e 68F%98 PoptionalQ
-., is7ip-stderrfHng
.gnora to)as o las primeras n lineas )e 68F*:: PoptionalQ
-"
Fecirle al 665 Bue realize un for- en vez )e una tty PoptionalQ. 6iempre
)evolver %N si ssh es e@ecuta)o
-, icommandHW6!!;(: +A=@()W
Coman)o a e@ecutar en la maBuina remota
-l, ilognameH*+.=(;!.
&om're )e usuario 665 PoptionalQ
-i, iidentityHO.9>@L.
2lave 665 autoriza)a PoptionalQ
-6, ioutputH>@L.
archivo )e coman)o externo )e &agios PoptionalQ
-s, iservicesHL@+A
lista )e nom'res )e servicios &agios separa)os por >#> PoptionalQ
-n, inameH(;!.
nom're corto )el host en la configuracion )e &agios PoptionalQ
-o, issh-optionH6PA@6(
llamar ssh con la opcion >-o> ;pue)e ser usa)a multiples veces< PoptionalQ
-#, i#uiet
8ell ssh to suppress =arning an) )iagnostic messages PoptionalQ
-', i'arningH:6*5L.
:esponse time to result in =arning status ;secon)s<
-c, icriticalH:6*5L.
:esponse time to result in critical status ;secon)s<
-t, itimeoutH@(A.).=
6econ)s 'efore connection times out ;)efault# 0<
-v, iverbose
4ostrar )etalles )e la linea )e coman)os para )e'ug ;&agios truncara la
sali)a<
La "orma mas comun de uso, es por medio de una llave ssh con el argumento W-
iW. :e este modo el par de llaves deben tener una contraseBa nula y la llave
publica debe estar listada en el archivo authorizedE7eys del host remoto.
*sualmente la llave debe estar restringida para correr solo un comando en el
servidor remoto. +i el script remoto permite la adicion de argumentos, puede
actuar como una agente al estilo proxy para ejecutar otros comandos remotos.
.jemplo de como con"igurarlo como co$ando
)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
.jemplo de como con"igurarlo 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
.jemplo 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&ec8?dig
.ste comando sirve para comprobar el "uncionamiento del servicio de :(+ en
un e#uipo remoto. *tiliza dig para esto.
*sage-chec7Edig -l [#ueryEaddressG f-3 [hostGg f-p [server portGg f-A
[#uery typeGg f-' ['arning intervalGg f-c [critical intervalGg f-t [timeoutGg
f-a [expected ans'er addressGg f-vg
.jemplos- .sto enviara una consulta AP al servidor :(+ consultando por el
nombre '''.example.com
chec-I)ig -5 F&66*:G*: -l ===.example.com -3 ROtcpR
:e"inir como comando-
)efine comman)0
comman)Iname chec-I)ig
comman)Iline /96*://chec-I)ig -5 >/5%683FF:*66/> -l >/3:$/>
1
:e"inir como servicio-
)efine service0
use generic-service
hostIname nom'reIhost
serviceI)escription )ig
chec-Icomman) chec-I)igA===.google.com
1
c&ec8?dis8
.ste comando sirve para comprobar el espacio libre de un volumen montado
en el sistema de "icheros donde se est ejecutando (agios. Permite especi"icar
dos umbrales y generar disparadores advertencias cuando se supera el menor,
y errores cr$ticos cuando se supera el segundo.
*sage- chec7Edis7 -' limit -c limit f-? limitg f-O limitg _-p path h -x device` f-g
f-.g f-eg f-g group g f-7g f-lg f-!g f-mg f-= path g f-r path g f-t timeoutg f-u unitg f-
vg f-R typeg
.jemplos- chec7Edis7 -' PJZ -c TZ -p 8tmp -p 8var - -' PJJJJJ -c TJJJJ -p 8
Chec-s /tmp an) /var at 0Z an) UZ( an) / at 004, an) U04,
chec7Edis7 -' PJJ! -c TJ! - -' PJJJ! -c TJJ! -g sid:;A; -r
Wj8oracle8+@:8data.V^W
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
chec7Edis7 -' PJJ! -c TJ! - -' PJJJ! -c TJJ! -p 8"oo - -' TZ -c DZ -p 8bar
Chec-s /foo for 0004/U004 an) /'ar for U/3Z. 3ll remaining volumes use
004/U04
:e"inir como comando-
)efine comman)0
comman)Iname chec-IallI)is-s
comman)Iline /96*://chec-I)is- -= >/3:$/> -c >/3:$!/>
1
:e"inir como servicio
)efine service0
use generic-service
hostIname nom'reIhost
serviceI)escription Fis- 6pace
chec-Icomman) chec-IallI)is-sA!0ZA0Z
1
c&ec8?dis8?s$b
Plani"icacin, especi"icacin, diseBo y evaluacin de redes .ste comando
"unciona exactamente igual #ue chec7Edis7 pero realiza la comprobacin
utilizando samba para realizar la comprobacin de vol/menes compartidos en
#uipos remotos, en redes ?indo's.
Perl hec7 +!5 :is7 plugin "or (agios
*sage- chec7Edis7Esmb -3 [hostG -s [shareG -u [userG -p [pass'ordG
P. ' ['arnG -c [critG f-? ['or7groupGg f-P [portGg
-3, ihostnameH36+A
&om're &et,.%6 )el servi)or
-s, ishareH+A=@()
:ecurso comparti)o a testear
-?, i'or7groupH+A=@()
$rupo )e tra'a@o o )ominio usa)o ;Fefault R7%:N$:%9+R<
-u, iuserH+A=@()
9suario a loguearse en el servi)or. ;Fefaults RguestR<
-p, ipass'ordH+A=@()
Contraseda para loguearse en el servi)or. ;Fefaults &922<
-', i'arningH@(A.).= or @(A.).=f7!)g
+ercent of use) space at =hich a =arning =ill 'e generate) ;Fefault# "UZ<
-c, icriticalH@(A.).= or @(A.).=f7!)g
+ercent of use) space at =hich a critical =ill 'e generate) ;Fefaults# HUZ<
-P, iportH@(A.).=
+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&ec8?dns
.ste comando permite hacer una consulta :(+ para averiguar la direccin @P
de un e#uipo dado el nombre o viceversa. *tiliza nsloo7up para ello, permite
especi"icar el servidor :(+ a usar o si no usa el o los especi"icados en
8etc8resolv.con".
*sage-chec7Edns -3 host f-s serverg f-a expected-addressg f-;g f-t timeoutg f-'
'arng f-c critg
c&ec8?du$$y
.ste comando permite realizar una consulta a un dispositivo "icticio 0devuelve
el mismo parmetro #ue se le pasa1. Puede ser utilizado para comprobaciones
y depuraciones.
*sage- chec7Edummy [estado numericoG foptional textg
c&ec8?fle2l$
.ste comando comprueba el "uncionamiento de un sistema >lexL!. .ste
sistema es un servidor de licencias en red usado para obtener permisos de uso
de so"t'are en red. :evuelve distintos errores dependiendo del estado de
estos servidores de licencias.
c&ec8?ftp
.ste comando realiza comprobaciones de conexin a un servidor >AP remoto.
Permite conocer el estado de este servicio.
Ahis plugin tests >AP connections 'ith the speci"ied host 0or unix soc7et1.
*sage-chec7E"tp -3 host -p port f-' ['arning timeGg f-c [critical timeGg f-s
[send stringGg f-e [expect stringGg f-# [#uit stringGgf-m [maximum bytesGg
f-d [delayGg f-t [timeout secondsGg f-r [re"use stateGg f-! [mismatch
stateGg f-vg f-Sh-Ig f-jg f-: [days to cert expiryGg f-+ [use ++LGg f-.g
c&ec8?&ttp
.ste comando comprueba servicios 3AAP y 3AAP+ en e#uipos remotos. Permite
adems realizar el seguimiento de redirecciones, tiempos de conexin, la
expiracin de los certi"icados para ++L, etctera. .s especialmente /til para
servidores 'eb #ue sirvan de base para aplicaciones de comercio electrnico.
*sage- chec7Ehttp -3 [vhostG h -@ [@P-addressG f-u [uriGg f-p [portGg
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
.jemplos- 3.O 6(A.(A- chec7Ehttp -' T -c PJ issl -3 '''.verisign.com
?hen the W'''.verisign.comW server returns its content 'ithin T seconds, a
+A;A.E6O 'ill be returned. ?hen the server returns its content but exceeds
the T-second threshold, a +A;A.E?;=(@() 'ill be returned. ?hen an error
occurs, a +A;A.E=@A@;L 'ill be returned.
3.O .=A@>@;A.- chec7Ehttp -3 '''.verisign.com - PS
?hen the certi"icate o" W'''.verisign.comW is valid "or more than PS days, a
+A;A.E6O is returned. ?hen the certi"icate is still valid, but "or less than PS
days, a +A;A.E?;=(@() is returned. ; +A;A.E=@A@;L 'ill be returned 'hen
the certi"icate is expired.
.jemplo desde un script
#A/'in/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&ec8?ifoperstatus
.ste comando comprueba el estado de operacin de inter"aces de red remotas
por medio de +(!P vP o +(!P vD.
c&ec8?ifstatus
.ste comando comprueba el estado general de inter"aces de red remotas por
medio de +(!P vP o +(!P vD.
c&ec8?i$ap
.ste comando realiza conexiones contra un servidor @!;P para comprobar su
estado de "uncionamiento. Permite generar advertencias y errores cr$ticos.
:e"inir como comando -
)efine comman)0
comman)Iname chec-Iimap
comman)Iline /96*://chec-Iimap -5 >/5%683FF:*66/>
1
he#uear @!;P con ++L
)efine comman) 0
comman)Iname chec-Isimap
comman)Iline /96*:A//plugins/chec-Iimap -p HH3 -5 >/5%683FF:*66/> -6
1
:e"inir como servicio-
)efine service0
use generic-service
hostIname nom'reIhost
serviceI)escription imaps
chec-Icomman) chec-Isimap
1
c&ec8?ircd
.ste comando comprueba el "uncionamiento de un servidor de @= remoto.
=ealiza conexiones para ello, esta escrito en Perl.
c&ec8?ldap
.ste comando realiza conexiones y b/s#uedas L:;P contra un servidor remoto
y comprueba as$ su estado de "uncionamiento y si responde dentro del tiempo
esperado o no.
*sage- chec7Eldap -3 [hostG -b [baseEdnG f-p [portGg f-a [attrGg f-:
[binddnGg
P-+ Vpass=or)WQ P-= V=arnItimeWQ P-c VcritItimeWQ P-t timeoutQ
P-!S-3Q P-ES-6Q
(otes- @" this plugin is called via Wchec7EldapsW, method W+A;=AAL+W 'ill be
implied 0using de"ault port DMU1 unless iportHIDI is speci"ied. @n that case W++L
on connectW 'ill be used no matter ho' the plugin 'as called. Ahis detection is
deprecated, please use Wchec7EldapW 'ith the WistarttlsW or WisslW "lags to de"ine
the behaviour explicitly instead.
c&ec8?load
.ste comando trabaja en local en la m#uina #ue est ejecutando el sistema
(agios. omprueba la carga del sistema en "uncin de unos umbrales #ue
tiene preestablecidos y permite generar advertencias o errores severos seg/n
sea esta carga.
*so-chec7Eload f-rg -' ?L6;:P,?L6;:T,?L6;:PT -c
L6;:P,L6;:T,L6;:PT
-r, ipercpu
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 b72%3Fnc
Cam'ia a C:.8.C32 si el prome)io )e carga exce)e bC2%3Fnc
:e"inir 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&ec8?log
.ste comando es muy interesante para administradores del sistema. >unciona
en local y permite buscar coincidencia de patrones en "icheros de suceso.
uando el patrn #ue se busca es encontrado, (agios recoge esta incidencia.
*sage- chec7Elog -> log"ile -6 oldlog -# #uery *sage- chec7Elog ihelp *sage-
chec7Elog iversion
c&ec8?$ail0
.ste comando "unciona en local en la m#uina #ue corre (agios. Permite
comprobar el n/mero de mensajes #ue hay en espera en las colas de
+endmail. +e puede establecer un l$mite para #ue se genere una noti"icacin
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&ec8?$rtg
.ste comando tambin trabaja en local en la m#uina #ue est ejecutando
(agios y permite monitorizar los "icheros de sucesos de !=A), en concreto
permite monitorizar cual#uiera de los parmetros #ue se vuelcan sobre dichos
"icheros como por ejemplo conexiones, carga del procesador, entrada, salida,
etctera. Permite establecer umbrales #ue si se superan generan
noti"icaciones.
Ahis plugin 'ill chec7 either the average or maximum value o" one o" the t'o
variables recorded in an !=A) log "ile.
*sage-chec7Emrtg -> logE"ile -a [;<) h !;RG -v variable -' 'arning -c critical
f-l labelg f-u unitsg f-e expireEminutesg f-t timeoutg f-vg
c&ec8?$rtgtraf
.ste comando permite comprobar el servicio *P+ en un e#uipo remoto y
establecer umbrales para, seg/n el valor devuelto, disparar una advertencia,
un error severo o nada.
Ahis plugin 'ill chec7 the incoming8outgoing trans"er rates o" a router, s'itch,
etc recorded in an !=A) log. @" the ne'est log entry is older than
[expireEminutesG, a ?;=(@() status is returned. @" either the incoming or
outgoing rates exceed the [iclG or [oclG thresholds 0in 5ytes8sec1, a =@A@;L
status results. @" either o" the rates exceed the [i'lG or [o'lG thresholds 0in
5ytes8sec1, a ?;=(@() status results.
*sage chec7Emrtgtra" -> [logE"ileG -a [;<) h !;RG -v [variableG -'
['arningEpairG-c [criticalEpairG f-e expireEminutesg f-t timeoutg f-vg
6ptions- -h, ihelp
+rint )etaile) help screen
-<, iversion
+rint version information
->, i"ilenameH+A=@()
Cile to rea) log from
-e, iexpiresH@(A.).=
4inutes after =hich log expires
-a, iaggregationH0;<)h!;R1
8est average or maximum
-', i'arning
7arning threshol) pair VincomingW(VoutgoingW
-c, icritical
Critical threshol) pair VincomingW(VoutgoingW
(otes- - !=A) stands "or !ulti =outer Ara""ic )rapher. @t can be do'nloaded
"rom
http#//ee-staff.ethz.ch/[oeti-er/=e'tools/mrtg/mrtg.html
- ?hile !=A) can monitor things other than tra""ic rates, this
plugin pro'a'ly =on>t =or- =ith much else =ithout mo)ification.
- Ahe calculated i8o rates are a little o"" "rom 'hat !=A) actually
reports. .>m not sure =hy this is right no=( 'ut =ill loo- into it
for future enhancements of this plugin.
c&ec8?nagios
.ste comando se ejecuta en la m#uina #ue est ejecutando (agios y permite
comprobar #ue el archivo de sucesos del sistema de monitorizacin no sea ms
antiguo de lo #ue se especi"i#ue.
*sage-chec7Enagios -> [status log "ileG -e [expireEminutesG -
[processEstringG
6ptions- -h, ihelp
+rint )etaile) help screen
-<, iversion
+rint version information
->, i"ilenameH>@L.
&ame of the log file to chec-
-e, iexpiresH@(A.).=
4inutes aging after =hich logfile is consi)ere) stale
-, icommandH+A=@()
6u'string to search for in process arguments
-v, iverbose
6ho= )etails for comman)-line )e'ugging ;&agios may truncate output<
.xamples- chec7Enagios -e T -> 8usr8local8nagios8var8status.log -
8usr8local8nagios8bin8nagios
negate
.ste comando sirve para, en combinacin con cual#uiera de los otros plugins,
negar su valor. Por ejemplo, el uso normal del comando chec7E"tp es #ue
devuelve 6O cuando el servicio est "uncionando y =@A@;L cuando no. on
este comando se invierten los valores. .s /til para cuando se desea tener
noti"icacin expl$cita de #ue algo est "uncionando bien en lugar de cuando
"alla.
*sage-negate f-t timeoutg f-o'cu +A;A.g f-sg [de"inition o" 'rapped pluginG
c&ec8?nntp
.ste comando establece conexiones ((AP contra un servidor remoto
especi"icado para comprobar #ue el servicio de (.?+ est activo.
Ahis plugin tests ((AP connections 'ith the speci"ied host 0or unix soc7et1.
*sage-chec7Enntp -3 host -p port f-' ['arning timeGg f-c [critical timeGg f-s
[send stringGg f-e [expect stringGg f-# [#uit stringGgf-m [maximum bytesGg
f-d [delayGg f-t [timeout secondsGg f-r [re"use stateGg f-! [mismatch
stateGg f-vg f-Sh-Ig f-jg f-: [days to cert expiryGg f-+ [use ++LGg f-.g
c&ec8?nt
.ste comando realiza peticiones a un e#uipo ?indo's (A8KJJJ8RP remoto #ue
est ejecutando el servicio (+lient para comprobar parmetros locales a
dicho e#uipo como por ejemplo uso de la P*, de la memoria, del disco,
etctera.
c&ec8?ntp
.ste comando ejecuta ntpdate para comprobar #ue el timestamp de la
m#uina local #ue ejecuta (agios no di"iere en ms de lo especi"icado del
timestamp de una m#uina remota dado.
c&ec8?n"stat
Plani"icacin, especi"icacin, diseBo y evaluacin de redes .ste comando
realiza peticiones a un e#uipo (ovell remoto #ue est ejecutando el servicio
!=A).RA (L! para comprobar parme tros locales a dicho e#uipo como por
ejemplo uso de la P*, de la memoria, del disco, etctera.
c&ec8?oracle
.ste comando permite comprobar el estado de un +)5: 6racle en un
ordenador remoto as$ como el estado de los tablespaces, de bases de datos, de
las cach, etctera, de dicho servidor.
c&ec8?overcr
.ste comando permite comprobar el estado de un servicio 6ver-=
ejecutndose en un sistema *(@R remoto. =ealiza peticiones a este servicio
para comprobar su estado.
c&ec8?pop
.ste comando comprueba si el servicio P6P de un e#uipo remoto est
"uncionando correctamente. =ealiza peticiones para ello.
c&ec8?procs
.ste comando "unciona en la m#uina donde se est ejecutando (agios.
omprueba el n/mero de procesos #ue se estn ejecutando en la m#uina y
genera advertencias cuando este n/mero sobrepasa el umbral especi"icado.
c&ec8?real
.ste comando comprueba si el servicio =.;L de un e#uipo remoto est
"uncionando correctamente. =ealiza peticiones para ello.
c&ec8?rpc
.ste comando comprueba si un servicio =P remoto est registrado y
"uncionando correctamente. *tiliza para ello llamadas a rpcin"o.
c&ec8?sensors
.ste comando "unciona en la m#uina local donde se ejecuta (agios, necesita
de pa#uetes adicionales instalados en el sistema de monitorizacin y su
"uncin es comprobar el estado del hard'are de la m#uina.
c&ec8?s$tp
.ste comando permite conocer el estado de un servicio +(!P de una m#uina
remota. =ealiza conexiones a este servicio para averiguar la in"ormacin
necesaria.
c&ec8?sn$p
.ste comando permite conocer el estado de una m#uina remota mediante la
consulta a su agente +(!P. *tiliza para ello el protocolo +(!P en cual#uiera
de sus versiones P, K D.
c&ec8?ss&
.ste comando permite controlar si el servicio ++3 de una m#uina remota est
activo o no. =ealiza peticiones a este servicio para obtener la in"ormacin
necesaria.
c&ec8?s"ap
.ste comando "unciona en local, en la m#uina donde est instalado (agios.
Permite monitorizar el tamaBo de la memoria de intercambio utilizada y
generar advertencias o errores cuando este valor sobrepaso los umbrales
establecidos.
c&ec8?tcp
.ste comando permite realizar peticiones arbitrarias a conexiones 0soc7ets1
AP contra sistemas remotos. Por tanto permite monitorizar cual#uier servicio
#ue utilice soc7ets AP para recibir peticiones.
:e"inir 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&ec8?ti$e
.ste comando permite comprobar si el servicio de hora 0A@!.1 est
"uncionando en una m#uina remota. =ealiza conexiones a este servicio para
obtener la in"ormacin.
c&ec8?udp
.ste comando permite realizar peticiones arbitrarias a conexiones 0soc7ets1
*:P contra sistemas remotos. Por tanto permite monitorizar cual#uier servicio
#ue utilice soc7ets *:P para recibir peticiones.
c&ec8?ups
.ste comando permite monitorizar el estado del servicio *P+ en m#uinas
remotas, para ello hace peticiones a este servicio. (ecesita pa#uetes
adicionales instalados en el sistema de monitorizacin.
c&ec8?users
.ste comando permite conocer el n/mero de usuarios conectados actualmente
en el sistema local, en el #ue se est ejecutando (agios. )enera advertencias
y errores cuando el n/mero supera el umbral "ijado.
c&ec8?vs-
.ste comando permite comprobar #ue el tamaBo en memoria de un programa
determinado no sea mayor de un l$mite "ijado. uando se produzca el caso
contrario se generarn advertencias y8o errores.
urli-e
.ste comando permite, usando con otro comando, #ue la salida de este /ltimo
se pueda mostrar en la pantalla de un navegador en "ormato 3A!L como un
enlace hipertexto navegable.
*sage-urlize [urlG [pluginG [argPG \ [arg(G
6ptions- -h, ihelp
+rint )etaile) help screen
-<, iversion
+rint version information
.xamples- Pay close attention to #uoting to ensure that the shell passes the
expected data to the plugin. >or example, in-
urlize http-88example.com8 chec7Ehttp -3 example.com -r Wt'o 'ordsW
the shell =ill remove the single Buotes an) urlize =ill see#
urlize http-88example.com8 chec7Ehttp -3 example.com -r t'o 'ords
?ou pro'a'ly =ant#
urlize http-88example.com8 %chec7Ehttp -3 example.com -r Wt'o 'ordsW&
I$portante Para #ue este comando "uncione bien, deberemos tener
con"igurado en el archivo cgi#cfg la siguiente directiva -
escapeIhtmlItagsT0
c&ec8?&eartbeat
+cript simple para che#uear el estado de 3eart5eat y sus nodos, muy /til por
cierto
#A/'in/'ash
# 3uthor# *mmanuel ,retelle
# Fate# !/03/!00
# Fescription# :etrieve 2inux 53 cluster status using clIstatus
# ,ase) on http#//===.ran)om'ugs.com/linux/ho=to-monitor-linux-heart'eat-
snmp.html
#
# 3utor# 6tanila Constantin 3)rian
# Fate# !0/03/!00H
# Fescription# Chec- the num'er of active heart'eats
# http#//===.ran)om'ugs.com
# $et program path
:*G.6.%&T.3
+:%$&34*TM/'in/'asename /0M
+:%$+385TMecho /0 S /'in/se) -e >s(P\\/QP^\\/QP^\\/Q*/((>M
&%F*I&34*TMuname -nM
C2I68T>/usr/'in/clIstatus>
#nagios error co)es
#. /+:%$+385/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
# -5<
# shift
# 5%68T/LL
# -C<
# shift
# C%449&.8?T/LL
*<
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&ec8?syste$i$ager
+cript para che#uear #ue nuestras imgenes estn actualizadas a la "echa
#A/usr/'in/php -B
# 6ergio CayuBueo Vcayu@cayu.com.arW
# http#//cayu.com.ar
VXphp
/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&ec8?dba?7pc?pending
he#ueo de %istributed transactions de 6racle, por medio de ++3.
#A/usr/'in/perl
open;6D2+296I6*2*C8( RsBlplus -6 \R/ as sys)'a\R
@/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 \Rexecute
sys.)'msItransaction.purgeIlostI)'Ientry;>R./select.R><L\RSsBlplus -6 \R/ as
sys)'a\R 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
.l script s#l
set pagesize 0
set trimspool on
set hea)sep off
select 2%C32I8:3&I.F from )'aI!pcIpen)ingL
exitL
.l chec7Ecommand en la con"iguracion del servicio
chec-I'yIsshAsu)o su - oracle -c /usr/local/'in/)'aI!pcIpen)ing.pl
.l sudoers del e#uipo a monitorear
monitoreo 322 T &%+3667F# /'in/su - oracle -c /usr/local/'in/)'aI!pcIpen)ing.pl
c&ec8?$icrostrategy
he#uear #ue el servicio de !icro+trategy 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&ec8?$icrostrategy;s&
#A/'in/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
#A/usr/'in/perl
use strictL
use =arningsL
my /%:3C2*I6.FT/3:$GP0QL
su' 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/.)'f/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&
+i necesito alertar cuando crecen R registros en una tabla 6racle, 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 a=- >/^P 0-
H\.\t QO// 0print int;/<1>
:entro de un script #uedaria asi -
#A/'in/'ash
# CheBuear registros en 8a'la y 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 a=- >/^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
6 para conocer el estado de los tablespaces en 6racle
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 M)ate >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 M)ate >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 M)ate >OF38*# Zm/Z)/Zy 8.4*#Z5#Z4#Z6>M
exit !L
esac
c&ec8?sn$p?ifstatus?v:;pl
<ersion modi"icada por mi del script chec7EsnmpEi"status.pl para #ue pueda
consultar por medio de snmp vD
c&ec8?oracle?tablespace;s&
<ersion modi"icada por mi del script chec7EoracleEtablespace.sh para no tener
#ue usar oratab y conectarse con el s#lplus sin necesidad de tnsnames.ora,
ademas soporta per"data para gra"icarla en pnpSnagios
.j .8chec7EoracleEtablespace.sh -s +@: -3 PJ.P.P.UM -P PTKP -' UP -c UI
+i se #uiere saltear un tablespace, ej el 3N.O agregamos al "inal de la #uery -
an) fs.83,2*6+3C*I&34* &%8 2.N* >Z9&F%Z>
Aengo #ue agregar una opcin para agregarle a la linea de
comandos #ue sea ignorar table space
ssl(cert(c&ec8;s&
+cript para che#uear validez del certi"icados ++L
ssl-cert-chec-.sh -c Certifica)o.crt -n -x 60
Notas i$portantes
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#
;rchivos y directorios a tener en cuenta al realizar un bac7up
+cript de inicio de (agios
"etc"init#d"nagios
:irectorio de (agios
"usr"local"nagios
#itios de consultas
+itios de donde descargar plugins y agregados para (agios
Pa#uete +tandard de plugins
http-88nagiosplug.source"orge.net8
Plugins con soporte +(!P
http-88nagios.manubulon.com8
Plugins +;P !+
http-88source"orge.net8projects8nagios-sap-ccms8
@nter"az alternativa de (agios para visualizar en 5lac75erry
http-88nagiosmobile.source"orge.net8
Plugins para che#ueos en 5lac75erry
http-88'''.Pight."r8plugins85lac75erry8
Plugins de che#ueo de Lotus (otes
http-88barbich.net8
+ervidor de proyectos (agios, plugins, templates etc en etapa de desarrollo
http-88'''.nagios"orge.org8
+ervidor de proyectos (agios, plugins, templates etc
http-88'''.nagiosexchange.org
;gregado de che#ueo de eventos (agios para "ire"ox
https-88addons.mozilla.org8en-*+8"ire"ox8addon8DIJL
http-88code.google.com8p8nagioschec7er8
<isor de sucesos para el escritorio 0Linux, ?indo's1
http-88source"orge.net8projects8nagstamon
+itios generales sobre "uncionamiento de redes y protocolos
?i7i de =edes de omunicaciones @@ - *niversidad de !adrid
http-88ariadna.ii.uam.es8'i7i8'i7iErcK8do7u.php
*n ensayo con contenidos conceptuales
http-88'''.monogra"ias.com8trabajosUT8recursos-red-y-su-monitoreo8recursos-
red-y-su-monitoreo.shtml
'ugares donde fue citado co$o referencia el presente docu$ento
A.+@+ 6istema de monitoreo y control de redes inalmbricas para optimizacin
del servicio de 7nternet en la empresa 7ntercompu 5ilaca ;amrez, Carlos
Vinicio
http-88repo.uta.edu.ec8handle8PKDSTILMU8SSK
Notas
@nicio del documento 4unio de KJJL y a lo largo del tiempo le "ui agregando
cosas #ue descubri a lo largo de mi trabajo
=ecientemente agregu algunas correciones al KU de !arzo de KJPP
=ecientemente agregu algunas correciones al JS de ;bril de KJPK
=ecientemente agreg contenido al JL de :iciembre de KJPK
.ste documento se puede utilizar libremente, lo /nico #ue pido es #ue citen la
"uente si van a utilizarlo en obras derivadas
+i estn leyendo este documento desde un pd" u odt, puede encontrar los
archivos adjuntos en su "uente original
http-88'i7i.cayu.com.ar8do7u.phpkidHmanuales-nagios
Pueden encontrar mas sobre mi o hacerme consultas via http-88cayu.com.ar
.ste documento constituye una re"erencia para los
administradores del sistema de monitoreo (agios, y no
tiene por objeto reemplazar a los manuales provistos con el
producto. .s sumamente recomendable e"ectuar lectura
previa de dichos manuales para poder comprender los
conceptos utilizados en este documento, as$ como para
realizar cual#uier tarea de administracin sobre el sistema.
l 6ergio Cayu)ueo 0AEJ"AJ"0F EE?30

You might also like