Está en la página 1de 111

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.
Para prevenir errores en un sistema existe podemos utilizar un euipo 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 euipos 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 euipo.
-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 /bajo demanda0. Los mismos pueden estar
programados en diversos lenguajes como &, &11, Python, Perl, P2P, 3ava, 4ash
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 euipos como
servidores corriendo di#erentes sistemas operativos, routers de los cuales
dependen varios euipos. 5btener 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 euipos para una posterior elaboracin de reportes etc, elaborando
una con#iguracin personalizada de %agios para cada caso en particular, por
medio de testeo de pauetes de red, o haciendo uso de di#erentes #unciones
ue provee el protocolo )%6P /)imple %et$or7 6anagement Protocol0 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 euipos 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.
Descripcin
Que se puede hacer con Nagios
6onitorizacin de servicios de red /)6>P, P5P?, 2>>P, %>>P, @&6P, )%6P0.
6onitorizacin de los recursos de un host /carga del procesador, uso de los
discos, logs del sistema0 en varios sistemas operativos, incluso 6icroso#t
Aindo$s con el plugin %=P-B%>.
6onitorizacin remoto, a travs de t.neles ))L ci#rados o ))2.
:iseCo simple de plugins, ue permiten a los usuarios desarrollar sus propios
cheueos de servicios dependiendo de sus necesidades, usando sus
herramientas pre#eridas /4ash, &11, Perl, =uby, Python, P2P, &D, 3ava, etc.0.
&heueo de servicios paralizados.
Posibilidad de de#inir la jeraru*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 / <*a email, pager, 3abber, )6) o cualuier
mtodo de#inido por el usuario junto con su correspondiente complemento0.
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.
Quien va a usar Nagios
;dministradores de =edes con alto conocimiento tecnico
5peradores 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 6esas de ;yuda
;reas relacionadas
Como impacta
6ejora de productividad
;ntelacion de problemas
=eporte y aviso de incidentes
;gilidad en su tratamiento
6ejor y mayor relacion e integracion de sectores adjuntos
Requerimientos
Plan de accin bien diagramado
Personal con conocimiento medio8avanzado en redes
2ard$are acorde a la inversion y criticidad de los datos
)i se van a monitorear EF GHH host y EF IHHH servicios hay ue plantear
bien esto, no sobrevaluar pero tampoco escatimar
-jemplo un vez tuve ue monitorear una red con JHH hosts
y IHHH servicios ue a su vez guardaba estadisticas
completas en un 6y)KL dentro del mismo euipo para
luego generar in#ormes )L; y mostrar datos en pantalla en
una inter#az personalizada y disponia de un @ntel Kuad &ore
I.L '2z a ?I bits con un disco );>; de ?IH '4 y se uedo
algo corto el hard$are para los reuerimientos
areas
Dependencias
Para una correcta instalacin de %agios, con todas sus caracter*sticas es
necesario tener instalados ciertos pauetes de so#t$are en el sistema, la
instalacin puede variar seg.n la distribucin de Linux ue elijamos, si los
tenemos empauetados, o si los tenemos ue compilar en instalar
manualmente.
!aquete Descripcin "itio #eb
Perl @nterprete para el lenguaje de script
Perl
http,88$$$.perl.org
%et,,)%6P 6odulo de Perl para consultas )%6P http,88search.cpan.org8dis
t8%et-)%6P
&rypt,,:-) 6odulo de Perl para encripcin :-),
necesario para consultas )%6Pv?
http,88search.cpan.org8Md
paris8&rypt-:-)8
:igest,,26;& Neyed-2ashing #or 6essage
;uthentication
http,88search.cpan.org8dis
t8:igest-26;&8
:igest,,)2;O Perl inter#ace to the )2;-O
algorithm
http,88search.cpan.org8dis
t8:igest-)2;O8
==:>ool (tilitario para generacin de
gr#icas de red y adems
su mdulo de integracin con el
lenguaje Perl
http,88oss.oeti7er.ch8rrdto
ol
Plib Librer*a de compresin utilizada por
las utilidades gra#icas
http,88$$$.gzip.org8zlib8
Lib3P-' Librer*a para exportacin jpg http,88$$$.ijg.org8
LibP%' Librer*a para exportacin png http,88$$$.libpng.org8pub
8png8
QreetypeI Librer*a para procesamiento de
#uentes
http,88$$$.#reetype.org8
'raphviz (tilitario para generacin de
gra#icas
http,88$$$.graphviz.org8
RQreeLG-libs Librer*as gr#icas generales http,887oala.ilog.#r8lehors8
xpm.html
;pache I )ervidor Aeb http,88httpd.apache.org8
P2P @nterprete de lenguaje de script http,88$$$.php.net
6y)KL )istema de base de datos http,88$$$.mysl.com
Post#ix )6>P 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
%:5 ;gregado para articular %agios con
6y)KL
http,88$$$.nagios.org
Plugins Plugins de cheueo standard de
%agios
http,88$$$.nagios.org
)%6P Plugins Plugins para la integracin de
cheueos )%6P de %agios
http,88nagios.manubulon.
com8
%agios )itio de descarga o#icial http,88$$$.nagios.org
%agiosKL 2erramienta visual de con#iguracin
de %agios via Aeb
http,88$$$.nagiosl.org8
:o7u$i7i 2erramienta 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
Aindo$s
http,88$$$.intersectallian
ce.com8projects8index.ht
ml
6N Livestatus ;ditivo para obtener los datos de
%agios
en <ivo via )oc7et /muy .til para
abandonar %:50
http,88mathias-
7ettner.de8chec7m7Blives
tatus.html
'no7ii ;plicacin de inter#az para celulares
y modems ?',
para la realizacin de llamadas y
alertas )6)
http,88gno7ii.org
%ota,
2ay algunos plugins ue no estan mas disponibles en su sitio, aca los incluyo
Descarga y compilacin
-n este apartado nos concentraremos en la descarga y compilacin de los
di#erentes pauetes 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 ?.H.
Para ello descomprimiremos el pauete 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 pauete 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.
!N!%Nagios
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 aCos.
(na vez ue tenemos instalado y con#igurado %agios procederemos a
descargar y descomprimir el pauete 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
NDO&tils
-l generador de gra#icas Nagvis necesita ue Nagios almacene sus datos
dentro de una base de datos My"Q' ya ue por de#ecto lo hace en archivos de
texto, para ue Nagios pueda hacer eso, deberemos instalar el modulo NDO
ue viene dentro del pauete NDO&tils descargable via el sitio $eb de
Nagios. -ste mdulo es el ue se encarga de generar las consultas en #ormato
My"Q', ue son cargadas sobre un soc7et -l proceso NDO(D) corriendo
como daemon lee de ese soc7et y carga los datos en una base de datos
My"Q'.
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
2ay S componentes principales ue inician las utilidades %:5,
O. %:565: -vent 4ro7er 6odule /6odulo de evento corredor0
I. L5'I%:5 (tility
?. Q@L-I)5&N (tility
S. %:5I:4 :aemon
*l NDOMOD *vent )ro+er Module
Las utilidades %:5 incluyen un %agios -ven 4ro7er 6odule /%:565:.50 ue
exporta datos desde el demonio de nagios.
;sumiendo ue nagios #ue compilado con el 6odulo -vent 4ro7er activado
/esto es por de#ault0, usted puede con#igurar ue nagios cargue el modulo
%:565: 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 %:565: 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
>&P.
-l %:565: escribe la in#o en un #ormato ue el demonio %:5I:4 puede
entender.
)i el %:565: esta escrito para un archivo de salida, usted puede con#igurarlo
para rotarlo periodicamente y8o procesarlo en otra mauina #isicamente
/usando ))2, etc.0 y envia este contenido al daemon %:5I:4 usando la
utilidad Q@L-I)5&N /ue describiremos mas adelante0.
'a utilidad 'O,(NDO
-sta es designada para permitir importar un historial de logs de nagios a una
4: via el %:5I:4 daemon /describiremos luego0. La utilidad trabaja enviando
archivos de logs histricos a un archivo estandar, un unix soc7 o un tcp soc7 en
un #ormato ue %:5I:4 daemon entienda. -l %:5I:4 daemon puede luego
usarlo para procesar la salida y almacenar en un archivo de log historico
in#ormandolo en una 4:.
'a utilidad -.'*("OC/
-sta utilidad es muy simple, solo lee de un archivo estandar /o )>:@%0 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.
*l demonio NDO(D)
La utilidad es diseCada para tomar los datos de salida de los componentes
%:565: y L5'I%:5 y almacenarlos en una 4: 6y)KL o 4: Postgre)KL.
&uando este inicia, el daemon %:5I:4 crea un soc7et y espera ue los
clientes se conecten. %:5I:4 puede correr independientemente, bajo un
demonio multiproceso o bajo inetd /si esta usando un soc7et >&P0.
6ultiples clientes pueden conectarse al daemon %:5I:4 y transmitir
simultneamente.
.nstalacin
(na vez compilado el modulo NDO procederemos a instalarlo manualmente
cp src$ndomod0123o $usr$local$nagios$bin$ndomod3o
Con esto copiaremos el modulo al directorio de ejecucin de $agios
cp con4ig$ndomod3c4g $usr$local$nagios$etc
%e esta manera instalaremos la configuracin inicial del modulo
@gualmente lo haremos con el daemon NDO(D)
cp src$ndo(db012 $usr$local$nagios$bin$ndo(db
Con esto copiaremos el daemon al directorio de ejecucin de $agios
cp con4ig$ndo(db3c4g $usr$local$nagios$etc
%e esta manera instalaremos la configuracin inicial del daemon
M/ '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
statusBupdateBinterval en nagios.c#g. (n valor t*pico es de OH 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#oue, %:5. -ste es un mdulo de 5=& 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 )KL y actualizaciones de varias tablas en una base de datos 6y)KL
o Postgre)KL. -ste en#oue tiene varias ventajas sobre status.dat,
Los datos se actualizan de inmediato, no slo cada OH o IH segundos.
Las solicitudes tienen acceso #cil a los datos a travs de )KL. % 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 %:5 tambin algunas de#iciencias graves,
>iene una con#iguracin compleja.
)e necesita una /creciente0 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 O.O.H, &hec7B6N o#rece un en#oue totalmente nuevo para
acceder a datos de estado y tambin histrico, Livestatus. ;s* como %:5,
Livestatus hacer uso de la ;P@ de %agios evento 4ro7er y carga un mdulo
binario en su proceso de %agios. Pero luego otros %:5, 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 O.O.I ue tambin se pueden recuperar los datos histricos
de los archivos de registro a travs de %agios Livestatus.
-sto es no slo un en#oue incre*blemente simple, si no tambin muy rpido.
;lgunas ventajas son,
5tro entonces %:5, utilizando Livestatus no impone una carga mensurable
de su &P( para nada. )lo en el tratamiento de las consultas de una cantidad
muy peueCa de la &P( es necesario. Pero eso ni siuiera se blouear
%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 )KL.
%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 TH,HHH 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 )KL 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 /;43K*<... yes
chec-ing for gLL... gLL
chec-ing for CLL compiler )efault output file name... a.out
chec-ing =hether the CLL 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 CLL compiler... yes
chec-ing =hether gLL 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
gLL -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48 livestatusIso-
3n)ingCil...
gLL -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48 livestatusIso-
ClientDue...
gLL -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48 livestatusIso-
Column.o ...
gLL -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48 livestatusIso-
ColumnsCo...
gLL -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48 livestatusIso-
ContactsC...
gLL -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48 livestatusIso-
CustomGar...
gLL -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48 livestatusIso-
CustomGar...
....
root@linux# ma-e install
4a-ing install in src
ma-eMN# *ntering )irectory O/)/nagvis-)ev/src/m--livestatus-..!/src>
ma-eM!N# *ntering )irectory O/)/nagvis-)ev/src/m--livestatus-..!/src>
test -z P/usr/local/'inP QQ /'in/m-)ir -p P/usr/local/'inP
/usr/'in/install -c >unixcat> >/usr/local/'in/unixcat>
test -z P/usr/local/li'/m--livestatusP QQ /'in/m-)ir -p P/usr/local/li'/m--
livestatusP
/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-eM!N# 2eaving )irectory O/)/nagvis-)ev/src/m--livestatus-..!/src>
ma-eMN# 2eaving )irectory O/)/nagvis-)ev/src/m--livestatus-..!/src>
ma-eMN# *ntering )irectory O/)/nagvis-)ev/src/m--livestatus-..!>
ma-eM!N# *ntering )irectory O/)/nagvis-)ev/src/m--livestatus-..!>
ma-eM!N# &othing to 'e )one for Oinstall-exec-am>.
ma-eM!N# &othing to 'e )one for Oinstall-)ata-am>.
ma-eM!N# 2eaving )irectory O/)/nagvis-)ev/src/m--livestatus-..!>
ma-eMN# 2eaving )irectory O/)/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)uleR/usr/local/li'/m--livestatus/livestatus.o /var/li'/nagios/r=/live
eventI'ro-erIoptionsR-
9 dentro del log de %agios vamos a ver algo similar a esto
M!S6EE"66N livestatus# Gersion ..! initializing. 6oc-et path# >/var/li'
/nagios/r=/live>
M!S6EE"66N livestatus# Create) 9&.T control soc-et at /var/li'/nagios/r=/
live
M!S6EE"66N livestatus# %pene) 9&.T soc-et /var/li'/nagios/r=/live
M!S6EE"66N livestatus# successfully finishe) initialization
M!S6EE"66N *vent 'ro-er mo)ule >/usr/local/li'/m--livestatus/livestatus.o>
initializ
e) successfully.
M!S6EE"66N Cinishe) )aemonizing... ;&e= +.FRS363<
M!S6EE"66N livestatus# 6tarting 0 client threa)s
M!S6EE"66N livestatus# *ntering main loop( listening on 9&.T soc-et
5pciones del mdulo
Opcin 5alor por
de4ault
Que signi4ica
debug H )et this to O in order to ma7e
Livestatus log each uery it
executes in nagios.log
maxBcachedBmessages THHHHH LivestatusU access to %agios log#iles
caches messages in-memory. 2ere
you can set the maximum number
o# cached messages. -ach message
ta7es about ITH bytes /in the
current implementation0
maxBresponseBsize OHSLTJGHH 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.
>he de#ault limit is OHH 64
numBclientBthreads OH Livestatus needs one thread #or
each concurrent client connection. ;
#ixed number o# threads is created
$hen %agios starts
threadBstac7Bsize GTT?G >his parameter sets the size o# the
stac7 o# each client thread. @n
versions be#ore O.O.S, the stac7 size
$as set to L 64 /pthread de#ault0.
>he ne$ de#ault value is GS N4. ;
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
ueryBtimeout OHHHH >his 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# H disables the
timeout
idleBtimeout ?HHHHH >his value is in ms. Livestatus is
$aiting at most that much time #or
the next uery. ; value o# H disables
the timeout
-jemplo de como agregar opciones
'ro-erImo)uleR/usr/local/li'/m--livestatus/livestatus.o /var/run/nagios/r=/live
)e'ugR
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.
:eberemos bajar el pauete %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) JJS /usr/local/nagios/share/nagvis/nagvis/images/maps
root@localhost # chmo) 66E /usr/local/nagios/share/nagvis/nagvis/images/maps/*
root@localhost # chmo) JJS /usr/local/nagios/share/nagvis/etc/maps
root@localhost # chmo) 66E /usr/local/nagios/share/nagvis/etc/maps/*
root@localhost # chmo) JJS /usr/local/nagios/share/nagvis/var
root@localhost # chmo) 66E /usr/local/nagios/share/nagvis/var/*
Nota sobre la generacin del 6utomap
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 gdI 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 gdI y en #ormato png
copiaremos en archivo en #ormato png al directorio nagvis"images"s&apes pero
cambiandole la extensin de png a gdI, y entonces %agvis lo vera como un
gdI siendo ue realmente es un P%' y debido a eso sera capas de mostrarlo.
Nota Nagvis 738 y template integrada con !N!
6odi#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.
Uta'le classRPhoverIta'lePV
UtrVUth colspanRP!PVMlangIo'@ItypeN ;MlangIlastIstatusIrefreshN#
MlastIstatusIrefreshN<U/thVU/trV
UtrVUt) classRPla'elPVUla'elVMlangInameNU/la'elVU/t)VUt)VMo'@InameNU/t)VU/trV
UA-- ,*$.& service --V
UtrVUt)
classRPla'elPVUla'elVMlangIserviceI)escriptionNU/la'elVU/t)VUt)VMserviceI)escrip
tionNU/t)VU/trV
UA-- *&F service --V
UtrVUt) classRPla'elPVUla'elVMlangIaliasNU/la'elVU/t)VUt)VMo'@IaliasNU/t)VU/trV
UA-- ,*$.& host --V
UtrVUt) colspanRP!P styleRPtext-align#centerWPVUimg srcRP/nagios/pnp/in)ex.phpX
hostRMo'@InameNYsrvRI5%68IYsourceRYvie=R0Y)isplayRimageP =ithRP300pxP
heightRPHEpxPVU/t)VU/trV
UtrVUt) classRPspacerP colspanRP!PVU/t)VU/trV
UtrVUt) classRPla'elMo'@IstateNPVUla'elVMlangIstateN
;MlangIstateItypeN<U/la'elVU/t)VUt) classRPstateMo'@IstateNPVMo'@IstateN
;Mo'@IstateItypeN<Mo'@IinI)o=ntimeNMo'@Iac-no=le)ge)NU/t)VU/trV
UtrVUt)
classRPla'elPVUla'elVMlangIoutputNU/la'elVU/t)VUt)VMo'@IoutputNU/t)VU/trV
UtrVUt)
classRPla'elPVUla'elVMlangIperf)ataNU/la'elVU/t)VUt)VMo'@Iperf)ataNU/t)VU/trV
UtrVUt)
classRPla'elPVUla'elVMlangIcurrentIattemptNU/la'elVU/t)VUt)VMo'@IcurrentIchec-Ia
ttemptN/Mo'@ImaxIchec-IattemptsNU/t)VU/trV
UtrVUt)
classRPla'elPVUla'elVMlangIlastIchec-NU/la'elVU/t)VUt)VMo'@IlastIchec-NU/t)VU/tr
V
UtrVUt)
classRPla'elPVUla'elVMlangInextIchec-NU/la'elVU/t)VUt)VMo'@InextIchec-NU/t)VU/tr
V
UtrVUt)
classRPla'elPVUla'elVMlangIlastIstateIchangeNU/la'elVU/t)VUt)VMo'@IlastIstateIch
angeNU/t)VU/trV
UA-- *&F host --V
UtrVUt) classRPspacerP colspanRP!PVU/t)VU/trV
UtrVUt)
classRPla'elMo'@IsummaryIstateNPVUla'elVMlangIsummaryIstateNU/la'elVU/t)VUt)
classRPstateMo'@IsummaryIstateNPVMo'@IsummaryIstateN Mo'@IsummaryIinI)o=ntimeN
Mo'@IsummaryIac-no=le)ge)NU/t)VU/trV
UtrVUt)
classRPla'elPVUla'elVMlangIsummaryIoutputNU/la'elVU/t)VUt)VMo'@IsummaryIoutputNU
/t)VU/trV
UA-- ,*$.& service --V
UtrVUt) colspanRP!P styleRPtext-align#centerWPVUimg srcRP/nagios/pnp/in)ex.phpX
hostRMo'@InameNYsrvRMserviceI)escriptionNYsourceRYvie=R0Y)isplayRimageP
=ithRP300pxP heightRPHEpxPVU/t)VU/trV
UtrVUt)
classRPla'elPVUla'elVMlangIperf)ataNU/la'elVU/t)VUt)VMo'@Iperf)ataNU/t)VU/trV
UtrVUt)
classRPla'elPVUla'elVMlangIcurrentIattemptNU/la'elVU/t)VUt)VMo'@IcurrentIchec-Ia
ttemptN/Mo'@ImaxIchec-IattemptsNU/t)VU/trV
UtrVUt)
classRPla'elPVUla'elVMlangIstateItypeNU/la'elVU/t)VUt)VMo'@IstateItypeNU/t)VU/tr
V
UtrVUt)
classRPla'elPVUla'elVMlangIlastIchec-NU/la'elVU/t)VUt)VMo'@IlastIchec-NU/t)VU/tr
V
UtrVUt)
classRPla'elPVUla'elVMlangInextIchec-NU/la'elVU/t)VUt)VMo'@InextIchec-NU/t)VU/tr
V
UtrVUt)
classRPla'elPVUla'elVMlangIlastIstateIchangeNU/la'elVU/t)VUt)VMo'@IlastIstateIch
angeNU/t)VU/trV
UA-- *&F service --V
UA-- ,*$.& chil)s --V
UtrVUt) classRPspacerP colspanRP!PVU/t)VU/trV
UtrVUt) colspanRP!PV
Uta'le =i)thRP00ZPV
UtrV
UA-- ,*$.& servicegroup --VUt)
classRPla'elPVUla'elVMlangIchil)InameNU/la'elVU/t)VUA-- *&F servicegroup --VUt)
classRPla'elPVUla'elVMlangIchil)InameNU/la'elVU/t)VUt)
classRPla'elPVUla'elVMlangIstateNU/la'elVU/t)VUt)
classRPla'elPVUla'elVMlangIoutputNU/la'elVU/t)V
U/trV
UA-- ,*$.& loopIchil) --V
UtrVUA-- ,*$.& servicegroupIchil) --VUt)VMo'@InameNU/t)VUA-- *&F
servicegroupIchil) --VUt)VMo'@InameNU/t)VUt)
classRPstateMo'@IsummaryIstateNPVMo'@IsummaryIstateNMo'@IsummaryIinI)o=ntimeN
Mo'@IsummaryIac-no=le)ge)NU/t)VUt)VMo'@IsummaryIoutputNU/t)VU/trV
UA-- *&F loopIchil) --V
U/ta'leV
U/t)VU/trV
UA-- *&F chil)s --V
U/ta'leV
My"Q'
6y)KL es uno de los )istemas 'estores de 4ases de :atos =elacional multihilo
y multiusuario, ms populares,
Compilacion
:ebemos descargar el pauete de su $eb o#icial y proceder a compilarlo.
root@localhost # groupa)) mysBl
root@localhost # usera)) -g mysBl mysBl
root@localhost # gunzip U mysBl-G*:6.%&.tar.gz Q tar -xvf -
root@localhost # c) mysBl-G*:6.%&
root@localhost # ./configure --prefixR/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)' --userRmysBl
root@localhost # cho=n -: root .
root@localhost # cho=n -: mysBl var
root@localhost # chgrp -: mysBl .
root@localhost # 'in/mysBl)Isafe --userRmysBl Y
*stablecer la contrase9a del usuario root
Por de#ecto, el usuario root no tiene asignada una contraseCa y esto no es
nada recomendable, as* ue vamos a establecer una. (tilizamos el comando,
mys)ladmin *u root pass+ord ,contrase-adificil,
&ambiar VloueseaW por la contraseCa ue desemos establecer, pero es
importante no olvidarse de teclear las comillas simples.
&omprobamos la nueva contraseCa abriendo una sesin en mysl,
mys)l *u root *p
%os pedir la contraseCa, la tecleamos, y si todo es correcto entraremos en la
inter#az del cliente de 6y)KL, podemos teclear alg.n comando de mysl 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 mysl y test.
:eberemos crear una base de datos llamada %agios
mys)l.create database nagios/
Duery %K( ro= affecte) ;0.00 sec<
mysBlVsho= )ata'asesW
L----------L
Q Fata'ase Q
L----------L
Q mysBl Q
Q nagios Q
Q test Q
L----------L
3 ro=s in set ;0.0 sec<
;hora deberemos crear un usuario con privilegios de )-L-&>, @%)-=>, (P:;>-,
:-L->-
C:*38* 96*: nagios .F*&8.C.*F ,? >nagios!3>W
9 darle privilegios sobre la base de datos nagios
mysBlV $:3&8 322 %& nagios.* 8% nagios@localhost .F*&8.C.*F ,? PnagiosPW
Duery %K( 0 ro=s affecte) ;0.00 sec<
mysBlV Buit
>ecleamos exit o uit para salir del programa cliente.
!aquetes
La instalacion de My"Q', en el caso de tenerlo empauetado en nuestra
distribucion Linux, es bastante simple
CentO" y Red:at
Para instalar el pauete mysl haremos uso de la utilidad de sistema up(date
o yum
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 arranue del servicio
Lo habitual ser ue cuando arranue o se pare nuestro servidor tambien se
inicie o detenga el 6y)KL, para ello deberemos ejecutar,
c&1config 2level 34 mys)ld on
-sto activa el demonio mysld en los runlevel ? y T, y lo detiene en el resto. )i
ueremos comprobar el estado del servicio podemos utilizar lo siguiente,
c&1config 2list mys)ld
Debian
Para instalar mysl 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 arranue por de#ecto ,
update*rc#d *f mys)l defaults
Nota "u"*
Para setear el arranue 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.
6pache y !:!
%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 2>>P de cdigo abierto para plata#ormas
(nix /4):, '%(8Linux, etc.0, Aindo$s, 6acintosh y otras, es el mas usado en
internet.
P2P es un lenguaje de programacin interpretado, diseCado 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 pauetes desde &ent5) ejecutaremos ,
yum install &ttpd p&p p&p*common
Para dejar el servicio corriendo ,
"etc"init#d"&ttpd start
Debian
Para instalar los pauetes de :ebian, deberemos ejecutar ,
apt*get install apac&e0 p&p4
Para dejar el servicio corriendo ,
"etc"init#d"apac&e0 start
Con4iguracin
;hora nos re#eriremos a la con#iguracin de los elementos instalados para su
posterior articulacin y #uncionamiento en conjunto.
.mplementacin
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 2>>P o 2>>P)
-n la mayor*a de los euipos a monitorear mientras #uera posible instalar y
dejar corriendo los servicios de )%6P
&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#
*n el servidor
&on#iguraciones necesarias en el servidor de monitoreo.
Nagios
;lgunos puntos basicos previos a la instalacion ,
!6: -sta es la ruta de instalacin. Por de#ecto es 8usr8local8nagios
&suario (suario ue va a usar nagios par ejecutarse. :ebe crearse con
adduser especi#icarle el P;>2 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.
&R' %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
*structura de archivos
(na vez ue compilamos e instalamos el pauete %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
share
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 cheuear, comandos de ejecucion, contactos de noti#icacin,
intervalos de cheueos. :entro de el hay di#erentes subdirectorios y archivos.
libe2ec
;lli se contienen lo ejecutables de los plugins ue e#ectuan los cheueos,
)%6P, );P, 5racle, ))2, ue pueden ser binarios, scripts en Perl, P2P, )hell,
3ava, etc.
sbin
;ui se almacenan los ejecutables cgi ue se ejecutaran para la visualizacion
por $eb de la consola %agios.
share
;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 cheueos,
in#ormacion de ejecucion actual, archivos de soc7ets, registros de logs, colas
de ejecucin de cheueos.
6rchivos de con4iguracion nagios$etc
cgi3c4g
%efinir arc&ivo de configuracion principal de $agios
mainBcon#igB#ileF8usr8local8nagios8etc8nagios.c#g
;uta donde se ubican los arc&ivos a mostrar via +eb
physicalBhtmlBpathF8usr8local8nagios8share
;uta del url a donde ubicar $agios desde el navegador
urlBhtmlBpathF8nagios
Mostrar o no el icono de ayuda en la interfaz +eb
sho$BcontextBhelpFH
Mostrar objetos pendientes de c&e)ueo
useBpendingBstatesFO
!sar autenticacion para acceder a $agios
useBauthenticationFO
<ener usuario logueado por default =no recomendado, dejar comentado>
Dde#aultBuserBnameFguest
!suarios con acceso permitido para ver la informacion de objetos =separados
por comas>
authorizedB#orBsystemBin#ormationFnagiosadmin
!suarios con acceso permitido para ver la informacion de configuracion
=separados por comas>
authorizedB#orBcon#igurationBin#ormationFnagiosadmin
!suarios con acceso permitido ejecucion de comandos nagios =separados por
comas>
authorizedB#orBsystemBcommandsFnagiosadmin
!suarios permitidos a ver informacion de &osts y servicios =separados por
comas>
authorizedB#orBallBservicesFnagiosadmin
authorizedB#orBallBhostsFnagiosadmin
!suarios permitidos para ejecutar comandos sobre &osts y servicios
=separados por comas>
authorizedB#orBallBserviceBcommandsFnagiosadmin
authorizedB#orBallBhostBcommandsFnagiosadmin
<asa de refresco para la interfaz +eb en segundos
re#reshBrateFXH
htpass#d3users
;rchivo con pass$ords encriptadas de los usuarios ue se autenti#icaran por
2>>P
nagios3c4g
;rchivo de con#iguracion principal de %agios, aui se especi#ican los
directorios de trabajo y se incluyen los archivos de con#iguracion extra a
utilizar por %agios
&on diversos parametros ,
log;4ile se especi#ica el archivo de log a utilizar por %agios
c4g;4ile se especi#ica un archivo de con#iguracion extra a incluir en la
ejecucion de %agios
c4g;dir se especi#ica un directorio con archivos de con#iguracion extra a
incluir recursivamente en la ejecucion de %agios
log;archive;path path donde se alojaran los archivos de log
use;syslog integracion con syslog
ndo(db3c4g
;rchivo de con#iguracion del daemon ue se encarga de introducir las
consultar generadas por el modulo ndomod
ndomod3c4g
6odulo de %agios ue se encarga de traducir la in#ormacion de ejecucion de
%agios en consultas 6y)KL, disponiendolas por medio de un soc7et
resource3c4g
;rchivo de con#iguracion donde se de#inen macros de ejecucion
objects$
:irectorio de archivos generales de con#iguracion
objects$commands3c4g
:e#inicion de comandos de ejecucion por de#ault, con los alias ue ueremos
usar
objects$contacts3c4g
:e#inicion de contactos de noti#icacion
objects$localhost3c4g
Plantilla inicial para el cheueo del host local
objects$printer3c4g
Plantilla de ejemplo de cheueo de impresoras por )%6P
objects$s#itch3c4g
Plantilla de ejemplo de cheueo de s$itch por )%6P
objects$templates3c4g
Plantillas generales de host, contactos, y servicios
objects$timeperiods3c4g
Plantilla inicial para de#inir periodos de cheueos, au* 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#s3c4g
Plantilla de ejemplo de cheueo de euipos Aindo$s
services$
;ui vamos a de#inir los servicios ue usaremos en los cheueos. )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 cheueo, 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 /ej# en apac&e sobre %ebian
+++*data0, 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 &'@Ws 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 aCadir /o modi#icar
si ya existen0 las siguientes l*neas,
chec-IexternalIcomman)sR
comman)Ichec-IintervalR-
comman)IfileR/usr/local/nagios/var/r=/nagios.cm)
Lo ue har ue %agios active el cheueo 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.
6pache
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
Debian 8etc8apacheI8site-available y luego crear un lin1 simbolico a ese
arc&ivo dentro de 8etc8apacheI8site-enabled
"u"* 8etc8apacheI8vhosts.d
;rchivo de con#iguracin por de#ecto de %agios
6cript3lias /nagios/cgi-'in P/usr/local/nagios/s'inP
UFirectory P/usr/local/nagios/s'inPV
# 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 P&agios 3ccessP
3uth8ype ,asic
3uth9serCile /usr/local/nagios/etc/htpass=).users
:eBuire vali)-user
U/FirectoryV
3lias /nagios P/usr/local/nagios/shareP
UFirectory P/usr/local/nagios/sharePV
# 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 P&agios 3ccessP
3uth8ype ,asic
3uth9serCile /usr/local/nagios/etc/htpass=).users
:eBuire vali)-user
U/FirectoryV
Con4iguracin ""'
: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 -xS0H -out server.crt -)ays 36S
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$6RP-F 662P
; continuacin mostramos un archivo de con#iguracin de ;pache mas
elaborado con autenticacin por ;ctive:irectory
UGirtual5ost *#EE3V
662*ngine on
662CertificateCile /etc/apache!/ssl.crt/server.crt
662CertificateKeyCile /etc/apache!/ssl.-ey/server.-ey
6cript3lias /nagios/cgi-'in P/usr/local/nagios/s'inP
UFirectory P/usr/local/nagios/s'inPV
3uth8ype ,asic
3uth&ame P&agios 3ccessP
3uth2F3+*na'le) %n
3uth2F3+9:2 l)ap#//H!.6"..H#3"H/%9R9suarios(FCRtest(FCRcom(FCRarX
6am3ccount&ameXsu'X;Y;o'@ectClassRuser<
;mem'er%fRC&R4onitoreo(%9R8ech(%9R$rupos(FCRtest(FCRcom(FCRar<<
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
U/FirectoryV
3lias /nagios P/usr/local/nagios/shareP
UFirectory P/usr/local/nagios/sharePV
3uth8ype ,asic
3uth&ame P&agios 3ccessP
3uth2F3+*na'le) %n
3uth2F3+9:2 l)ap#//H!.6"..H#3"H/%9R9suarios(FCRtest(FCRcom(FCRarX
6am3ccount&ameXsu'X;Y;o'@ectClassRuser<
;mem'er%fRC&R4onitoreo(%9R8ech(%9R$rupos(FCRtest(FCRcom(FCRar<<
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
U/FirectoryV
-l usuario 4ind debe ser un usuario solo con privilegios necesarios para saber
ue usuarios existen /ver documentacin L:;P0, y su contraseCa 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 6uth'D6!&R', especi#icamos
@P del servidor de autenticacion
:% donde buscar
5(F(suarios,:&Ftest,:&Fcom,:&Far
Kue buscar, en este caso usuarios
object&lassFuser
Kue sean miembros del grupo 6onitoreo a su vez dentro del grupo >ech
member5#F&%F6onitoreo,5(F>ech,5(F'rupos,:&Ftest,:&Fcom,:&Far
-n caso de tener reuerimientos mas exhaustivos con respecto a la
autenticacin, como restringir el acceso por ip se puede agregar a cada campo
Y:irectoryE 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 ;uthB&;), 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 pauete debian. ;ntes deberemos tener instalados los pauetes
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 Q 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 Oli'apache!-mo)-auth-cas> in O../li'apache!-mo)-auth-
casI.0."-3Ii3"6.)e'>.
&on eso tenemos el pauete libapacheI-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.
Con4iguracin de *mail
Para el env*o de noti#icaciones por parte de %agios es necesario con#igurar un
6>; /;gente de >ransporte de &orreos0, por lo general suele estar previamente
con#igurado el )endmail en el caso de ue nos basemos en un &ent5), o un
Posti#x tratndose de un )u)- o :ebian.
-n caso de ue utilizemos el pauete de Post#ix disponible en la distribucin, y
debamos utilizar otro servidor saliente )6>P dentro de la red, deberemos
con#igurar el relayhost apuntando al servidor )6>P de la red local ej
OXI.OGL.O.OOH, uedando el archivo 8etc8post#ix8main.c# con las siguientes
entradas de con#iguracin.
BueueI)irectory R /var/spool/postfix
comman)I)irectory R /usr/s'in
)aemonI)irectory R /usr/li'/postfix
mailIo=ner R postfix
myhostname R nagios
my)omain R mi)ominio.net
inetIinterfaces R /myhostname
un-no=nIlocalIrecipientIre@ectIco)e R SS0
)e'ugIpeerIlevel R !
)e'uggerIcomman) R
+385R/'in#/usr/'in#/usr/local/'in#/usr/T:6/'in
xxg)' /)aemonI)irectory//processIname /processIi) Y sleep S
sen)mailIpath R /usr/s'in/sen)mail
ne=aliasesIpath R /usr/'in/ne=aliases
mailBIpath R /usr/'in/mailB
setgi)Igroup R mail)rop
htmlI)irectory R /usr/share/)oc/pac-ages/postfix/html
manpageI)irectory R /usr/share/man
sampleI)irectory R /usr/share/)oc/pac-ages/postfix/samples
rea)meI)irectory R /usr/share/)oc/pac-ages/postfix/:*3F4*IC.2*6
mailIspoolI)irectory R /var/mail
canonicalImaps R hash#/etc/postfix/canonical
virtualImaps R hash#/etc/postfix/virtual
relocate)Imaps R hash#/etc/postfix/relocate)
transportImaps R hash#/etc/postfix/transport
sen)erIcanonicalImaps R hash#/etc/postfix/sen)erIcanonical
masBuera)eIexceptions R root
masBuera)eIclasses R envelopeIsen)er( hea)erIsen)er( hea)erIrecipient
programI)irectory R /usr/li'/postfix
inetIinterfaces R H!.6"..E
masBuera)eI)omains R
my)estination R /myhostname( localhost./my)omain
)eferItransports R
)isa'leI)nsIloo-ups R no
relayhost R H!.6"..0
contentIfilter R
mail'oxIcomman) R
mail'oxItransport R
smtp)Isen)erIrestrictions R hash#/etc/postfix/access
smtp)IclientIrestrictions R
smtp)IheloIreBuire) R no
smtp)IheloIrestrictions R
strictIrfc"!Ienvelopes R no
smtp)IrecipientIrestrictions R permitImynet=or-s(re@ectIunauthI)estination
smtpIsaslIauthIena'le R no
smtp)IsaslIauthIena'le R no
smtp)IuseItls R no
smtpIuseItls R no
aliasImaps R hash#/etc/aliases
mail'oxIsizeIlimit R 0
messageIsizeIlimit R 0!E0000
)iendo los parmetros , inet;inter4aces la ip propia por cual salir, si tenemos
una sola placa de red, pondremos esa ip, relayhost es el &ost )ue nos
realizar el envo 6M<.
!N!%Nagios
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 simple
6e ejecutara el procesamiento de perfdata, por la ejecucion de cada comando#
nagios3c4g
ena'leIenvironmentImacrosR
serviceIperf)ataIcomman)Rprocess-service-perf)ata
hostIperf)ataIcomman)Rprocess-host-perf)ata
commands3c4g
)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!#
nagios3c4g
processIperformanceI)ataR
#
# service performance )ata
#
serviceIperf)ataIfileR/usr/local/nagios/var/service-perf)ata
serviceIperf)ataIfileItemplateRF3838?+*##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*CKC%443&F##/6*:G.C*C5*CKC%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)eRa
serviceIperf)ataIfileIprocessingIintervalRS
serviceIperf)ataIfileIprocessingIcomman)Rprocess-service-perf)ata-file
#
# host performance )ata starting =ith &agios 3.0
#
hostIperf)ataIfileR/usr/local/nagios/var/host-perf)ata
hostIperf)ataIfileItemplateRF3838?+*##5%68+*:CF383\t8.4*8##/8.4*8/\t5%68&34*##
/5%68&34*/\t5%68+*:CF383##/5%68+*:CF383/\t5%68C5*CKC%443&F##
/5%68C5*CKC%443&F/\t5%686838*##/5%686838*/\t5%686838*8?+*##
/5%686838*8?+*/\t5%68%98+98##/5%68%98+98/
hostIperf)ataIfileImo)eRa
hostIperf)ataIfileIprocessingIintervalRS
hostIperf)ataIfileIprocessingIcomman)Rprocess-host-perf)ata-file
Directivas
service;per4data;4ile
=uta al archivo temporal ue debe contener los datos de rendimiento.
service;per4data;4ile;template
Qormato del archivo temporal. Los datos se de#inen utilizando %agios
macros.
service;per4data;4ile;mode
5pcin !a" especi#ica ue los datos se insertan como anexo.
service;per4data;4ile;processing;interval
-l intervalo de procesamiento es de OT segundos
service;per4data;4ile;processing;command
-l comando ue habr de ejecutarse durante dicho intervalo.
commands3c4g
)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 reuerida.
.nter4a< #eb
Luego en el template ue vayamos a utilizar deberemos agregar estas
directivas ,
!ara los hosts
actionIurl /nagios/pnp/in)ex.phpXhostR/5%68&34*/
!ara los servicios
actionIurl /nagios/pnp/in)ex.phpXhostR/5%68&34*/YsrvR/6*:G.C*F*6C/
*n los clientes
Podemos elegir monitorear los clientes por medio del protocolo @&6P, )%6P o
de mecanismos como ver si tenemos x puerto abierto, o ciertos mensajes de
respuesta, aui se comentan los protocolos mas comunes para monitorear
estados de euipos /@&6P8)%6P0 o servicios /)%6P0.
.CM!
-l protocolo @&6P /7nternet Control Message rotocol0 puede ser considerado
como parte de la capa @P. La especi#icacin completa de este protocolo se
encuentra en =Q& JXI. ;unue sus mensajes son encapsulados en datagramas
@P como cualuier otro protocolo de capa superior, su uso corresponde a
mensajes especiales de la propia capa de red, aunue tambin pueden acceder
a l las propias aplicaciones /por ejemplo el programa ping0.
;lgunos ejemplos de uso de @&6P son, obtencin de mscaras de red /solicitud
y respuesta0, obtencin de marcas de tiempo /solicitud y respuesta0,
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.
6lgunas consultas .CM!
Los mensajes de uery incluyen tras la cabecera I bytes de identi#icacin, para
ue el cliente distinga las respuestas dirigidas a l de las dirigidas a otros
procesos, y I btes de n.mero de secuencia, para ue el cliente pueda
identi#icar UreuestsU con UreplaysU. La generacin de replys suele correr a cargo
del 7ernel /no es un proceso de usuario0. Los mensajes @&6P de UueryU ms
importantes son,
Peticin/respuesta de mscara, ;unue normalmente se usa :2&P,
tambin es posible para el host hacer una peticin durante el proceso de
arranue 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 Hh (>& />iempo &oordinado (niversal0. )e proveen tres campos, a parte
de los anteriormente citados para este tipo de mensajes. U6arca de tiempo
de generacinU, a rellenar por el emisor, y U6arca de tiempo de recepcinU, y
U6arca de tiempo de transmisinU, 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. >ras el arranue, 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 @&6P contiene unos datos 5P&@5%;L-) cuyo contenido es
irrelevante. 6uchos )5 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 reuest. -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 pauetes, cosa t*pica en la capa
@P sobre la ue se encapsulan los mensajes @&6P.
<eamos un ejemplo de la salida del programa ping.
M)eivi)@localhost [N/ ping ===.virtuamanager.com
+.&$ virtuamanager.com ;!3.HE.EH.""< S6;"E< 'ytes of )ata.
6E 'ytes from virtuamanager.com ;!3.HE.EH.""<# icmpIseBR ttlRS6 timeRE!.6
ms
6E 'ytes from virtuamanager.com ;!3.HE.EH.""<# icmpIseBR! ttlRS6 timeRE."
ms
6E 'ytes from virtuamanager.com ;!3.HE.EH.""<# icmpIseBR3 ttlRS6 timeRE.6
ms
6E 'ytes from virtuamanager.com ;!3.HE.EH.""<# icmpIseBRE ttlRS6 timeRE3.J
ms
6E 'ytes from virtuamanager.com ;!3.HE.EH.""<# icmpIseBRS ttlRS6 timeRE!.J
ms
6E 'ytes from virtuamanager.com ;!3.HE.EH.""<# icmpIseBR6 ttlRS6 timeRE!.!
ms
6E 'ytes from virtuamanager.com ;!3.HE.EH.""<# icmpIseBRJ ttlRS6 timeRE6.!
ms
--- virtuamanager.com ping statistics ---
J pac-ets transmitte)( J receive)( 0Z pac-et loss( time 600Sms
rtt min/avg/max/m)ev R E.666/E3.03"/E6.!J0/.EJJ ms
6',&NO" .CM!=" D* *RROR
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 L 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 /puerto,
host, red inalcanzable, necesidad de #ragmentar con bit :Q activadoZ0. La
#orma de comunicar este error a la capa superior es copiando la cabecera @P
en el propio mensaje de error. 'racias al campo UprotocoloU el mdulo @&6P
ue lo reciba sabr asociarlo con el protocolo adecuado. )upongamos ue se
produce un Uport unreachableU 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 L bytes adicionales, ue pertenecern a la
cabecera (:P. -stos contendrn los puertos origen y destino /ver tema (:P0.
-l puerto de origen puede servir para asociar el error con un determinado
proceso de usuario /ej. puerto IXIS asociado a un cliente t#tp0, mientras ue
el destino nos indica u puerto origin el error Uport unreachableU.
5tro ejemplo, al intentar hacer ping al otro euipo de la red, ue est apagado,
se obtiene lo siguiente,
M)eivi)@localhost [N/ ping H!.6"..!
+.&$ H!.6"..! ;H!.6"..!< S6;"E< 'ytes of )ata.
Crom H!.6"..00 icmpIseBR! Festination 5ost 9nreacha'le
Crom H!.6"..00 icmpIseBR3 Festination 5ost 9nreacha'le
Crom H!.6"..00 icmpIseBRE Festination 5ost 9nreacha'le
Crom H!.6"..00 icmpIseBR6 Festination 5ost 9nreacha'le
Crom H!.6"..00 icmpIseBRJ Festination 5ost 9nreacha'le
Crom H!.6"..00 icmpIseBR" Festination 5ost 9nreacha'le
--- H!.6"..! ping statistics ---
H pac-ets transmitte)( 0 receive)( L6 errors( 00Z pac-et loss( time "00!ms
( pipe 3
)e han producido mensajes @&6P de error en respuesta a mensajes @&6P 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
pauetes 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 @&6P 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 pauete. -sto puede ocurrir porue el
campo >>L del datagrama se haya puesto a H en un router, o bien el tiempo
de reensamblado de #ragmentos se haya cumplido en el destino. 4asndose
en este mensaje, y variando el campo >>L de un mensaje de peticin de eco
es posible obtener la ruta a un destino. )i el >>L es insu#iciente, se recibir
un mensaje de tiempo excedido por cada router donde al recalcular el >>L
valga H, y un mensaje de respuesta de eco cuando el >>L sea su#iciente para
llegar al destino. -l comando tracert de $indo$s se basa en este algoritmo.
"NM! >"imple Net#or+ Management !rotocol?
Protocolo )imple de ;dministracin de =ed o )%6P 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 >&P8@P. )%6P permite a
los administradores supervisar el desempeCo de la red, buscar y resolver sus
problemas, y planear su crecimiento. Podemos conocer datos internos de
dispositivos a monitorear, ej uso de &P(, 6emoria, :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,
"NM!, -s el protocolo entre el gestor y el elemento de red, se suele utilizar
(:P
"M., /)tructure o# 6anagement @n#ormation0, conjunto de estructuras y
esuemas de identi#icacin para de#inir las 6@4[s
M.), /6anagement @n#ormation 4ase0, especi#ica u variables mantienen los
elementos de la red /agentes0
"M. >"tructure o4 Management .n4ormation?
)6@ es el conjunto de estructuras y esuemas para de#inir elementos de las
6@4. :ichas estructuras estn #ormateadas en ;)%.O /;bstract )ynstax
%otation 5ne0, 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 )6@ consta de los siguientes campos,
5bjeto, Literal /5bject descriptor0 con la etiueta ue identi#ica el objeto
)intaxis, Puede ser alguno de los siguientes tipos ;)%.O,
)imple)yntax /@%>-'-=, 5&>-> )>=@%', 543-&> @:-%>@Q@-=, %(LL0
;pplication)yntax /%et$or7;ddress /direcciones ip de ?I bits0, &ounter
/enteros no negativos de tamaCo ?Ibits0, 'auge /contadores ue
mantienen el maximo valor alcanzado, pueden decrementarse en algun
momento0, >ime>ic7s /centsimas de segundo desde el evento deseado0,
5paue /in#ormacin arbitraria00
5tros tipos /=Q& OOTT0.
;cceso, Puede ser, read-only, read-$rite, $rite-only, not-acessible. )6@vI
incluye adems read-create, y deja de usar $rite-only
)tatus, Puede ser, mandatory /en )6@vI se indica como current0, ue tienen
ue ser implementadas por cualuier versin de la 6@4 ue incluya ese
modulo, optional, ue pueden #altar sin ue eso cause ning.n problema / en
vez de optional, )6@vI incluye deprecated, para objetos ue ya no se usan, y
ue por tanto, no tienen por u estar implementados0, 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 6@4.
La de#inicin termina indicando bajo u nodo del rbol de 5@:s /ver la
siguiente seccin0 debe situarse y con u n.mero a e#ectos de identi#icacin
M.)@ >Management .n4ormation )ase?
La in#ormacin reuerida de un sistema se almacena en las 6@4s usando una
estructura jerruica ue contiene los identi#icadores de objeto descritos
mediante ;)%.O.
-sta jeraru*a de rbol contiene los elementos ue pueden ser de tipo escalar o
tablas de datos. -stos objetos cuelgan en el rbol de la 6@4 de la rama
correspondiente a la organizacin ue mantiene dicha estructura. )e nombra a
los ejemplares de la 6@4 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 /O.?.G.O.I.O.S.0
-sta es la estructura de la 6@4-@@ /=Q& OIO?0 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
arranue, 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 >>L, n.mero de datagramas
recibidos y enviados, errores, datagramas con protocolo no vlido, etc.
'rupo icmp, cuatro contadores generales, n.mero total de mensajes @&6P de
entrada y salida con o sin errores y II contadores para los di#erentes
mensajes @&6P
'rupo tcp, ;lgoritmo de retransmisin, timeout en milisegundos, n.mero de
conexiones >&P, n.mero de transiciones entre los di#erentes estados de >&P,
n.mero de segmentos recibidos y enviados, n.mero de segmentos
retransmitidos, con error y con el #lag =)> 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.
-uncionamiento del protocolo
&omo sigue el paradigma gestor-agente la los comandos son para solicitar,
modi#icar o devolver in#ormacin de la 6@4, as* como env*ar noti#icaciones
/traps0. Las operaciones disponibles en )%6PvO son,
'et-reuest , )olicitar el valor de una o varias variables
'et-next-reuest , )olicitar el valor de la siguiente variable o grupo de
variables. )e utiliza para recorrer tablas, celda a celda.
)et-reuest , :ar valor a una variable
'et-response , :evolver el valor de una o varias variables
>rap , -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 I se introdujo la operacin de get-bul7-
reuest, ue permite realizar varios get-next seguidos sin tener ue hacer
varias peticiones. >ambin se introdujo la operacin de in#orm, para ue
distintos gestores puedan intercambiarse noti#icaciones.
"NM!v7
-jemplo de con#iguracin )%6Pv? 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 PP any noauth exact systemvie= none none
access notConfig$roup PP 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 OXI.OGL.O.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 contraseCa.
"NM!v1
&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 6:T y :-)
-jemplo de con#iguracin )%6Pv? para un sistema t*pico Linux8(%@R8;@R8)olaris
etc
rouser nagios auth
create9ser nagios 4FS PClaG3:fs8tF!P F*6
:ebemos reiniciar el servicio )%6P 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
%5>;, -n :ebian deberemos editar el archivo "etc"default"snmpd, modi#icando
la siguiente linea
:e,
6&4+F%+86R>-2s) -2f /)ev/null -u snmp -. -smux -p /var/run/snmp).pi) !J.0.0.>
; ,
6&4+F%+86R>-2s) -2f /)ev/null -u snmp -. -smux -p /var/run/snmp).pi)>
Para ue el servicio se accesible por red.
"NM!v7 en Aindo#s
-n los euipos Aindo$s se con#igurara una community =5 /read only0
denominada public, acceso para la ip ue corresponda al servidor ue tiene
acceso al )%6P, 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 2erramientas de administracin y
supervisin o 6anagement and 6onitoring tools
:entro de ella nos situamos sobre la opcion )%6P y la tildamos
Luego en la ;dministracin de )ervicios, nos dirigiremos a las propiedades del
servicio )%6P
:entro de ella nos encontraremos con un cuadro de dialogo
&on#iguraremos el accesso a la ip del servidor con acceso )%6P
9 luego la comunidad de aceso a los datos )%6P
Luego de realizados los cambios de con#iguracin procederemos a reiniciar el
servicio para ue estos surtan e#ecto.
; veces en Aindo$s es necesario con#igurar el servicio de Qire$all para
permitir las consultas por medio )%6P.
*n 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)irR/usr/local/nagios/etc/hostgroups
# Firectorio con la configuraci]n )e grupos )e servicios )e los 6ervi)ores
cfgI)irR/usr/local/nagios/etc/servicegroup
# Firectorio con la configuraci]n )e contactos
cfgI)irR/usr/local/nagios/etc/contacts
# Firectorio con la configuraci]n )e grupos )e contacto
cfgI)irR/usr/local/nagios/etc/contactgroups
# Firectorio con la configuraci]n )e servicios
cfgI)irR/usr/local/nagios/etc/services
# Firectorio con la configuraci]n )e los coman)os
cfgI)irR/usr/local/nagios/etc/comman)s
# Firectorio con la configuraci]n )e los eBuipos a monitorear
cfgI)irR/usr/local/nagios/etc/servers
&on la directiva c#gBdir el indicamos %agios ue tome como con#iguracin los
archivos con extencion !c#g" encontrados en tal directorio.
Con4iguracin de alertas
6gregando ,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;name
%ombre ue se le asignara al grupo de contacto
alias
:escripcin corta para identi#icar al grupo
members
6iembros del grupo separados por comas
6e deber crear el arc&ivo Hnagios*dirI"etc"contactgroups"
Hnombregrupodecontacto#cfgI con las entradas correspondientes
anteriormente e(plicadas#
6gregando 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;name
%ombre literal a asignarle al contacto
alias
;lias descriptivo del contacto, ej ;dministrador de =outers
contactgroups
'rupos de contactos a los cuales pertenece
service;noti4ication;period
Periodo de tiempo en el cual recibir noti#icaciones sobre el estado de los
servicios
host;noti4ication;period
Periodo de tiempo en el cual recibir noti#icaciones sobre el estado de los hosts
service;noti4ication;options
5pciones de cuando realizar una noti#icacin sobre el estado de un servicio
host;noti4ication;options
5pciones de cuando realizar una noti#icacin sobre el estado de un host
service;noti4ication;commands
&omando para realizar la noti#icacin del estado del servicio, podemos de#inir
m.ltiples comandos
host;noti4ication;commands
&omando para realizar la noti#icacion del estado del host, podemos de#inir
m.ltiples comandos
email
-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#
6lertas en 4ormato :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 ,

6lertas por "M"
Podemos con#igurar alertas )6) de #orma muy simple con el so#t$are 'no7ii.
-jemplo de archivo de con#iguracin de 'no7ii
allo=I'rea-age R 0
'in)ir R /usr/local/s'in/
connection R serial
connection R serial
MconnectIscriptN
)e'ug R on
M)isconnectIscriptN
Mfa-eI)riverN
MflagsN
Mglo'alN
Mgno-iiN
Mgno-ii)N
initlength R )efault
MloggingN
mo)el R 38
mo)el R fa-e
MphoneIfa-eN
port R /)ev/tty96,3
port R foo'ar
rlp)e'ug R off
serialI'au)rate R H!00
smscItimeout R 0
smsIin'ox R /tmp/sms
8*2*+5%&* R !3ES6J"
useIloc-ing R yes
x)e'ug R off
Mxgno-iiN
6odo de uso ,
echo B:ola mundoC D sudo gno+ii Esendsms 7788FFGGHI
:e#inicin como comando de noti#icacin, /podemos 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 sms0.
%otemos ue lo ejecutamos por ssh, es para una situacin hipottica de ue el
modem ()4 ?' de nuestro proovedor de tele#on*a celular este enchu#ado en
otra mauina de nuestra red.
)efine comman) 0
comman)Iname host-notify-'y-sms
comman)Iline ssh nagios@0.S.HH. Pecho P5ost >/5%68&34*/> esta
/5%686838*/ /5%68%98+98/P Q su)o gno-ii --sen)sms /C%&83C8+3$*:/P
1
)efine comman) 0
comman)Iname service-notify-'y-sms
comman)Iline ssh nagios@0.S.HH. Pecho >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/> Q su)o
gno-ii --sen)sms /C%&83C8+3$*:/P
1
6gregando Comandos
-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
cheueo, los primeros son utilizados para algunos casos en particular.
Los comandos de cheueo no traen datos de los euipos a monitorear, como
consumo de &P(, 6emoria, :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
command;name
-l nombre ue el comando tendra para nuestra con#iguracin personal de
%agios
command;line
6odo 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,
J&"*R7J , &ontiene datos del path de ejecucin de los plugins de %agios
J:O"6DDR*""J , >iene la @P de hosts desde el cual se esta corriendo el
servicio
J6R,7J J6R,(J J6R,1J J6R,%J , )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#
6gregando ,rupos de "ervicios
Los grupos de servicio se utilizan para denotar un variedad de servicios sobre
otros, debemos tener asignado aunue sea un servicio a ese grupo por ue si
no de lo contrario el %agios mostrara un error al arranue, 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.
6gregando "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 S
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 contacto1W
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
>emplate de servicio a utilizar
host;name
%ombre del o los host a los cuales esta asignado dicho servicio
hostgroup;name
%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
ma2;chec+;attempts
6axima cantidad de cheueos a e#ectuar por %agios, antes de enviar un 5N
como resultado
normal;chec+;interval
@ntervalo de tiempo antes de programar un nuevo cheueo del servicio
retry;chec+;interval
@ntervalo de tiempo antes de realizar un re-cheueo del servicio
noti4ication;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
intervalBlength del valor pre#ijado de GH, este n.mero signi#icar minutos. )i
este valor se establece a H, %agios re-no noti#icar contactos sobre los
problemas para este host - solamente una noti#icacin del problema ser
enviada.
noti4ication;period
Periodo de tiempo en el cualse envia noti#icacion y noti#icacion
noti4ication;options
-sta directiva indica a %agios en ue momentos debe enviar noti#icaciones de
estado
d F :5A% cuando el host esta caido
u F (%=-;&2;4L- cuando el host no es visible o es inalcanzable
r F =-&5<-=9 /5N0 cuando el host se recupero
# F QL;PP@%' cuando es de estado cambiante
n F %5%- no enviar noti#icaciones
chec+;command
&omando para e#ectuar el cheueo de dicho servicio
6e deber crear el arc&ivo Hnagios*dirI"etc"services"Hnombreservicio#cfgI con
las entradas correspondientes anteriormente e(plicadas#
Dependencia 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
host;name
%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;host;name
2ost 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;4ailure;criteria
&riterios para de#inir el estado del servicio
noti4ication;4ailure;criteria
-n base a ue estado realizar las noti#icaciones, si esta caido, si esta o7 o no
realizar noti#icaciones
.n4ormacion 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.plXhostRlinux!YserviceRCargaL6istema
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
host;name
2ost 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;image
@cono a re#erenciar el lin7 de la in#ormacin extra
icon;image;alt
>exto alternativo del icono
6gregando ,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 5racle y por otro los servidores Lotus, o Linux y Aindo$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
hostgroup;name
%ombre del grupo de hosts
alias
;lias descriptivo del grupo
members
2ost ue son miembros del grupo, debemos ingresar el hostBname 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#
6gregando :osts
Para con#igurar un host con o sin )%6P 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 linuxW
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 contacto1W
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
>emplate de host a utilizar
host;name
%ombre del host
hostgroup;name
'rupos a los ue pertenece este host
address
:ireccion @P del host
parents
2ost del ue depende y ue esta delante suyo, por ejemplo puede ser un
router o un euipo 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
ma2;chec+;attempts
6axima cantidad de cheueos a e#ectuar por %agios, antes de enviar un 5N
como resultado
noti4ication;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
intervalBlength del valor pre#ijado de GH, este n.mero signi#icar minutos. )i
este valor se establece a H, %agios re-no noti#icar contactos sobre los
problemas para este host - solamente una noti#icacin del problema ser
enviada.
noti4ication;period
Periodo de tiempo en el cualse envia noti#icacion y noti#icacion
noti4ication;options
-sta directiva indica a %agios en ue momentos debe enviar noti#icaciones de
estado
d F :5A% cuando el host esta caido
u F (%=-;&2;4L- cuando el host no es visible o es inalcanzable
r F =-&5<-=9 /5N0 cuando el host se recupero
# F QL;PP@%' cuando es de estado cambiante
n F %5%- 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,
.n4ormacion e2tendida de host
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 I: como el ?:
)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
host;name
%ombre del host al cual corresponde la in#ormacin dada
notes
PeueCa nota descriptiva de la in#ormacion del host a presentar en los mapas
de estado
icon;image
@cono a visualizar en el entorno html de la consola %agios
icon;image;alt
>exto alternativo para mostrar al logo
vrml;image
@cono a visualizar en el mapa ?:
statusmap;image
@cono a visualizar en el mapa I:
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 gdI /necesario para la
generacion del gra#ico de statusmap I:0 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 gdI, el parametro O se re#iere a ue
la cree en #ormato ra$ /crudo0, y el segudo parametro es para ue lo cree sin
compresion, todo esto se realiza dentro del directorio logos anteriormente
explciado.
Dependencia del estado de host por el estado de otro host
-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
host;name
%ombre del host al cual corresponde la in#ormacin dada
dependent;host;name
%ombre del host del cual depende
noti4ication;4ailure;criteria
5pciones 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#
De4iniendo tiempos de chequeo
: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 cheuee en ciertos
intervalos de tiempo, por ejemplo si un host no debe ser cheueado los
domingos o un servicio debe ser cheueado solo de lunes a viernes de HL,HH
2) a OL,HH 2) etc
; su ves las de#iniciones >imeperod 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 /en orden descendente0 es el siguiente,
Qecha del calendario /IHHL-HO-HO0
6es espec*#ico #echa /O de enero0
6es d*a genricos /:*a OT0
&ompensar los d*as de la semana de mes espec*#ico /I _ martes de
diciembre0
&ompensar los d*as de la semana /? _ lunes0
%ormal del d*a de la semana /martes0
-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 W &e= ?ears
mon)ay - may 00#00-00#00 W 4emorial Fay ;last 4on)ay in
4ay<
@uly E 00#00-00#00 W .n)epen)ence Fay
mon)ay septem'er 00#00-00#00 W 2a'or Fay ;first 4on)ay in
6eptem'er<
thurs)ay - novem'er 00#00-00#00 W 8han-sgiving ;last 8hurs)ay in
&ovem'er<
)ecem'er !S 00#00-00#00 W 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 W 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 W &e= ?ear>s Fay
!00"-03-!3 00#00-!E#00 W *aster ;!00"<
!00H-0E-! 00#00-!E#00 W *aster ;!00H<
mon)ay - may 00#00-!E#00 W 4emorial Fay ;2ast 4on)ay in 4ay<
@uly E 00#00-!E#00 W .n)epen)ence Fay
mon)ay septem'er 00#00-!E#00 W 2a'or Fay ;st 4on)ay in
6eptem'er<
thurs)ay E novem'er 00#00-!E#00 W 8han-sgiving ;Eth 8hurs)ay in
&ovem'er<
)ecem'er !S 00#00-!E#00 W Christmas
)ecem'er 3 J#00-!E#00 W &e= ?ear>s *ve ;Spm 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 W .nclu)e =ee-)ays
exclu)e holi)ays W *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 W *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
!rogramando plugins
:esarrollar plugins de cheueos 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 cheuear y conocer los indicadores
ue nos mostraran si deberemos expresarlos como un 5N, un A;=%@%' o un
&=@>@&;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.
*2it status *stado de
"ervicio
*stado de :ost Descripcion
H 5N (P -l plugin es capaz
de veri#icar el
servicio y ue
parece estar
#uncionando
correctamente
O A;=%@%' (P8:5A%8(%=-;&2;4L- -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
I &=@>@&;L :5A%8(%=-;&2;4L- -l plugin detecta
ue o bien el
servicio no
#unciona o ue
est por encima de
un umbral !cr*tico"
? (%N%5A% :5A%8(%=-;&2;4L- ;rgumentos de
l*nea de comandos
no vlida o #allas
internas del plugin
/por ejemplo error
en un soc7et o
dns0 ue le
impiden realizar
las operaciones
especi#icadas
69adir nuestro plugin
Para aCadir nuestro plugin a %agios
:eberemos copiar nuestro ejecutable /ya sea script o binario0 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
cheueo.
Notas sobre el desarrollo de plugins
%o ejecutar comandos del sistema, sin especi#icar su ruta de acceso
completa.
(tilice spopen /0 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 engaCar 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
Re4erencias sobre el desarrollo de plugins
http,88nagios.source#orge.net8docs8?BH8pluginapi.html
http,88nagiosplug.source#orge.net8developer-guidelines.html
*jemplo de desarrollo paso a paso
!lugin consultando "NM!
:ado el caso ue ueramos obtener in#ormacin interna de determinado 2ost
y necesitemos ue este disponible para consultarla por )%6P, 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$snmp$snmpd3con4
syslocation 9n-no=n ;configure /etc/snmp/snmp).local.conf<
syscontact :oot Uroot@localhostV ;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 4FS consultorsnmp!3
Luego podemos ver los resultados obtenidos realizando una consulta )%6P a
!C%*6$M*M7M??e(t<able o #E#3#@#E#J#E#0A0E#F, obteniendo resultados similares
a ,
snmp#al+ 0v 1 0l authNo!riv 0a MD8 0u consultorsnmp 06
consultorsnmp7(1 7(G3K3K37 &CD0"NM!0M.)@@e2table`
9CF-6&4+-4.,##ext.n)ex. R .&8*$*:#
9CF-6&4+-4.,##ext.n)ex.! R .&8*$*:# !
9CF-6&4+-4.,##ext.n)ex.3 R .&8*$*:# 3
9CF-6&4+-4.,##ext.n)ex.E R .&8*$*:# E
9CF-6&4+-4.,##ext&ames. R 68:.&$# coman)o
9CF-6&4+-4.,##ext&ames.! R 68:.&$# coman)o!
9CF-6&4+-4.,##ext&ames.3 R 68:.&$# coman)o3
9CF-6&4+-4.,##ext&ames.E R 68:.&$# coman)oE
9CF-6&4+-4.,##extComman). R 68:.&$# /'in/coman)o
9CF-6&4+-4.,##extComman).! R 68:.&$# /'in/coman)o!
9CF-6&4+-4.,##extComman).3 R 68:.&$# /'in/coman)o3
9CF-6&4+-4.,##extComman).E R 68:.&$# /'in/coman)oE
9CF-6&4+-4.,##ext:esult. R .&8*$*:# 0
9CF-6&4+-4.,##ext:esult.! R .&8*$*:# 0
9CF-6&4+-4.,##ext:esult.3 R .&8*$*:# 0
9CF-6&4+-4.,##ext:esult.E R .&8*$*:# 0
9CF-6&4+-4.,##ext%utput. R 68:.&$# sali)a-coman)o
9CF-6&4+-4.,##ext%utput.! R 68:.&$# sali)a-coman)o
9CF-6&4+-4.,##ext%utput.3 R 68:.&$# sali)a-coman)o
9CF-6&4+-4.,##ext%utput.E R 68:.&$# sali)a-coman)o
9CF-6&4+-4.,##ext*rrCix. R .&8*$*:# 0
9CF-6&4+-4.,##ext*rrCix.! R .&8*$*:# 0
9CF-6&4+-4.,##ext*rrCix.3 R .&8*$*:# 0
9CF-6&4+-4.,##ext*rrCix.E R .&8*$*:# 0
9CF-6&4+-4.,##ext*rrCixCm). R 68:.&$#
9CF-6&4+-4.,##ext*rrCixCm).! R 68:.&$#
9CF-6&4+-4.,##ext*rrCixCm).3 R 68:.&$#
9CF-6&4+-4.,##ext*rrCixCm).E R 68:.&$#
=amas )%6P ,
(&:-)%6P-6@4,,ext%ames
-n esta rama obtendremos el nombre ue le hemos asignado a dicho
comando
(&:-)%6P-6@4,,ext&ommand
-sta rama nos devolvera la ruta completa al ejecutable del comando
(&:-)%6P-6@4,,ext=esult
%os devolvera el resultado de la ejecucion del comando #ue exitosa o no,
devolviendonos su e(it status
(&:-)%6P-6@4,,ext5utput
;ui obtendremos la salida del comando con el string o expresion ue
necesitemos conocer
Re4erencias sobre consultas "NM! a la tabla &CD
http,88net-snmp.source#orge.net8docs8mibs8ucdavis.html
*jemplo de consulta "NM! con !erl por medio de Net@@"NM!
-jemplo simple de como consultar una variable )%6PvO.
#A/usr/local/'in/perl
use strictW
use =arningsW
use &et##6&4+W
my /%.FIsys9p8ime R >.3.6..!...3.0>W
my ;/session( /error< R &et##6&4+-Vsession;
-hostname RV shift QQ >!J.0.0.>(
-community RV shift QQ >pu'lic>(
<W
if ;A)efine) /session< 0
printf P*::%:# Zs.\nP( /errorW
exit W
1
my /result R /session-VgetIreBuest;-var'in)list RV M /%.FIsys9p8ime N(<W
if ;A)efine) /result< 0
printf P*::%:# Zs.\nP( /session-Verror;<W
/session-Vclose;<W
exit W
1
printf P8he sys9p8ime for host >Zs> is Zs.\nP(
/session-Vhostname;<( /result-V0/%.FIsys9p8ime1W
/session-Vclose;<W
exit 0W
-jemplo simple de como consultar una variable )%6Pv?, igualmente se pueden
consultar mas de una variable por sesion. -n este caso estamos consultado la
variable ext5utput.O para ver la salida del primer comando.
#A/usr/'in/perl
use &et##6&4+W
/oi) R P..3.6..E..!0!."..0.PW
/snmpv3Iusername R PconsultorsnmpPW # 6&4+v3 username
/snmpv3Ipass=or) R Pconsultorsnmp!3PW # 6&4+v3 pass=or)
/snmpv3Iauthprotocol R Pm)SPW # 6&4+v3 hash algorithm ;m)S / sha<
/snmpv3Iprivpass=or) R PPW # 6&4+v3 hash algorithm ;m)S / sha<
/snmpv3Iprivprotocol R P)esPW # 6&4+v3 encryption protocol ;)es / aes /
aes!"<
/version R P3PW
/timeout R P!PW
/hostname R P!J.0.0.PW
# Crear la sesion 6&4+
;/s( /e< R &et##6&4+-Vsession;
-username RV /snmpv3Iusername(
-authpass=or) RV /snmpv3Ipass=or)(
-authprotocol RV /snmpv3Iauthprotocol(
-hostname RV /hostname(
-version RV /version(
-timeout RV /timeout(
<W
if ;/s<0
1 else 0
print PC:.8.C32 - *l agente no respon)e( 6&4+ v3 ;/e<\nPW
exit;!<W
1
/s-VgetIreBuest;/oi)<W
foreach ;/s-VvarI'in)Inames;<< 0
/oi)Iconsulta R /s-VvarI'in)Ilist;<-V0/I1W
1
/s-Vclose;<W
print /oi)IconsultaW
!lugin consultando My"Q'
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 6y)KL
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)RnagiosIhostgroupImem'ers.hostgroupIi)
3&F
nagiosIhostgroupImem'ers.hostIo'@ectIi)RnagiosIhosts.hostIo'@ectIi)
3&F
nagiosIhostgroups.hostgroupIo'@ectIi)RnagiosIo'@ects.o'@ectIi)
3&F
nagiosIo'@ects.name R >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)RnagiosIinstances.instanceIi)
3&F
nagiosIservicestatus.serviceIo'@ectIi)RnagiosIservices.serviceIo'@ectIi)
3&F
nagiosIservicestatus.serviceIo'@ectIi)RnagiosIo'@ects.o'@ectIi)
3&F
nagiosIo'@ects.name! R >0servicioIaIconsultar1>
3&F
nagiosIservices.configItypeR>>
3&F
nagiosIo'@ects.name R >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)RnagiosIo'@ects.o'@ectIi)
3&F
nagiosIhoststatus.hostIo'@ectIi)RnagiosIhosts.hostIo'@ectIi)
3&F
nagiosIhosts.instanceIi)RnagiosIinstances.instanceIi)
3&F
nagiosIhosts.configItypeR>>
3&F
nagiosIhosts.)isplayIname R >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)RnagiosIservicegroupImem'ers.servicegroupIi)
.&&*: _%.& nagiosIservices %&

nagiosIservicegroupImem'ers.serviceIo'@ectIi)RnagiosIservices.serviceIo'@ectIi)
.&&*: _%.& nagiosIo'@ects as o'@ %&
nagiosIservicegroups.servicegroupIo'@ectIi)Ro'@.o'@ectIi)
.&&*: _%.& nagiosIo'@ects as o'@! %&
nagiosIservicegroupImem'ers.serviceIo'@ectIi)Ro'@!.o'@ectIi)
.&&*: _%.& nagiosIinstances %&
nagiosIservicegroups.instanceIi)RnagiosIinstances.instanceIi)
75*:* nagiosIservicegroups.alias R>0aliasIserviceIgroup1>
3&F nagiosIservices.)isplayIname R>0aliasI)eIservicio1>
Para conocer los estados de los hosts
6*2*C8 nagiosIhosts.)isplayIname(nagiosIhoststatus.currentIstate
C:%4 nagiosIhoststatus(nagiosIhosts
75*:* nagiosIhoststatus.hostIo'@ectIi) R nagiosIhosts.hostIo'@ectIi)W
=esultando en una tabla como esta
display;name current;state
#ire$all H
apache O
servidor-sl H
sap-db H
Para conocer el estado de un servicio, independientemente de los hosts en los
ue se encuentre disponible
-n este caso el servicio :!
6*2*C8 o'@.name 36 hostIname(
nagiosIservices.serviceIo'@ectIi)(
o'@.name! 36 serviceI)escription(
nagiosIservicestatus.currentIstate
C:%4 OnagiosIservicestatusO
2*C8 _%.& nagiosIo'@ects 36 o'@ %& nagiosIservicestatus.serviceIo'@ectIi) R
o'@.o'@ectIi)
2*C8 _%.& nagiosIservices %& nagiosIservicestatus.serviceIo'@ectIi) R
nagiosIservices.serviceIo'@ectIi)
2*C8 _%.& nagiosIinstances %& nagiosIservices.instanceIi) R
nagiosIinstances.instanceIi)
75*:* nagiosIservices.configItype R >>
3&F o'@.name! R >588+>
=esultando en una tabla como esta
host;name service;object;id service;descripti
on
current;state
concentradorBmpls OL 2>>P H
router-vpn I? 2>>P O
central IL 2>>P I
router-ST ?? 2>>P H
&onsulta simple para obtener un pantallazo general del estado de servicios de
un hostgroup
6*2*C8
C36* st.currentIstate
75*& 0 85*& >%K>
75*& 85*& >73:&.&$>
75*& ! 85*& >C:.8.C32>
75*& 3 85*& >9&K&%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) R s.hostIo'@ectIi)
3&F s.serviceIo'@ectIi) R st.serviceIo'@ectIi)
3&F hostgroupIi) .&
;
6*2*C8 hostgroupIi)
C:%4 nagiosIhostgroups hg( nagiosIo'@ects o
75*:* hg.hostgroupIo'@ectIi) R o.o'@ectIi)
3&F o.name R >0nom'reIhostgroup1>
<
$:%9+ ,? st.currentIstateW
=esultando en una tabla como esta
states number
5N OJTS
A;=%@%' O?
&=@>@&;L LS
(%N%5A% IH
&onsulta simple para obtener un conteo general de los estados generales
ordenados por meses de un aCo determinado.
6*2*C8
C%&C38;>>(F38*IC%:438;nagiosIstatehistory.stateItime(>Z4><< 36 8*4+6(
*28;nagiosIstatehistory.stateL(>%K>(>73:&.&$>(>C:.8.C32>(>9&K&%7&>< 36 *838(
C%&C38;>>(C%9&8;nagiosIstatehistory.state<< 36 D93&8.8*
C:%4
OnagiosIstatehistoryO
2*C8 _%.& nagiosIo'@ects 36 o'@ %&
nagiosIstatehistory.o'@ectIi)Ro'@.o'@ectIi)
2*C8 _%.& nagiosIinstances %&
nagiosIstatehistory.instanceIi)RnagiosIinstances.instanceIi)
75*:*
o'@.o'@ecttypeIi)R>!>
3&F nagiosIstatehistory.stateItype R
3&F F38*IC%:438;nagiosIstatehistory.stateItime(>Z?>< R !00
$:%9+ ,?
8*4+6( *838
%:F*: ,?
F38*IC%:438;nagiosIstatehistory.stateItime(>Zm><(nagiosIstatehistory.state
=esultando en una tabla como esta
*M!" *6 Q&6N.*
%ovember 5N OJTS
%ovember A;=%@%' O?
%ovember &=@>@&;L LS
%ovember (%N%5A% IH
>rigger para guardar el .ltimo estado de los objetos
%agios no guarda en ninguna tabla de 6y)KL el .ltimo estado de los objetos,
pero guarda los cambios de estado en la tabla nagiosBstatehistory. Para
mantener el .ltimo estado se puede usar un trigger,
create ta'le lastIstate ;o'@ectIi) int;<( state int;6<<W
create trigger lastIstate after insert on nagiosIstatehistory
for each ro=
'egin
if ne=.stateIchange R then
up)ate lastIstate set state R ne=.state =here o'@ectIi) ne=.o'@ectIi)W
en) ifW
en)W//
-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<W
Luego estas consultas podemos integrarlas en P2P o Perl, y obtener resultados
ue necesitemos para re#lejarlos en un visor $eb, o en los resultados de un
plugin.
NO6@ @mportante el modulo mysl de P2P no soporta la consulta a los
P=5&-:(=- de 6y)KL, para ello deberemos utilizar el modulo mysli de P2P,
otra cosa tambien importante es ue mysli 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=5&-:(=- se
almacene en una tabla temporal y realizar una consulta simple desde ahi.
Correlacin 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 4itcora
centralizada de eventos del sistema /)9)L5'0.
"istema de loggueo centrali<ado
)e tiene la necesidad de un sistema ue reciba y almacenes archivos de
registros determinados de n` servidores. Kue 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,
aunue puede contener cualuier in#ormacin. 3unto con cada mensaje se
incluye la #echa y hora del env*o.
-s .til registrar, por ejemplo,
(n intento de acceso con contraseCa euivocada
(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
>ambin es posible registrar el #uncionamiento normal de los programas+ por
ejemplo, guardar cada acceso ue se hace a un servidor $eb, aunue 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 /demonio de syslog0. -l cliente
env*a un peueCo mensaje de texto /de menos de OHIS bytes0.
Los mensajes de syslog se suelen enviar v*a (:P, por el puerto TOS, en #ormato
de texto plano. ;lgunas implementaciones del servidor, como syslog-ng,
permiten usar >&P en vez de (:P, y tambin o#recen )tunnel para ue los
datos viajen ci#rados mediante ))L8>L).
,eneralidades de un sistema de log3
: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. 5riginalmente escrito para (nix, se convirti en un standard ue se
usa en muchos sistemas operativos y dispositivos de red.
L Cual es la utilidad de un sistema de syslog centrali<ado M
-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 (nix8linux8Aindo$s etc, #ire$alls, y dispositivos de red /routers,
s$itches, etc0
2ay 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
>eniendo los mensajes de todos los euipos, puede hacerse una correlacin
de ataues 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.
"istema de monitoreo 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. 6uchas 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.
6uchas #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 blouearse el acceso ssh
desde determinada direccin @P despues de un n.mero de intentos #allidos de
acceso.
(n concepto ue aparece au* 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 OHHH mensajes !route #ailed" se convierte en un
.nico alerta ue dice !route #ailed OHHH 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.
*jemplos genNricos@
-l -vento ; est seguido del -vento 4.
-ste es el primer -vento ; desde el -vento 4 reciente.
-l -vento ; sigue al -vento 4 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 busuedas etc.
-s .til registrar, por ejemplo,
(n intento de acceso con contraseCa euivocada
(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
>ambin es posible registrar el #uncionamiento normal de los programas+ por
ejemplo, guardar cada acceso ue se hace a un servidor $eb, aunue esto
suele estar separado del resto de alertas.
Puede logguear tanto por (:P como por >&P, teniendo compatibilidad con el
viejo syslog, soportando a su vez muchas mas opciones y tareas ue el syslog
comun.
"obre "yslog0N,
)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 contraseCa euivocada
(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
>ambin es posible registrar el #uncionamiento normal de los programas+ por
ejemplo, guardar cada acceso ue se hace a un servidor $eb, aunue esto
suele estar separado del resto de alertas.
Puede logguear tanto por (:P como por >&P, teniendo compatibilidad con el
viejo syslog, soportando a su vez muchas mas opciones y tareas ue el syslog
comun.
*2plicacion tecnica simple
)yslog-%' se compone en capas de #uncionamiento
5sea tengo en primer lugar opciopnes generales, luego #uentes de donde
obtener datos de los registros, ya sean locales, externos por red /udp, tcp,
archivos de texto0, 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$syslog0ng$syslog0ng3con4
Clientes
-n los clientes se procedi a con#igurar el syslog convencional para ue
loggueara por (:P hacia el servidor syslog.
$etc$syslog3con4
Configuracion para loguear datos de autenticacion
auth.*Wauthpriv.*Wauth.noticeWauth.errorWauth.infoWauthpriv.noneW @0...!
$etc$syslog0ng$syslog0ng3con4
)estination )fIauth 0
tcp; P0...!P port;SE< <W
1W
filter fIauth 0
facility;auth( authpriv<W
1W
log 0
source;src<W
filter;fIauth<W
)estination;)fIauth<W
1W
Con4iguracin del "ervidor
:ebian '%(8Linux -tch
;rchivo 8etc8syslog-ng8syslog-ng.con#
5pciones generales, #uentes de donde obtener in#ormacin, #iltros y destinos
paracada #iltro
options 0
longIhostnames;off<W
logImsgIsize;"H!<W
flushIlines;<W
logIfifoIsize;63"E<W
timeIreopen;0<W
useI)ns;no<W
)nsIcache;yes<W
useIfB)n;no<W
-eepIhostname;no<W
chainIhostnames;no<W
perm;06EE<W
1W
)estination )Ilogzilla 0
program;P/usr/local/php-syslog-ng/scripts/)'Iinsert.plP
template;P/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$\nP<
<W
1W
source externo 0
u)p;<W
tcp;<W
1W
log 0
source;externo<W
)estination;)Ilogzilla<W
1W
source interno 0
internal;<W
unix-stream;P/)ev/logP<W
file;P/proc/-msgP logIprefix;P-ernel# P<<W
1W
)estination )fIauth 0 file;P/var/log/auth.logP<W 1W
)estination )fIsyslog 0 file;P/var/log/syslogP<W 1W
)estination )fIcron 0 file;P/var/log/cron.logP<W 1W
)estination )fI)aemon 0 file;P/var/log/)aemon.logP<W 1W
)estination )fI-ern 0 file;P/var/log/-ern.logP<W 1W
)estination )fIlpr 0 file;P/var/log/lpr.logP<W 1W
)estination )fImail 0 file;P/var/log/mail.logP<W 1W
)estination )fIuser 0 file;P/var/log/user.logP<W 1W
)estination )fIuucp 0 file;P/var/log/uucp.logP<W 1W
)estination )fIfacilityI)otIinfo 0 file;P/var/log//C3C.2.8?.infoP<W 1W
)estination )fIfacilityI)otInotice 0 file;P/var/log//C3C.2.8?.noticeP<W 1W
)estination )fIfacilityI)otI=arn 0 file;P/var/log//C3C.2.8?.=arnP<W 1W
)estination )fIfacilityI)otIerr 0 file;P/var/log//C3C.2.8?.errP<W 1W
)estination )fIfacilityI)otIcrit 0 file;P/var/log//C3C.2.8?.critP<W 1W
)estination )fIne=sI)otInotice 0 file;P/var/log/ne=s/ne=s.noticeP
o=ner;Pne=sP<<W 1W
)estination )fIne=sI)otIerr 0 file;P/var/log/ne=s/ne=s.errP o=ner;Pne=sP<<W 1W
)estination )fIne=sI)otIcrit 0 file;P/var/log/ne=s/ne=s.critP o=ner;Pne=sP<<W 1W
)estination )fI)e'ug 0 file;P/var/log/)e'ugP<W 1W
)estination )fImessages 0 file;P/var/log/messagesP<W 1W
)estination )pIxconsole 0 pipe;P/)ev/xconsoleP<W 1W
)estination )uIall 0 usertty;P*P<W 1W
filter fIauth 0 facility;auth( authpriv<W 1W
filter fIsyslog 0 not facility;auth( authpriv<W 1W
filter fIcron 0 facility;cron<W 1W
filter fI)aemon 0 facility;)aemon<W 1W
filter fI-ern 0 facility;-ern<W 1W
filter fIlpr 0 facility;lpr<W 1W
filter fImail 0 facility;mail<W 1W
filter fIne=s 0 facility;ne=s<W 1W
filter fIuser 0 facility;user<W 1W
filter fIuucp 0 facility;uucp<W 1W
filter fIatIleastIinfo 0 level;info..emerg<W 1W
filter fIatIleastInotice 0 level;notice..emerg<W 1W
filter fIatIleastI=arn 0 level;=arn..emerg<W 1W
filter fIatIleastIerr 0 level;err..emerg<W 1W
filter fIatIleastIcrit 0 level;crit..emerg<W 1W
filter fI)e'ug 0 level;)e'ug< an) not facility;auth( authpriv( ne=s( mail<W 1W
filter fImessages 0
level;info(notice(=arn<
an) not facility;auth(authpriv(cron()aemon(mail(ne=s<W
1W
filter fIemerg 0 level;emerg<W 1W
filter fIxconsole 0
facility;)aemon(mail<
or level;)e'ug(info(notice(=arn<
or ;facility;ne=s<
an) level;crit(err(notice<<W
1W
log 0
source;interno<W
filter;fIauth<W
)estination;)fIauth<W
1W
log 0
source;interno<W
filter;fIsyslog<W
)estination;)fIsyslog<W
1W
log 0
source;interno<W
filter;fI)aemon<W
)estination;)fI)aemon<W
1W
log 0
source;interno<W
filter;fI-ern<W
)estination;)fI-ern<W
1W
log 0
source;interno<W
filter;fIlpr<W
)estination;)fIlpr<W
1W
log 0
source;interno<W
filter;fImail<W
)estination;)fImail<W
1W
log 0
source;interno<W
filter;fIuser<W
)estination;)fIuser<W
1W
log 0
source;interno<W
filter;fIuucp<W
)estination;)fIuucp<W
1W
log 0
source;interno<W
filter;fImail<W
filter;fIatIleastIinfo<W
)estination;)fIfacilityI)otIinfo<W
1W
log 0
source;interno<W
filter;fImail<W
filter;fIatIleastI=arn<W
)estination;)fIfacilityI)otI=arn<W
1W
log 0
source;interno<W
filter;fImail<W
filter;fIatIleastIerr<W
)estination;)fIfacilityI)otIerr<W
1W
log 0
source;interno<W
filter;fIne=s<W
filter;fIatIleastIcrit<W
)estination;)fIne=sI)otIcrit<W
1W
log 0
source;interno<W
filter;fIne=s<W
filter;fIatIleastIerr<W
)estination;)fIne=sI)otIerr<W
1W
log 0
source;interno<W
filter;fIne=s<W
filter;fIatIleastInotice<W
)estination;)fIne=sI)otInotice<W
1W
log 0
source;interno<W
filter;fI)e'ug<W
)estination;)fI)e'ug<W
1W
log 0
source;interno<W
filter;fImessages<W
)estination;)fImessages<W
1W
log 0
source;interno<W
filter;fIemerg<W
)estination;)uIall<W
1W
log 0
source;interno<W
filter;fIxconsole<W
)estination;)pIxconsole<W
1W
)estination )Ievent)' 0
pipe;P/usr/local/nagios/var/r=/syslog-ng.pipeP(
template;P/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$\nP<
templateIescape;no<
<W
1W
filter fIatIleastI=arn 0
level;=arn..emerg<W
1W
log 0
source;externo<W
filter;fIatIleastI=arn<W
)estination;)Ievent)'<W
1W
!:!0"yslog0ng
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 /se omitieron las directivas de autenticacion0.
3lias /syslog P/usr/local/php-syslog-ng/htmlP
UFirectory P/usr/local/php-syslog-ng/htmlPV
%ptions 3ll
%r)er allo=()eny
3llo= from all
662:eBuire662
3llo=%verri)e &one
U/FirectoryV
.ntegracin con Nagios
Re4erencias
)itios de donde descargar plugins y agregados para %agios
Pauete )tandard de plugins
http,88nagiosplug.source#orge.net8
Plugins con soporte )%6P
http,88nagios.manubulon.com8
Plugins );P &&6)
http,88source#orge.net8projects8nagios-sap-ccms8
@nter#az alternativa de %agios para visualizar en 4lac74erry
http,88nagiosmobile.source#orge.net8
Plugins para cheueos en 4lac74erry
http,88$$$.Oight.#r8plugins84lac74erry8
Plugins de cheueo 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 cheueo de eventos %agios para #ire#ox
https,88addons.mozilla.org8en-()8#ire#ox8addon8?GHJ
http,88code.google.com8p8nagioschec7er8
<isor de sucesos para el escritorio /Linux, Aindo$s0
http,88source#orge.net8projects8nagstamon
)itios generales sobre #uncionamiento de redes y protocolos
Ai7i de =edes de &omunicaciones @@ - (niversidad de 6adrid
http,88ariadna.ii.uam.es8$i7i8$i7iBrcI8do7u.php
.!Os varios
)obre per#ormance
&ompilar %agios y %:5 con optimizaciones para nuestro procesador
http,88en.gentoo-$i7i.com8$i7i8)a#eB&#lags
<er los tips de la documentacion o#icial
http,88nagios.source#orge.net8docs8?BH8tuning.html
6odi#icar opciones de bu##er y cache de 6y)KL
-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 , statusB#ileF8dev8shm8status.dat
nagios.c#g , tempB#ileF8dev8shm8nagios.tmp
nagios.c#g , tempBpathF8dev8shm
$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=iceR
&on#iguracin recomendada,
chil)IprocessesIfor-It=iceR0
-lap Detection
Qlap 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 /!#lapping"0, es tomar los .ltimos IO
resultados de los chec7s y veri#icar cuantos cambios de estado hay en los
mismos. ;nalizando ms en detalle, dentro de IO resultados hay IH posibles
cambios de estado. )uponiendo ue dentro de estos IH cambios de estado
posibles, hubo OH cambios de estado reales, la relacin dar*a como resultado
OH8IHFH,TH, es decir, THa. 6ediante 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.
5tra consideracin importante es ue se pueden uitar estados a interpretarse
como cambio de estado, por ejemplo el estado !(%N%5A%" podr*a
considerarse como ue no hubo cambio respecto del estado anterior. Para ello
hay ue utilizar la directiva #lapBdetectionBoptions dentro de la con#iguracin
del servicio o host.
"obre los 4lags de compilacion
-jemplo para un Pentium :ual -IOGH o un @ntel Kuad &ore
C5%68RPi6"6-pc-linux-gnuP
CC23$6RP-marchRprescott -%! -pipe -fomit-frame-pointerP
CTTC23$6RP/0CC23$61P
Los incluimos de la siguiente manera en el proceso de compilacion de %agios
C5%68RPi6"6-pc-linux-gnuP CC23$6RP-marchRprescott -%! -pipe -fomit-frame-
pointerP CTTC23$6RP/0CC23$61P ./configure
La misma con#iguracion es valida para compilar 6y)KL /ej T.O.?J0
C5%68RPi6"6-pc-linux-gnuP CC23$6RP-marchRprescott -%! -pipe -fomit-frame-
pointerP CTTC23$6RP/0CC23$61P ./configure --=ith-'ig-ta'les --=ith-
pluginsRpartition(myisam(inno'ase
NDO
&uando la base de datos esta cargada con una gran cantidad de registros, el
%:5 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 P8:9&C38* 83,2* nagiosIservicechec-sP Q /usr/'in/mysBl -u root --'atch
--)ata'aseRnagios
echo P8:9&C38* 83,2* nagiosIlogentriesP Q /usr/'in/mysBl -u root --'atch
--)ata'aseRnagios
echo P8:9&C38* 83,2* nagiosIserviceIcontactgroupsP Q /usr/'in/mysBl -u root
--'atch --)ata'aseRnagios
echo P8:9&C38* 83,2* nagiosIhostchec-sP Q /usr/'in/mysBl -u root --'atch
--)ata'aseRnagios
Para luego incluirlo en el crontab, por ejemplo si tenemos alrededor de mas
de GHH hosts y alrededor de IHHH servicios o mas, cheueando ambos en
intervalos de ente O y T minutos, podemos establecer su ejecucion en OT
minutos.
0(S(30(ES * * * root /usr/local/nagios/s'in/truncarI)'.sh
@gualmente en las opciones de con#iguracion del daemon ndoIdb tenemos
opciones re#eridas a esto, aunue igualmente dependeremos del script a
realizar ya ue el %:5 en si mismo puede #allar. La con#iguracion se re#iere a
valores en minutos.
# Keep time) events for !E hours
#maxItime)eventsIageREE0
maxItime)eventsIageR!0
# Keep system comman)s for =ee-
#maxIsystemcomman)sIageR00"0
maxIsystemcomman)sIageR
# Keep service chec-s for =ee-
#maxIservicechec-sIageR00"0
maxIservicechec-sIageR!E0
# Keep host chec-s for =ee-
#maxIhostchec-sIageR00"0
maxIhostchec-sIageR!E0
# Keep event han)lers for 3 )ays
#maxIeventhan)lersIageREE6E0
maxIeventhan)lersIageR60
=eparar tabla de %:5 , -n caso de ue una tabla se corrompa, deberemos
bajar el servicio %:5 para ue nagios no siga escribiendo registros y ejecutar
la siguiente orden desde el shell.
mysBlchec- `-auto-repair nagios nagiosIservicechec-sW
Retoques al codigo 4uente
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 2>>P ue imprime %agios en dicho
momento.
cgi$avail3c
if;outputIformatRR5842I%98+98<
printf;PContent-type# text/html\r\n\r\nP<W
else0
printf;PContent-type# plain/text\r\n\r\nP<W
returnW
1
Lo cambiaremos como ,
if;outputIformatRR5842I%98+98<
printf;PContent-type# text/html\r\n\r\nP<W
else0
printf;PContent-Fisposition#
attachmentWfilenameRinformeImensual-nagios.csv
Content-type#application/csv\r\n\r\nP<W
returnW
1
"cripts utiles
; continuacion se detallan scripts ue pueden ser de utilidad para el dia a dia
con %agios
5olcado 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##6tatus2ogW
my /log R &agios##6tatus2og-Vne=;
Cilename RV P/)ev/shm/status.)atP(
Gersion RV 3.0
<W
print;PContent-type# text/xml\n\nP<W
print;PUXxml versionR>.0>XVP<W
print;PUstatusV\nP<W
foreach my /host ;/log-VlistIhosts;<< 0
print;PUhostV\nUnameV/hostU/nameV\nUservicesVP<W
foreach my /serv ;/log-VlistIservicesIonIhost;/host<< 0
print ;PUserviceV\nP<W
print ;ref /serv<W
my /st R /log-Vservice;/host( /serv<W
foreach /tag ;/st-VlistItags;<< 0
print;PU/tagV//st0/tag1U//tagV\nP<W
1
print ;PU/serviceV\nP<W
1
print;PU/servicesV\nU/hostV\nP<
1
print;PU/statusVP<W
=ecordemos ue para instalar modulo de &P;% deberemos ejecutar
# perl -4C+3& -e shell
cpanV install 4%F92%##&%4,:*
*@emplo para este caso
cpanV install &agios##6tatus2og
-jemplo de m7Blivestatus
#A/usr/'in/python
#
# 6ample program for accessing the 2ivestatus 4o)ule
# from a python program
soc-etIpath R P/var/li'/nagios/r=/liveP
import soc-et
s R soc-et.soc-et;soc-et.3CI9&.T( soc-et.6%CKI68:*34<
s.connect;soc-etIpath<
# 7rite comman) to soc-et
s.sen);P$*8 hosts\nP<
# .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 R s.recv;00000000<
# +arse the ans=er into a ta'le ;a list of lists<
ta'le R M line.split;>W>< for line in ans=er.split;>\n><M#-N N
print ta'le
-jemplo de como obtener la lista de euipos y su estado desde php y
exportarlo a #ormato &)<
/listaIservi)ores R shellIexec;P/'in/echo -e \P$*8 hosts\nColumns# name a))ress
alias state\n\P Q /usr/local/'in/unixcat /usr/local/nagios/var/r=/liveP<W
/listaIhosts R strIgetcsv;/listaIservi)ores( P\nP<W
&onvertir el timestamp de nagios.log a human readable
tail -f nagios.log Q perl -pe >s/;\)L</localtime;/</e>
'Q' 0 he 'ivestatus Query 'anguage
-l lenguaje de consultas de Livestatus, basicamente consiste en consultas del
tipo '-> /case sensitive0 con estos parmetros a los cuales consideraremos
como euivalente a tablas )KL ,
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 O.O.? - all services grouped by service groups
servicesbyhostgroup - ne$ in O.O.? - all services grouped by host groups
hostsbygroup - ne$ in O.O.? - all hosts group by host groups
contacts - your %agios contacts
commands - your de#ined %agios commands
timeperiods - time period de#initions /currently only name and alias0
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 /include archived ones0ones
status - general per#ormance and status in#ormation. >his table contains
exactly one dataset.
columns - a complete list o# all tables and columns available via Livestatus,
including descriptionsb
5er como :uman Readable el timestamp del archivo nagios3log
# cat /usr/local/nagios/var/nagios.log Q perl -pe >s/;\)L</localtime;/</e>
NetMy"'6
net6y)L; es una variedad de procedimientos almacenados de 6y)KL. )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 net6y)L;
'ista de argumentos
O. 2ostname varchar /objects0
I. )ervicename varchar /objects0 can be null
?. &onsider :o$ntime boolean
S. &onsider ;c7no$ledge boolean
T. &onsider (n7no$n boolean
G. &onsider Aarning boolean
J. >he initial state boolean /true F up, #alse F do$n0
L. )tartdate datetime
X. )topdate datetime
OH. :ebug#lag boolean /:isplay some $or7#lo$ output0
OO. uiet /%o resultset, only inserts the values into a table c npBsla0
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<W
sla;id host;obje
ct;id
host;nam
e
service;o
bject;id
service;n
ame
outage;p
ercent
availabili
ty;percen
t
O OII srv-$ebO OJGO 2>>P H.HIIJSJG XX.XJJI
-jemplo de como llamar al procedimiento desde P2PT, para por ejemplo
conocer el )L; de 2 servicio en n cantidad de hosts.
/consulta RP6*2*C8 nagiosIhosts.)isplayIname
C:%4
nagiosIhostgroups(nagiosIinstances(
nagiosIhosts(nagiosIhostgroupImem'ers(
nagiosIo'@ects
75*:*
nagiosIhostgroups.hostgroupIi)RnagiosIhostgroupImem'ers.hostgroupIi)
3&F
nagiosIhostgroupImem'ers.hostIo'@ectIi)RnagiosIhosts.hostIo'@ectIi)
3&F
nagiosIhostgroups.hostgroupIo'@ectIi)RnagiosIo'@ects.o'@ectIi)
3&F
nagiosIo'@ects.name R >0hostgroupIaIconsultar1>
%:F*: ,? nagiosIhosts.)isplayIname 36CPW
/p)o R ne= +F%;PmysBl#)'nameRnagiosWhostR!J.0.0.P( PnagiosP(PnagiosP<W
/listaIhosts R /p)o-Vprepare;/consulta<W
/listaIhosts-Vexecute;<W
/hosts R /listaIhosts-Vfetchall;<W
/service R P6ervicio a consultar en los hostsPW
foreach;/hosts as /host< 0
/Buery R /p)o-Vprepare;Pcall npIchec-3vaila'ility;>P./hostM>)isplayIname>N.P>(
>P./service.P>( false( false( false( false( true( >P./startItime.P>( >P.
/en)Itime.P>( false( false<P<W
/Buery-Vexecute;<W
printIr;/Buery-Vfetch;<<W
1
:evolviendonos algo como esto por cada hosts,
3rray
;
MslaIi)N RV
MhostIo'@ectIi)N RV E63
MhostInameN RV 00
MserviceIo'@ectIi)N RV
MserviceInameN RV 6ervicio
MoutageIpercentN RV 0
Mavaila'ilityIpercentN RV 00
<
>ambien 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.
Documentacion al vuelo
Para tener una documentacion actualizada de los euipos y sus servicios, lo
ideal es implementar un $i7i.
:o7uAi7i es un so#t$are para gestin de $ebs colaborativas de tipo $i7i,
escrito en lenguaje P2P 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 peueCas compaC*as.
)u sintaxis es similar a la de 6ediaAi7i, aunue a di#erencia de este so#t$are,
la in#ormacin se almacena en archivos de texto planos, por lo ue no reuiere
el uso de una base de datos.
CaracterPsticas@
'estin de espacios de contenidos ue permite un almacenamiento
ordenado de los documentos.
)oporte para imgenes y otros contenidos multimedia.
dndices 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 diseCo.
:isponibilidad de complementos /plugins0 para extender la #uncionalidad.
&ontrol de bloueos para solucionar problemas de concurrencia.
'estin de usuarios.
4.sueda de texto completo.
Para integrarlo con %agios podemos implementar un script en P2P como este ,
UXphp
/**
* Cor=ar)er to )o-u.php
*
* @license $+2 ! ;http#//===.gnu.org/licenses/gpl.html<
* @author _oerg 2inge Upitchfor-@e)er)rom.)eV
*/

/hostRstrIreplace;> >( >I>(strtolo=er;/I$*8M>host>N<<W

/srvRstrIreplace;> >( >I>(strtolo=er;/I$*8M>srv>N<<W



if ;/hostARPP YY /srvARPP< 0

hea)er;P2ocation# )o-u.phpXi)Rnagios#P./host.P#P./srv<W

exitW

1 elseif;/hostARPP< 0

hea)er;P2ocation# )o-u.phpXi)Rnagios#P./host.P#hostP<W

exitW

1 else 0

hea)er;P2ocation# )o-u.phpXi)Rnagios#in)exP<W

exitW

1
XV
&on lo cual deberemos agregar algunas directivas a la con#iguracin de %agios.
-jemplo de un serviceextin#o, aunue tambien lo podemos aplicar dentro de la
plantilla inicial del servicio.
)efine serviceextinfo 0
hostIname router
serviceI)escription ping
notesIurl /=i-i/nagios.phpXhostR/5%68&34*/YsrvR/6*:G.C*F*6C/
iconIimage help.png
1
:esde :o7u$i7i haciendo uso de la extension P2P, podemos embeber los datos
actuales de los objetos de %agios, gracias a 6N Live )tatus
UphpV
/listaIservi)ores R shellIexec;P/'in/echo -e \P$*8 hosts\nColumns# name a))ress
alias state\n\P Q /usr/local/'in/unixcat /usr/local/nagios/var/r=/liveP<W
/listaIhosts R strIgetcsv;/listaIservi)ores( P\nP<W
echo PU)iv classR>level!>V
U)iv classR>ta'le sectione)it3>V
Uta'le classR>inline>V
UthV5ostU/thVUthV.+U/thVUthVFescripcionU/thVUthV*sta)o 3ctualU/thVUthV4etricas /
.nformesU/thV
PW
foreach ;/listaIhosts as /host< 0
/host R explo)e;PWP( /host<W
print PUtrVUt)VPW
print PUa hrefR>)o-u.phpXi)Rnagios#servi)ores#P./hostM>0>N.P>VP.
/hostM>0>N.PU/aVPW
print PU/t)VUt)VPW
print /hostM>>NW
print PU/t)VUt)VPW
print /hostM>!>NW
print PU/t)VUt)VPW
if;/hostM>3>NRR0< print PUa hrefR>/nagios/cgi-'in/extinfo.cgiXtypeRYhostRP.
/hostM>0>N.P>VUfont colorR>#00"000>V3::.,3U/fontVU/aVPW
if;/hostM>3>NRR< print PUa hrefR>/nagios/cgi-'in/extinfo.cgiXtypeRYhostRP.
/hostM>0>N.P>VUfont colorR>#CC0000>VC3Y.acuteWF%U/fontVUimg
srcR>/nagios/=i-i/li'/images/smileys/iconIexclaim.gif> classR>mi))le> /VU/aVPW
if;/hostM>3>NRR!< print PUa hrefR>/nagios/cgi-'in/extinfo.cgiXtypeRYhostRP.
/hostM>0>N.P>VUfont colorR>#CC0000>V9&:*3C5*3,2*U/fontVUimg
srcR>/nagios/=i-i/li'/images/smileys/iconIexclaim.gif> classR>mi))le> /VU/aVPW
print PU/t)VPW
print PUt)VUa hrefR>/pnpEnagios/in)ex.php/graphXhostRP.
/hostM>0>N.P>V+erformanceU/aV / Ua hrefR>/nagios/cgi-'in/avail.cgiX
getI)ateIpartsRYhostRP./hostM>0>N.P>VFisponi'ili)a)U/aVU/t)VU/trVPW
1
echo PU/ta'leVU/)ivVU/)ivVPW
U/phpV
>ambien desde do7u$i7i por ejemplo si necesitamos podemos consultar
comandos por ))2 para mostrar su salida en la documentacin de nuestro
euipo, como un plus de un dato en tiempo real.
UphpV
if ;AfunctionIexists;Pssh!IconnectP<< )ie;Pfunction ssh!Iconnect )oesn>t
existP<W
if;A;/con R ssh!Iconnect;PoracleP( !!<<<0
echo P&o pue)o esta'lecer una conexion 665\nPW
1 else 0
if ;ssh!IauthIpu'-eyIfile;/con( >root>(
>/home/usuario/.ssh/i)Irsa.pu'>(
>/home/usuario/.ssh/i)Irsa>( >secret><< 0
// echo P+u'lic Key 3uthentication 6uccessful\nPW
1 else 0
)ie;>+u'lic Key 3uthentication Caile)><W
1
if ;A;/stream R ssh!Iexec;/con( P/home/usuario/)o-u=i-iIarchlogs.plP <<<
0
echo Pfail# una'le to execute comman)\nPW
1 else 0
// collect returning )ata from comman)
streamIsetI'loc-ing;/stream( true<W
/)ata R PPW
=hile ;/'uf R frea);/stream(E0H6<< 0
/)ata .R /'ufW
1
fclose;/stream<W
print /)ataW
1
1
U/phpV
A/usr/'in/perl
use strictW
use =arningsW
su' getIsorte)Ifiles 0
my /path R shiftW
open)ir my;/)ir<( /path or )ie Pno pue)o a'rir /path# /APW
my Zhash R map 0/I RV ;stat;/I<<MHN QQ un)ef1 # saltar listas vacias
map 0 P/path/IP 1
grep 0 m/.)'f/i 1
rea))ir /)irW
close)ir /)irW
return ZhashW
1
my Zfiles R getIsorte)Ifiles;P/oracle/arclog/F,.F/P<W
print P
Uta'le classR>inline>V
UthV3rchivoU/thVUthV8imestampU/thVPW
foreach my /-ey ;sort0/files0/a1 URV /files0/'11 -eys Zfiles< 0
my /filename R /-eyW
/filename R[ s/\.\///gW
/filename R[ s/\.\.//gW
print PUtrVUt)V/filenameU/t)VUt)VP( scalar localtime;/files0/-ey1<(
PU/t)VU/trV\nPW
1
print PU/ta'leVPW
chec+;multiaddr
; menudo sucede ue tenemos hosts a monitorear con multiples ip
disponibles, y dado el caso por ejemplo ue necesitemos cheuear por
cualuiera 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 cheueo 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 , chec7Bmultiaddr y una version alternativa basada en el mismo cdigo
apache
"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
chec+;sap
archivo "usr"local"nagios"etc"sapmon"agent#cfg de ejemplo
D*"CR.!.ON F Y:escription o# the >emplateE ;rbitrary description #ield
MON.;"*;N6M* F Y6onitor collectionE 6onitor collection in =PIH
MON.;N6M* F Y6onitor nameE %ame o# the speci#ic monitor
M6Q;R**;D*!: F YnumberE 6onitor loading depth
!6*RN;K F Y);P)@:EeY&ontextEeY6onitor objectEeY6onitor attributE
M8*4+238*I00N
F*6C:.+8.%&RP2oa) 3verageP
4%&.I6*8I&34*R63+ CC46 3)min 7or-place
4%&.I&34*RP%perating 6ystemP
43TI8:**IF*+85R0
+388*:&I0RP,C*\'cemainI,C*I!6\C+9\Smin2oa)3verageP
+388*:&I0RP*\*\C+9\Smin2oa)3verageP
M8*4+238*I0N
4%&.I6*8I&34*R63+ CC46 3)min 7or-place
4%&.I&34*RP%perating 6ystemP
43TI8:**IF*+85R0
+388*:&I!RP,C*\'cemainI,C*I!6\C+9\C+9I9*P
M8*4+238*I0!N
G329*RF.32%$I:*6+%&6*I8.4*
M8*4+238*I03N
6?68*4R,C*
3++2-6*:G*:R'cemain*
G329*RF.32%$I:*6+%&6*I8.4*
M8*4+238*I0EN
4%&.I6*8I&34*RP63+ CC46 4onitor 8emplatesP
4%&.I&34*RPFialog %vervie=P
+388*:&I0RP,C*\*\Fialog\Cront*n)&et8imeP
M8*4+238*I0SN
4%&.I6*8I&34*RP63+ CC46 4onitor 8emplatesP
4%&.I&34*RPFialog %vervie=P
+388*:&I0RP,C*\+7F*\Fialog\Cront*n)&et8imeP
M8*4+238*I00SN
4%&.I6*8I&34*RP63+ CC46 4onitor 8emplatesP
4%&.I&34*RPFialog %vervie=P
+388*:&I0RP+0\*\Fialog\Cront*n)&et8imeP
M8*4+238*I06N
4%&.I6*8I&34*RP63+ CC46 4onitor 8emplatesP
4%&.I&34*RPFialog %vervie=P
+388*:&I0RP*P
M8*4+238*I0JN
4%&.I6*8I&34*RP63+ CC46 4onitor 8emplatesP
4%&.I&34*RP3vaila'ility an) +erformance %vervie=P
+388*:&I0RP*\3vaila'ility\*I,C**\P
# 6tan)ar) 63+ 8emplates
M8*4+238*IHHN
G329*RC5*CKI63+I6?68*46
M8*4+238*I0SN
4%&.I6*8I&34*RP63+ CC46 4onitor 8emplatesP
4%&.I&34*RPFialog %vervie=P
+388*:&I0RP*9sers2ogge).nP
M8*4+238*I0N
4%&.I6*8I&34*RP63+ CC46 4onitor 8emplatesP
4%&.I&34*RP*ntire 6ystemP
+388*:&I0RP**s3ctP
M8*4+238*I!00N
4%&.I6*8I&34*RP63+ CC46 4onitor 8emplatesP
4%&.I&34*RPFata'aseP
+388*:&I0RP*Cullest ta'lespaceP
M8*4+238*I!0N
4%&.I6*8I&34*RP63+ CC46 4onitor 8emplatesP
4%&.I&34*RP*ntire 6ystemP
+388*:&I0RP*F,:eBuest8imeP
M8*4+238*I300N
4%&.I6*8I&34*RP63+ CC46 4onitor 8emplatesP
4%&.I&34*RP%perating 6ystemP
+388*:&I0RP*Smin2oa)3verageP
M8*4+238*IHHHN
4%&.I6*8I&34*RP63+ CC46 4onitor 8emplatesP
4%&.I&34*RP*ntire 6ystemP
+388*:&I0RP*P
M8*4+238*I060N
#F*6C:.+8.%&RPCree 6=apP
4%&.I6*8I&34*R63+ CC46 3)min 7or-place
4%&.I&34*RP%perating 6ystemP
#43TI8:**IF*+85R0
+388*:&I0RP*\*\6=apI6pace\CreespacePP
M8*4+238*I0J0N
F*6C:.+8.%&RFialog :esponse 8ime
4%&.I6*8I&34*R63+ CC46 4onitor 8emplates
4%&.I&34*RFialog %vervie=
+388*:&I0R+0\*\Fialog\:esponse8ime
M8*4+238*I0JN
F*6C:.+8.%&RFialog :esponse 8ime
4%&.I6*8I&34*R63+ CC46 4onitor 8emplates
4%&.I&34*RFialog %vervie=
+388*:&I0R*
M8*4+238*I0HN
F*6C:.+8.%&RPFialog:esponse8imeP
4%&.I6*8I&34*R63+ CC46 4onitors for %ptional Components
4%&.I&34*RP2ogon 2oa) ,alancingP
43TI8:**IF*+85R0
+388*:&I0RP*\*\Fialog\:esponse8imeP
M8*4+238*I00JN
F*6C:.+8.%&RP8*68P
4%&.I6*8I&34*R63+ CC46 4onitors for %ptional Components
4%&.I&34*RP2ogon 2oa) ,alancingP
43TI8:**IF*+85R0
+388*:&I0RP63+\6erver3I63+I00\:36ervices\Fialog\:esponse8imeP
M8*4+238*IH00N
F*6C:.+8.%&R_ava
4%&.I6*8I&34*R63+ _!** 4onitor 8emplates
4%&.I&34*R5eart'eat
+388*:&I0R*
M8*4+238*IH0N
F*6C:.+8.%&R_ava
4%&.I6*8I&34*R63+ _!** 4onitor 8emplates
4%&.I&34*R3pplications
+388*:&I0R*
M8*4+238*I06N
F*6C:.+8.%&R9sers-2ogge)-%n
4%&.I6*8I&34*RP63+ CC46 4onitor 8emplatesP
4%&.I&34*RPFialog %vervie=P
43TI8:**IF*+85R0
+388*:&I0R6.F\hostname*\Fi*\9s*
M8*4+238*I"J0N
F*6C:.+8.%&R_ava
4%&.I6*8I&34*R8est _!** 4onitor 6et
4%&.I&34*R_!** *ngine Kernel
+388*:&I0RPTD\TD 6E 6erv 6EHE"ES0 mchpJtpa\6ystem 8hrea)s
+ool\4aximum8hrea)+ool6izeP
M8*4+238*I"JSN
F*6C:.+8.%&R_ava
4%&.I6*8I&34*R8est _!** 4onitor 6et
4%&.I&34*R_!** *ngine Kernel
+388*:&I0RPTD\TD 6E Fisp 6EHE"E00 mchpJtpa\$eneral
;4essageContext<\3verage46+rocess8imeP
M8*4+238*I666N
F*6C:.+8.%&R63+ 3vg. F, :eBuest 8ime )ehB0srm
4%&.I6*8I&34*RC*&8:32 4%&.8%:.&$ 6?68*4 ;63+ ,asis Kerpen<
4%&.I&34*R8est 6ystems 63+
+388*:&I0R6.F\hostname\Fialog\F,:eBuest8ime
M8*4+238*I66JN
4%&.I6*8I&34* R P63+ CC46 8echnical *xpert 4onitorsP
4%&.I&34* R P3ll Contexts on 2ocal 3pplication 6erverP
+388*:&I0 R P*P
M8*4+238*I66"N
4%&.I6*8I&34* R P63+ CC46 8echnical *xpert 4onitorsP
4%&.I&34* R P3ll Contexts on 2ocal 3pplication 6erverP
+388*:&I0 R P*\6?68*4\Cree spaceP
M8*4+238*IEJN
4%&.I6*8I&34* R P63+ CC46 8echnical *xpert 4onitorsP
4%&.I&34* R P3ll Contexts on 2ocal 3pplication 6erverP
+388*:&I0 R P*\+63+6:396:\Cree spaceP
.nter4a< administrativa
;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
%agiosKL, es una aplicacion desarrollada en P2P.
Para #uncionar dentros de nuestro actual servidor %agios,
P-;= 6odule, 2>6LB>emplateB@> O.O o superior
P2P -xtension, gettext
P2P -xtension, mysl
P2P -xtension, #tp
3avascript en el navegador
Para instalar por ejemplo el soporte 2>6LB>emplateB@>, deberemos ejecutar,
pear install 5842I8emplateI.8
5 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. esB-).ut#L. Para
ver los enconding disponibles deberemos ejecutar !locale -a".
)i realizamos la instalacion en un hosts con 2>>P), deberemos modi#icar el
campo nagios)l#tbl'settings, de &ttp a &ttps.
:eberemos instalar %agiosKL donde residen los archivos 2>6L de %agios,
usualmente en "usr"local"nagios"s&are. %uestra con#iguracion actual de %agios
debera ser importada dentro de %agiosKL, para asi poder administrarla. ;l
realizar la importacion nos uedara una nomenclatura de directorios como esta
/etc/nagiosBl/ -V 3rchivos )e configuracion
P /hosts -V Configuracion )e 5osts
P /services -V Configuracion )e 6ervicios
P /'ac-up/ -V ,ac-ups
P P /hosts -V ,ac-ups )e 5osts
P P /services -V ,ac-ups )e 6ervicios
Por cada cambio ue se realiza %agios)KL hace una copia de seguridad de
dicha con#iguracion.
Para comenzar con la instalacion deberemos crear un archivo dentro del
directorio de nagiosKL 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;
.ntroduccion de uso de NagiosQ'
;l ingresar a la ubicacion de %agiosKL 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
izuierda, con di#erentes secciones
:entro de la seccion supervision tendremos un resumen con el conteo de
elementos
"ub"eccin :osts@ %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"eccin "ervicios@ %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"eccin ,rupos de :osts@ %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"eccin ,rupo de "ervicios@ %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"eccin !lantillas de :osts@ %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"eccin !lantillas de "ervicios@ %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"eccin :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.
2acia su derecha podremos observar di#erentes botones ,
De i<quierda a derecha
-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 euipo 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 euipo.
-l uinto y .ltimo botn es para mostrarnos in#ormacin de las relaciones de
con#iguracin de dicho euipo, 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 /intervalos de cheueo,
noti#icaciones, alarmas, dependencias, grupo de hosts0.
&omo datos #undamentales tenemos,
Nombre del :ost@ 5)u definiremos el nombre real o de configuracin para
nosotros, sin espacios, comas, guiones L otros caracteres )ue no
correspondan#
Descripcin@ Mnimo dato descriptivo de )ue funcin cumple el &osts, ejemplo
NsmonAAA0l( 2 6ervidor de monitoreoN
Direccin@ %ireccin 7 del e)uipo
&omo datos adicionales tenemos,
!adres@ 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 :osts@ Conjuntos a los cuales pertenece dic&o &osts, igualmente si
son muc&os &osts de similares servicios )ue utilizan una misma plantilla, es
mas practico definir este dato en ella#
Comando de comprobacin@ 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#
6ctivo@ odemos activar o desactivar de la configuracin el e)uipo#
J6R,7J 0 J6R,IJ@ :ista de argumentos ordenados uno a uno para pasarle al
comando de comprobacin de dic&o &ost#
!lantillas@ 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 comprobacin del :ost
;ui podemos ver las opciones generales del hosts, intervalos de cheueo,
reintentos, periodo de cheueos etc. :onde dice VsaltarW es por ue se deja esa
opcin a la determinada globalmente por la plantilla.
*stado inicial@ or defecto $agios al iniciar asume )ue el &ost esta activo,
pero esto no necesariamente puede ser as, entonces podemos definirlo como?
5 F (P
: F :5A%
( F (%=-;&2;4L-
M2imos intentos de comprobacin@ M(ima cantidad de intentos de
comprobacin antes de definir el estado final del &ost#
.ntervalo de reintento@ 7ntervalo de reintento entre cada intento de
comprobacin#
.ntervalo de comprobacin@ 7ntervalo entre cada comprobacin, incluidos
sus reintentos#
Comprobacin 6ctiva@ 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#
Comprobacin pasiva@ Cs un c&e)ueo ejecutado por aplicaciones e(ternas y
su resultado devuelto a $agios para su procesamiento#
!eriodo de comprobaciones@ 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#
&mbral de re4resco@ 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#
Re4resco de comprobacin@ 5ctivar el refresco de c&e)ueos#
Concentracin en el equipo@ !tilizar un comando luego de ejecutado el
gestor de eventos#
,estor de eventos@ Comando a ejecutarse luego de obtenidos los resultados
del c&e)ueo del &ost#
,esto de eventos activado@ 5)u definiremos si utilizaremos o no un gestor
de eventos luego de los c&e)ueos#
&mbral bajo de oscilacin@ 5)u definimos el umbral mnimo para considerar
una deteccin correcta del flapping de estado =cambios de estados muy
repentinos>
&mbral alto de oscilacin@ 5)u definimos el umbral m(imo para considerar
una deteccin correcta del flapping de estado =cambios de estados muy
repentinos>
Deteccin de oscilacin activada@ 5ctivar o desactivar la deteccin de
oscilacin para el &ost#
Opciones de deteccin de estabilidad@ 5)u definimos )ue estado
consideramos para establecer el flapping de un &ost#
Mantener in4ormacin de estado@ Cn caso de )ue reinicie $agios, mantener
la Lltima informacin de estadstica obtenida del c&e)ueo del &ost
Mantener el resto de la in4ormacin@ Mantener otra informacin Ltil sobre
el &ost entre los reinicios de $agios#
Datos sobre el rendimiento de los procesos@ rocesar la informacin de
performance de los c&e)ueos, esto es Ltil ya )ue varios plugins de c&e)ueo y
otras utilidades utilizan esta informacin para coleccin de datos#
Opciones de alarmas del host
%esde este apartado podremos estableces las opciones de cmo llegaran las
notificaciones del estado del &ost a personal encargado de recibirlas#
!lugins
Plugins )%6P, caracteristicas generales
"cript detail
page
Description per4ormance "upported
plat4orms
chec7BsnmpBstora
ge
chec7s storages
/dis7s,s$ap,
memory, etcZ0
9es ;ll 6@4I compliant
chec7BsnmpBint chec7s inter#ace
states, usage on
hosts, s$itch,
routers, etc
9es ;ll 6@4I compliant
chec7BsnmpBproce
ss
chec7s i# process
are running, the
number that are
running, memory
and cpu used.
%o ;ll 6@4I compliant
chec7BsnmpBload chec7s the load or
the cpu o# a
machine
9es Linux, Aindo$s,
&isco, ;)SHH, 2P
Procurve,
Lin7Proo#, 4lucoat,
%o7ia,Qortinet,
%etscreen,2P(R.
chec7BsnmpBvrrp chec7s the %o %o7ia @P /<==P f
inter#ace state o#
vrrp cluster
&lustering0,
Lin7Proo#, ;lteon
chec7BsnmpBcp#$ chec7s &hec7point
Qire$allO status
9es &hec7point
Qire$all
chec7BsnmpBmem &hec7s memory
and s$ap usage
9es Linux8%etsnmp,
&isco, 2P )$itch
chec7BsnmpB$in &hec7s $indo$s
services
%o Aindo$s
chec7BsnmpBcss &hec7s css
services state
%o &))
chec7BsnmpBenv &hec7s
environemental
status /#an, temp,
po$er supply0.
%o &isco, %o7ia,
4luecoat, @ronPort,
Qoundry
chec7BsnmpBnsbox &hec7s nsbox
vhost f diode
status.
%o %et)ecure5ne
%etbox
chec7BsnmpBboost
edge
&hec7s 4oostedge
services
%o 4oostedge
chec7BsnmpBlin7pr
oo#Bnhr
&hec7s lin7proo#
%2=
%o =ad$are Lin7proo#
Comandos de4ault 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 pauetes 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.
chec+;by;ssh
-ste comando es muy interesante interesante. Permite ejecutar comandos en
ordenadores remotos v*a ))2 /de #orma segura, por tanto0. -l resultado de ese
comando ser tomado por %agios.
(so , chec7BbyBssh -2 YhostE -& YcommandE g-#vh g-Oi-Ih g-Si-Gh
M-6 MlinesNN M-* MlinesNN M-t timeoutN M-i i)entityN
M-l userN M-n nameN M-s servicelistN M-% outputfileN
M-p portN M-o ssh-optionN
5pciones, -h, jhelp
.mprimir ayu)a )etalla)a
-<, jversion
.mprimir informacion )e version
-2, jhostnameF;::=-))
5ostname( )ireccion .+( or soc-et unix ;path completo en este caso<
-p, jportF@%>-'-=
+uerto a cheBuear
-S, juse-ipvS
9sar .+vE
-G, juse-ipvG
9sar .+v6
-O, jprotoO
9sar protocolo )e 665 MoptionalN
-I, jprotoI
9sar protocolo ! )e 665 MoptionalN
-), js7ip-stdoutgFnh
.gnora to)as o las primeras n lineas )e 68F%98 MoptionalN
--, js7ip-stderrgFnh
.gnora to)as o las primeras n lineas )e 68F*:: MoptionalN
-#
Fecirle al 665 Bue realize un for- en vez )e una tty MoptionalN. 6iempre
)evolver %K si ssh es e@ecuta)o
-&, jcommandFU&566;%: )>=@%'U
Coman)o a e@ecutar en la maBuina remota
-l, jlognameF()-=%;6-
&om're )e usuario 665 MoptionalN
-i, jidentityFN-9Q@L-
2lave 665 autoriza)a MoptionalN
-5, joutputFQ@L-
archivo )e coman)o externo )e &agios MoptionalN
-s, jservicesFL@)>
lista )e nom'res )e servicios &agios separa)os por >#> MoptionalN
-n, jnameF%;6-
nom're corto )el host en la configuracion )e &agios MoptionalN
-o, jssh-optionF5P>@5%
llamar ssh con la opcion >-o> ;pue)e ser usa)a multiples veces< MoptionalN
-, juiet
8ell ssh to suppress =arning an) )iagnostic messages MoptionalN
-$, j$arningF:5(4L-
:esponse time to result in =arning status ;secon)s<
-c, jcriticalF:5(4L-
:esponse time to result in critical status ;secon)s<
-t, jtimeoutF@%>-'-=
6econ)s 'efore connection times out ;)efault# 0<
-v, jverbose
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 U-
iU. :e este modo el par de llaves deben tener una contraseCa nula y la llave
publica debe estar listada en el archivo authorizedB7eys 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 comando
)efine comman) 0
comman)Iname chec-IsshIloa)
comman)Iline /96*://chec-I'yIssh -5 /5%683FF:*66/ -C P/user/'in/chec-Iloa)
-= /3:$/ -c /3:$!/P
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)AS.0(E.0(3.0A0.0(6.0(E.0
1
-jemplo de como dar de alta el hostgroup de ejecucion
)efine hostgroup 0
hostgroupIname ssh-nagios-services
alias &agios over 665
mem'ers remote(remote!
1
chec+;dig
-ste comando sirve para comprobar el #uncionamiento del servicio de :%) en
un euipo remoto. (tiliza dig para esto.
(sage,chec7Bdig -l YueryBaddressE g-2 YhostEh g-p Yserver portEh g->
Yuery typeEh g-$ Y$arning intervalEh g-c Ycritical intervalEh g-t YtimeoutEh
g-a Yexpected ans$er addressEh g-vh
-jemplos, -sto enviara una consulta >&P al servidor :%) consultando por el
nombre $$$.example.com
chec-I)ig -5 F&66*:G*: -l ===.example.com -3 PLtcpP
: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
chec+;dis+
-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, chec7Bdis7 -$ limit -c limit g-A limith g-N limith ]-p path i -x device^ g-&h
g--h g-eh g-g group h g-7h g-lh g-6h g-mh g-= path h g-r path h g-t timeouth g-u unith g-
vh g-R typeh
-jemplos, chec7Bdis7 -$ OHa -c Ta -p 8tmp -p 8var -& -$ OHHHHH -c THHHH -p 8
Chec-s /tmp an) /var at 0Z an) SZ( an) / at 004, an) S04,
chec7Bdis7 -$ OHH6 -c TH6 -& -$ OHHH6 -c THH6 -g sid:;>; -r
Uk8oracle8)@:8data.`\U
Chec-s all filesystems not matching -r at 004 an) S04. 8he fs matching the -r
regex
are groupe) =hich means the freespace threshol)s are applie) to all )is-s
together
chec7Bdis7 -$ OHH6 -c TH6 -& -$ OHHH6 -c THH6 -p 8#oo -& -$ Ta -c ?a -p 8bar
Chec-s /foo for 0004/S004 an) /'ar for S/3Z. 3ll remaining volumes use
004/S04
: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
chec+;dis+;smb
Plani#icacin, especi#icacin, diseCo y evaluacin de redes -ste comando
#unciona exactamente igual ue chec7Bdis7 pero realiza la comprobacin
utilizando samba para realizar la comprobacin de vol.menes compartidos en
uipos remotos, en redes Aindo$s.
Perl &hec7 )64 :is7 plugin #or %agios
(sage, chec7Bdis7Bsmb -2 YhostE -s YshareE -u YuserE -p Ypass$ordE
O. $ Y$arnE -c YcritE g-A Y$or7groupEh g-P YportEh
-2, jhostnameF25)>
&om're &et,.%6 )el servi)or
-s, jshareF)>=@%'
:ecurso comparti)o a testear
-A, j$or7groupF)>=@%'
$rupo )e tra'a@o o )ominio usa)o ;Fefault P7%:K$:%9+P<
-u, juserF)>=@%'
9suario a loguearse en el servi)or. ;Fefaults PguestP<
-p, jpass$ordF)>=@%'
Contraseaa para loguearse en el servi)or. ;Fefaults &922<
-$, j$arningF@%>-'-= or @%>-'-=g76'h
+ercent of use) space at =hich a =arning =ill 'e generate) ;Fefault# "SZ<
-c, jcriticalF@%>-'-= or @%>-'-=g76'h
+ercent of use) space at =hich a critical =ill 'e generate) ;Fefaults# HSZ<
-P, jportF@%>-'-=
+ort to 'e use) to connect to. 6ome 7in)o=s 'oxes use 3H( others EES ;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.
chec+;dns
-ste comando permite hacer una consulta :%) para averiguar la direccin @P
de un euipo 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,chec7Bdns -2 host g-s serverh g-a expected-addressh g-;h g-t timeouth g-$
$arnh g-c crith
chec+;dummy
-ste comando permite realizar una consulta a un dispositivo #icticio /devuelve
el mismo parmetro ue se le pasa0. Puede ser utilizado para comprobaciones
y depuraciones.
(sage, chec7Bdummy Yestado numericoE goptional texth
chec+;4le2lm
-ste comando comprueba el #uncionamiento de un sistema QlexL6. -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.
chec+;4tp
-ste comando realiza comprobaciones de conexin a un servidor Q>P remoto.
Permite conocer el estado de este servicio.
>his plugin tests Q>P connections $ith the speci#ied host /or unix soc7et0.
(sage,chec7B#tp -2 host -p port g-$ Y$arning timeEh g-c Ycritical timeEh g-s
Ysend stringEh g-e Yexpect stringEh g- Yuit stringEhg-m Ymaximum bytesEh
g-d YdelayEh g-t Ytimeout secondsEh g-r Yre#use stateEh g-6 Ymismatch
stateEh g-vh g-Si-Gh g-jh g-: Ydays to cert expiryEh g-) Yuse ))LEh g--h
chec+;http
-ste comando comprueba servicios 2>>P y 2>>P) en euipos 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, chec7Bhttp -2 YvhostE i -@ Y@P-addressE g-u YuriEh g-p YportEh
M-= U=arn timeVN M-c Ucritical timeVN M-t UtimeoutVN M-2N
M-a authN M-f Uo- Q =arn Q critcal Q follo=VN M-e UexpectVN
M-s stringN M-lN M-r UregexV Q -: Ucase-insensitive regexVN M-+ stringN
M-m UminIpgIsizeV#UmaxIpgIsizeVN M-EQ-6N M-&N M-4 UageVN M-3 stringN
M-- stringN M-6N M-C UageVN M-8 Ucontent-typeVN
-jemplos, &2-&N &5%>-%>, chec7Bhttp -$ T -c OH jssl -2 $$$.verisign.com
Ahen the U$$$.verisign.comU server returns its content $ithin T seconds, a
)>;>-B5N $ill be returned. Ahen the server returns its content but exceeds
the T-second threshold, a )>;>-BA;=%@%' $ill be returned. Ahen an error
occurs, a )>;>-B&=@>@&;L $ill be returned.
&2-&N &-=>@Q@&;>-, chec7Bhttp -2 $$$.verisign.com -& OS
Ahen the certi#icate o# U$$$.verisign.comU is valid #or more than OS days, a
)>;>-B5N is returned. Ahen the certi#icate is still valid, but #or less than OS
days, a )>;>-BA;=%@%' is returned. ; )>;>-B&=@>@&;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 S0000 -u /ir@/portal -3
P4ozilla/S.0 ;compati'leW 46.* H.0W 7in)o=s &8 6.W 8ri)ent/S.0<P -- P3ccept-
2anguage# es-*6P -s P,ienveni)oP
chec+;i4operstatus
-ste comando comprueba el estado de operacin de inter#aces de red remotas
por medio de )%6P vO o )%6P v?.
chec+;i4status
-ste comando comprueba el estado general de inter#aces de red remotas por
medio de )%6P vO o )%6P v?.
chec+;imap
-ste comando realiza conexiones contra un servidor @6;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
&heuear @6;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
chec+;ircd
-ste comando comprueba el #uncionamiento de un servidor de @=& remoto.
=ealiza conexiones para ello, esta escrito en Perl.
chec+;ldap
-ste comando realiza conexiones y b.suedas L:;P contra un servidor remoto
y comprueba as* su estado de #uncionamiento y si responde dentro del tiempo
esperado o no.
(sage, chec7Bldap -2 YhostE -b YbaseBdnE g-p YportEh g-a YattrEh g-:
YbinddnEh
M-+ Upass=or)VN M-= U=arnItimeVN M-c UcritItimeVN M-t timeoutN
M-!Q-3N M-EQ-6N
%otes, @# this plugin is called via Uchec7BldapsU, method U)>;=>>L)U $ill be
implied /using de#ault port ?LX0 unless jportFG?G is speci#ied. @n that case U))L
on connectU $ill be used no matter ho$ the plugin $as called. >his detection is
deprecated, please use Uchec7BldapU $ith the UjstarttlsU or UjsslU #lags to de#ine
the behaviour explicitly instead.
chec+;load
-ste comando trabaja en local en la muina 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,chec7Bload g-rh -$ AL5;:O,AL5;:T,AL5;:OT -c
&L5;:O,&L5;:T,&L5;:OT
-r, jpercpu
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) --=arningR/3:$/(/3:$!/(/3:$3/
--criticalR/3:$E/(/3:$S/(/3:$6/
1
)efine service0
use generic-service
hostIname nom'reIhost
serviceI)escription Current 2oa)
chec-Icomman) chec-Iloa)AS.0AE.0A3.0A0.0A6.0AE.0
1
chec+;log
-ste comando es muy interesante para administradores del sistema. Qunciona
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, chec7Blog -Q log#ile -5 oldlog - uery (sage, chec7Blog jhelp (sage,
chec7Blog jversion
chec+;mailq
-ste comando #unciona en local en la muina 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 -= U=arnV -c UcritV M-7 U=arnVN M-C UcritVN M-4 U483VN M-t
UtimeoutVN M-v ver'oseN
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< R 4in. num'er of messages in Bueue to generate =arning
-c ;--critical< R 4in. num'er of messages in Bueu to generate critical alert
; = U c <
-7 ;--7arning< R 4in. num'er of messages for same )omain in Bueue to generate
=arning
-C ;--Critical< R 4in. num'er of messages for same )omain in Bueue to generate
critical alert ; 7 U C <
-t ;--timeout< R +lugin timeout in secon)s ;)efault R S<
-4 ;--mailserver< R M sen)mail Q Bmail Q postfix Q exim N ;)efault R sen)mail<
-h ;--help<
-G ;--version<
-v ;--ver'ose< R )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-.
chec+;mrtg
-ste comando tambin trabaja en local en la muina ue est ejecutando
%agios y permite monitorizar los #icheros de sucesos de 6=>'+ en concreto
permite monitorizar cualuiera 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.
>his plugin $ill chec7 either the average or maximum value o# one o# the t$o
variables recorded in an 6=>' log #ile.
(sage,chec7Bmrtg -Q logB#ile -a Y;<' i 6;RE -v variable -$ $arning -c critical
g-l labelh g-u unitsh g-e expireBminutesh g-t timeouth g-vh
chec+;mrtgtra4
-ste comando permite comprobar el servicio (P) en un euipo remoto y
establecer umbrales para, seg.n el valor devuelto, disparar una advertencia,
un error severo o nada.
>his plugin $ill chec7 the incoming8outgoing trans#er rates o# a router, s$itch,
etc recorded in an 6=>' log. @# the ne$est log entry is older than
YexpireBminutesE, a A;=%@%' status is returned. @# either the incoming or
outgoing rates exceed the YiclE or YoclE thresholds /in 4ytes8sec0, a &=@>@&;L
status results. @# either o# the rates exceed the Yi$lE or Yo$lE thresholds /in
4ytes8sec0, a A;=%@%' status results.
(sage chec7Bmrtgtra# -Q YlogB#ileE -a Y;<' i 6;RE -v YvariableE -$
Y$arningBpairE-c YcriticalBpairE g-e expireBminutesh g-t timeouth g-vh
5ptions, -h, jhelp
+rint )etaile) help screen
-<, jversion
+rint version information
-Q, j#ilenameF)>=@%'
Cile to rea) log from
-e, jexpiresF@%>-'-=
4inutes after =hich log expires
-a, jaggregationF/;<'i6;R0
8est average or maximum
-$, j$arning
7arning threshol) pair UincomingV(UoutgoingV
-c, jcritical
Critical threshol) pair UincomingV(UoutgoingV
%otes, - 6=>' stands #or 6ulti =outer >ra##ic 'rapher. @t can be do$nloaded
#rom
http#//ee-staff.ethz.ch/[oeti-er/=e'tools/mrtg/mrtg.html
- Ahile 6=>' can monitor things other than tra##ic rates, this
plugin pro'a'ly =on>t =or- =ith much else =ithout mo)ification.
- >he calculated i8o rates are a little o## #rom $hat 6=>' actually
reports. .>m not sure =hy this is right no=( 'ut =ill loo- into it
for future enhancements of this plugin.
chec+;nagios
-ste comando se ejecuta en la muina 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#iue.
(sage,chec7Bnagios -Q Ystatus log #ileE -e YexpireBminutesE -&
YprocessBstringE
5ptions, -h, jhelp
+rint )etaile) help screen
-<, jversion
+rint version information
-Q, j#ilenameFQ@L-
&ame of the log file to chec-
-e, jexpiresF@%>-'-=
4inutes aging after =hich logfile is consi)ere) stale
-&, jcommandF)>=@%'
6u'string to search for in process arguments
-v, jverbose
6ho= )etails for comman)-line )e'ugging ;&agios may truncate output<
-xamples, chec7Bnagios -e T -Q 8usr8local8nagios8var8status.log -&
8usr8local8nagios8bin8nagios
negate
-ste comando sirve para, en combinacin con cualuiera de los otros plugins,
negar su valor. Por ejemplo, el uso normal del comando chec7B#tp es ue
devuelve 5N cuando el servicio est #uncionando y &=@>@&;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 g-t timeouth g-o$cu )>;>-h g-sh Yde#inition o# $rapped pluginE
chec+;nntp
-ste comando establece conexiones %%>P contra un servidor remoto
especi#icado para comprobar ue el servicio de %-A) est activo.
>his plugin tests %%>P connections $ith the speci#ied host /or unix soc7et0.
(sage,chec7Bnntp -2 host -p port g-$ Y$arning timeEh g-c Ycritical timeEh g-s
Ysend stringEh g-e Yexpect stringEh g- Yuit stringEhg-m Ymaximum bytesEh
g-d YdelayEh g-t Ytimeout secondsEh g-r Yre#use stateEh g-6 Ymismatch
stateEh g-vh g-Si-Gh g-jh g-: Ydays to cert expiryEh g-) Yuse ))LEh g--h
chec+;nt
-ste comando realiza peticiones a un euipo Aindo$s %>8IHHH8RP remoto ue
est ejecutando el servicio %)&lient para comprobar parmetros locales a
dicho euipo como por ejemplo uso de la &P(, de la memoria, del disco,
etctera.
chec+;ntp
-ste comando ejecuta ntpdate para comprobar ue el timestamp de la
muina local ue ejecuta %agios no di#iere en ms de lo especi#icado del
timestamp de una muina remota dado.
chec+;n#stat
Plani#icacin, especi#icacin, diseCo y evaluacin de redes -ste comando
realiza peticiones a un euipo %ovell remoto ue est ejecutando el servicio
6=>'-R> %L6 para comprobar parme tros locales a dicho euipo como por
ejemplo uso de la &P(, de la memoria, del disco, etctera.
chec+;oracle
-ste comando permite comprobar el estado de un )'4: 5racle en un
ordenador remoto as* como el estado de los tablespaces, de bases de datos, de
las cach, etctera, de dicho servidor.
chec+;overcr
-ste comando permite comprobar el estado de un servicio 5ver-&=
ejecutndose en un sistema (%@R remoto. =ealiza peticiones a este servicio
para comprobar su estado.
chec+;pop
-ste comando comprueba si el servicio P5P de un euipo remoto est
#uncionando correctamente. =ealiza peticiones para ello.
chec+;procs
-ste comando #unciona en la muina donde se est ejecutando %agios.
&omprueba el n.mero de procesos ue se estn ejecutando en la muina y
genera advertencias cuando este n.mero sobrepasa el umbral especi#icado.
chec+;real
-ste comando comprueba si el servicio =-;L de un euipo remoto est
#uncionando correctamente. =ealiza peticiones para ello.
chec+;rpc
-ste comando comprueba si un servicio =P& remoto est registrado y
#uncionando correctamente. (tiliza para ello llamadas a rpcin#o.
chec+;sensors
-ste comando #unciona en la muina local donde se ejecuta %agios+ necesita
de pauetes adicionales instalados en el sistema de monitorizacin y su
#uncin es comprobar el estado del hard$are de la muina.
chec+;smtp
-ste comando permite conocer el estado de un servicio )%6P de una muina
remota. =ealiza conexiones a este servicio para averiguar la in#ormacin
necesaria.
chec+;snmp
-ste comando permite conocer el estado de una muina remota mediante la
consulta a su agente )%6P. (tiliza para ello el protocolo )%6P en cualuiera
de sus versiones O, I ?.
chec+;ssh
-ste comando permite controlar si el servicio ))2 de una muina remota est
activo o no. =ealiza peticiones a este servicio para obtener la in#ormacin
necesaria.
chec+;s#ap
-ste comando #unciona en local, en la muina donde est instalado %agios.
Permite monitorizar el tamaCo de la memoria de intercambio utilizada y
generar advertencias o errores cuando este valor sobrepaso los umbrales
establecidos.
chec+;tcp
-ste comando permite realizar peticiones arbitrarias a conexiones /soc7ets0
>&P contra sistemas remotos. Por tanto permite monitorizar cualuier servicio
ue utilice soc7ets >&P 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
chec+;time
-ste comando permite comprobar si el servicio de hora />@6-0 est
#uncionando en una muina remota. =ealiza conexiones a este servicio para
obtener la in#ormacin.
chec+;udp
-ste comando permite realizar peticiones arbitrarias a conexiones /soc7ets0
(:P contra sistemas remotos. Por tanto permite monitorizar cualuier servicio
ue utilice soc7ets (:P para recibir peticiones.
chec+;ups
-ste comando permite monitorizar el estado del servicio (P) en muinas
remotas+ para ello hace peticiones a este servicio. %ecesita pauetes
adicionales instalados en el sistema de monitorizacin.
chec+;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.
chec+;vs<
-ste comando permite comprobar ue el tamaCo 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 2>6L como un
enlace hipertexto navegable.
(sage,urlize YurlE YpluginE YargOE Z Yarg%E
5ptions, -h, jhelp
+rint )etaile) help screen
-<, jversion
+rint version information
-xamples, Pay close attention to uoting to ensure that the shell passes the
expected data to the plugin. Qor example, in,
urlize http,88example.com8 chec7Bhttp -2 example.com -r Ut$o $ordsU
the shell =ill remove the single Buotes an) urlize =ill see#
urlize http,88example.com8 chec7Bhttp -2 example.com -r t$o $ords
?ou pro'a'ly =ant#
urlize http,88example.com8 !chec7Bhttp -2 example.com -r Ut$o $ordsU"
.mportante Para ue este comando #uncione bien, deberemos tener
con#igurado en el archivo cgi#cfg la siguiente directiva ,
escapeIhtmlItagsR0
chec+;heartbeat
)cript simple para cheuear el estado de 2eart4eat 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.%&R.3
+:%$&34*RO/'in/'asename /0O
+:%$+385ROecho /0 Q /'in/se) -e >s(M\\/NM^\\/NM^\\/N*/((>O
&%F*I&34*ROuname -nO
C2I68R>/usr/'in/clIstatus>
#nagios error co)es
#. /+:%$+385/utils.sh
%KR0
73:&.&$R
C:.8.C32R!
9&K&%7&R3
usage ;< 0
echo P\
&agios plugin to heart'eat.
9sage#
/+:%$&34*
/+:%$&34* M--help Q -hN
/+:%$&34* M--version Q -vN
%ptions#
--help -l +rint this help information
--version -v +rint version of plugin
P
1
help ;< 0
printIrevision /+:%$&34* /:*G.6.%&
echoW usageW echoW support
1
=hile test -n P/P
)o
case P/P in
--help Q -h<
help
exit /6838*I%KWW
--version Q -v<
printIrevision /+:%$&34* /:*G.6.%&
exit /6838*I%KWW
# -5<
# shift
# 5%68R/WW
# -C<
# shift
# C%449&.8?R/WW
*<
echo P5eart'eat 9&K&%7&# 7rong comman) usagePW exit /9&K&%7&WW
esac
shift
)one
/C2I68 h'status V /)ev/null
resR/X
if M /res -ne 0 N
then
echo P5eart'eat C:.8.C32# 5eart'eat is not running on this no)eP
exit /C:.8.C32
fi
)eclare -i .R0
)eclare -i 3R0
&%F*6RO/C2I68 listno)esO
for no)e in /&%F*6
)o
statusRO/C2I68 no)estatus /no)eO
let .R/.L
if M /status RR PactiveP N
then
let 3R/3L
fi
)one
if M /3 -eB 0 N
then
echo P5eart'eat C:.8.C32# /3//.P
exit /C:.8.C32
elif M /3 -ne /. N
then
echo P5eart'eat 73:&.&$# /3//.P
exit /73:&.&$
else
echo P5eart'eat %K# /3//.P
exit /%K
fi
)efine comman) 0
comman)Iname chec-IhaI'yIssh
comman)Iline /96*://chec-I'yIssh -l root -5 /5%683FF:*66/ -C
P/usr/local/s'in/chec-Iheart'eat.shP
1
chec+;systemimager
)cript para cheuear ue nuestras imgenes estn actualizadas a la #echa
#A/usr/'in/php -B
# 6ergio CayuBueo Ucayu@cayu.com.arV
# http#//cayu.com.ar
UXphp
/listaIimagenes R shellIexec;PsiIlsimage --ver'oseQgrep .mageP<W
/listaIimagenes R pregIsplit;P/M\nNL/P(/listaIimagenes<W
/fechaIactual R )ate;>?.m.)><W
foreach;/listaIimagenes as /imagen< 0
if;strlen;/imagen<V0< 0
if;@A/i< 0
/iRW
1
/imagen R pregIsplit;P/M\sNL/P(/imagen<W
/imagenesM/iNM>nom're>N R /imagenM!NW
/imagenesM/iNM>actualiza)a>N R /imagenMENW
/imagenesM/iNM>ip>N R /imagenM"NW
if;/imagenMEN RR /fechaIactual< 0
/imagenesM/iNM>esta)o>N R Po-P W
1 else 0
/imagenesM/iNM>esta)o>N R PcriticalP W
/criticalRW
1
/iLLW
1
1
if;@/critical< 0
/hea) R PC:.8.C32 - 5u'o un )esfasa@e en una o mas imagenes\nPW
/exit R !W
1 else 0
/hea) R P%K - 8o)as las imagenes actualiza)as a la fecha\nPW
/exit R 0W
1
print /hea)W
foreach;/imagenes as /imagen< 0
if;strlen;/imagenM>nom're>N<UH< 0
/ta' R P\t\tPW
1 else 0
/ta' R P\tPW
1
if;/imagenM>esta)o>N RR Po-P< 0
print P%K - P./imagenM>nom're>N.P P./ta'./imagenM>ip>N.P\nPW
1 else 0
print PC:.8.C32 - P./imagenM>nom're>N.P P./ta'./imagenM>ip>N.P \t
actualiza)o a # P./imagenM>actualiza)a>N.P\nPW
1
1
exit;/exit<W
XV
)efine comman) 0
comman)Iname chec-IsiI'yIssh
comman)Iline /96*://chec-I'yIssh -l root -5 /5%683FF:*66/ -C
P/usr/local/s'in/chec-Isystemimager.phpP
1
chec+;dba;(pc;pending
&heueo de %istributed transactions de 5racle, por medio de ))2.
#A/usr/'in/perl
open;6D2+296I6*2*C8( PsBlplus -6 \P/ as sys)'a\P
@/usr/local/'in/)'aI!pcIpen)ingIselect.sBl QP< or )ie P&o pue)o e@ecutar# /APW
=hile ;U6D2+296I6*2*C8V< 0
chomp;/I<W
if;length;/I<V< 0
/select R /IW
1
1
close 6D2+296I6*2*C8W
if;/select RR Pno ro=s selecte)P< 0
print P%K - :esulta)o # P./select.P Q pen)ingR0W\nPW
exit 0W
1 else 0
open;6D2+296IF*2*8*( Pecho \Pexecute
sys.)'msItransaction.purgeIlostI)'Ientry;>P./select.P><W\PQsBlplus -6 \P/ as
sys)'a\P QP< or )ie P&o pue)o e@ecutar# /APW
=hile ;U6D2+296IF*2*8*V< 0
chomp;/I<W
if;length;/I<V< 0
/)elete R /IW
1
1
close 6D2+296IF*2*8*W
print P73:&.&$ - :esulta)o # P./select.P # P./)elete.P Q pen)ingRW\nPW
exit W
1
-l script sl
set pagesize 0
set trimspool on
set hea)sep off
select 2%C32I8:3&I.F from )'aI!pcIpen)ingW
exitW
-l chec7Bcommand en la con#iguracion del servicio
chec-I'yIsshAsu)o su - oracle -c /usr/local/'in/)'aI!pcIpen)ing.pl
-l sudoers del euipo a monitorear
monitoreo 322 R &%+3667F# /'in/su - oracle -c /usr/local/'in/)'aI!pcIpen)ing.pl
chec+;microstrategy
&heuear ue el servicio de 6icro)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
chec+;microstrategy3sh
#A/'in/sh
632.F3I665ROssh / -l monitoreo Psu)o /msis/var/opt/4icro6trategy/'in/mstrctl -s
.ntelligence6erver gs Q grep stateQ se) >s/UM^VN*MVN//g> Q se) >s/\t//g> Q se)
>s/\n//g>PO
if M /632.F3I665RPrunningP N
then
echo P%K - +roceso 4icro6trategy corrien)oP
exit 0W
else
echo PC:.8.C32 - 5ay un pro'lema con el proceso 4icro6trategyP
fi
count;archlogs3pl
#A/usr/'in/perl
use strictW
use =arningsW
my /%:3C2*I6.FR/3:$GM0NW
su' getIsorte)Ifiles 0
my /path R shiftW
open)ir my;/)ir<( /path or )ie Pno pue)o a'rir /path# /APW
my Zhash R map 0/I RV ;stat;/I<<MHN QQ un)ef1 # saltar listas vacias
map 0 P/path/IP 1
grep 0 m/.)'f/i 1
rea))ir /)irW
close)ir /)irW
return ZhashW
1
my Zfiles R getIsorte)Ifiles;P/oracle/arclog/P./%:3C2*I6.F.P/P<W
my /count R -eys ZfilesW
if;/count U 60< 0
print P%K - *ncontra)os /count re)o logs en /oracle/arclog/P.
/%:3C2*I6.F.P/Q>re)ologs>R/count\nPW
exit 0W
1 else 0
print PC:.8.C32 - *ncontra)os /count re)o logs en /oracle/arclog/P.
/%:3C2*I6.F.P/Q>re)ologs>R/count\nPW
exit !W
1
chec+;snmp;i4status;v13pl
<ersion modi#icada por mi del script chec7BsnmpBi#status.pl para ue pueda
consultar por medio de snmp v?
Notas importantes
Cstos son los comandos )ue acompa-an a $agios y )ue deberan ser invocados
cada uno con sus respectivos parmetros y su forma de ejecucin# ara saber
ms acerca de estos datos, necesarios para el uso de los comandos, se pueden
invocar en lnea de comandos con el parmetro 2& lo )ue mostrar en la
pantalla una ventana de descripcin del comando, los parmetros )ue usa y
cmo se invoca# ;ecordar )ue los ejecutables de los comandos se encuentran
dentro del directorio libe(ec de la instalacin de $agios#
;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
Notas
@nicio del documento 3unio de IHHJ y a lo largo del tiempo le #ui agregando
cosas ue descubri a lo largo de mi trabajo
=ecientemente agregu algunas correciones al IX de 6arzo de IHOO
=ecientemente agregu algunas correciones al HS de ;bril de IHOI
-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.phplidFmanuales,nagios
Pueden encontrar mas sobre mi o hacerme consultas via http,88cayu.com.ar
m 6ergio Cayu)ueo 0AE0"AJ"EA EF?AG

También podría gustarte