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 e uipo ue se ocupe de estar !controlado y observando" el #uncionamiento de la red, esto podemos realizarlo por medio de un so#t$are llamado %agios. %agios es un sistema de monitorizacin de e uipos y de servicios de red, escrito en & y publicado bajo la '%( 'eneral Public License, el lenguage con el cual esta desarrollado nos asegura una rpida ejecucin y su licencia ue lo determina como )o#t$are Libre nos asegura ue siempre tendremos actualizaciones disponibles y ue hay una gran comunidad de desarrolladores soportndolo. &reado para ayudar a los administradores a tener siempre el control de u est pasando en la red ue administran y conocer los problemas ue ocurren en la in#raestructura ue administran antes de ue los usuarios de la misma los perciban, para as* no slo poder tomar la iniciativa, sino asumir la responsabilidad de hacer ue las cosas sucedan+ decidir en cada momento lo ue ueremos hacer y cmo lo vamos a hacer, debido a ue este so#t$are nos permite obtener datos, interpretarlos y tomar decisiones en base a ello como, Conservar y almacene datos de la red para manejar reportes y tendencias Ver y analizar la red, as como el trfico de la red a travs del tiempo Monitorear el estado de la red en comparacin a los reportes de anlisis Generar reportes sustentados para justificar las necesidades de actualizacin de la red Para #acilitar tareas de explotacin de datos, hay di#erentes aditivos como un visor de reportes integrados, en el cual se puede ver el histrico de actividad y per#ormance de servicios, y adems un visor de diagramas de red con el estado actual de cada e uipo. -l mismo, esta constituido por un %.cleo ue construye la inter#az de usuario y por plugins los cuales representan los ojos y o*dos de %agios y por lo cual se encargan de recopilar in#ormacin /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 e uipos como servidores corriendo di#erentes sistemas operativos, routers de los cuales dependen varios e uipos. 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 e uipos para una posterior elaboracin de reportes etc, elaborando una con#iguracin personalizada de %agios para cada caso en particular, por medio de testeo de pa uetes de red, o haciendo uso de di#erentes #unciones ue provee el protocolo )%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 e uipos di#erentes. &on lo cual podremos concluir si el sistema , Lleva a cabo e#icazmente su #inalidad (tiliza e#icientemente los recursos. 9a ue podemos , :etectar de #orma sistemtica el uso de los recursos y los #lujos de in#ormacin dentro de una organizacin. :eterminar u in#ormacin es cr*tica para el cumplimiento de su misin y objetivos, identi#icando necesidades, duplicidades, costos, valor y barreras, ue obstaculizan #lujos de in#ormacin e#icientes. ;nlizar de e#iciencia del sistema. <eri#icar el cumplimiento de %ormativas. =evisin de la gestin de recursos.

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 che ueos de servicios dependiendo de sus necesidades, usando sus herramientas pre#eridas /4ash, &11, Perl, =uby, Python, P2P, &D, 3ava, etc.0.

&he ueo de servicios paralizados. Posibilidad de de#inir la jerar u*a de la red, permitiendo distinguir entre host ca*dos y host inaccesibles. %oti#icaciones a los contactos cuando ocurren problemas en servicios o hosts, as* como cuando son resueltos / <*a email, pager, 3abber, )6) o cual uier 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 noti#icaciones, historial de problemas, archivos de registros, etc. actual,

=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 bien esto, no sobrevaluar pero tampoco escatimar ue plantear

-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 e uipo 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 re uerimientos

areas
Dependencias
Para una correcta instalacin de %agios, con todas sus caracter*sticas es necesario tener instalados ciertos pa uetes de so#t$are en el sistema, la instalacin puede variar seg.n la distribucin de Linux ue elijamos, si los tenemos empa uetados, o si los tenemos ue compilar en instalar manualmente. !aquete Perl %et,,)%6P &rypt,,:-) :igest,,26;& :igest,,)2;O ==:>ool Descripcin "itio #eb @nterprete para el lenguaje de script http,88$$$.perl.org Perl 6odulo de Perl para consultas )%6P http,88search.cpan.org8dis t8%et-)%6P 6odulo de Perl para encripcin :-), http,88search.cpan.org8Md necesario para consultas )%6Pv? paris8&rypt-:-)8 Neyed-2ashing #or 6essage http,88search.cpan.org8dis ;uthentication t8:igest-26;&8 Perl inter#ace to the )2;-O http,88search.cpan.org8dis algorithm t8:igest-)2;O8 (tilitario para generacin de http,88oss.oeti7er.ch8rrdto gr#icas de red y adems ol su mdulo de integracin con el lenguaje Perl Librer*a de compresin utilizada por http,88$$$.gzip.org8zlib8 las utilidades gra#icas Librer*a para exportacin jpg http,88$$$.ijg.org8 Librer*a para exportacin png http,88$$$.libpng.org8pub 8png8 Librer*a para procesamiento de http,88$$$.#reetype.org8 #uentes (tilitario para generacin de http,88$$$.graphviz.org8 gra#icas Librer*as gr#icas generales http,887oala.ilog.#r8lehors8 xpm.html )ervidor Aeb http,88httpd.apache.org8

Plib Lib3P-' LibP%' QreetypeI 'raphviz RQreeLG-libs ;pache I

P2P 6y)KL Post#ix ': %agvis P%PS%agios

%:5 Plugins )%6P Plugins %agios %agiosKL :o7u$i7i )yslog-%g

@nterprete de lenguaje de script )istema de base de datos )6>P para enviar mail Librer*a para generacin de #ormatos gra#icos ;ditivo para la generacin de diagramas dinamicos ;ditivo para la generacin de gr#icos estad*sticos y reportes visuales ;gregado para articular %agios con 6y)KL Plugins de che ueo standard de %agios Plugins para la integracin de che ueos )%6P de %agios )itio de descarga o#icial 2erramienta visual de con#iguracin de %agios via Aeb 2erramienta de documentacin colaborativa Logueo de eventos del sistema

http,88$$$.php.net http,88$$$.mys l.com http,88$$$.post#ix.org8 http,88$$$.libgd.org8 http,88$$$.nagvis.org8 http,88$$$.pnpSnagios.or g8 http,88$$$.nagios.org http,88$$$.nagios.org http,88nagios.manubulon. com8 http,88$$$.nagios.org http,88$$$.nagios l.org8 http,88$$$.do7u$i7i.org8 http,88$$$.balabit.com8n et$or7-security8syslogng8 http,88$$$.intersectallian ce.com8projects8index.ht ml http,88mathias7ettner.de8chec7m7Blives tatus.html

)%;=-

;gente )yslog para clientes Aindo$s

6N Livestatus

'no7ii

;ditivo para obtener los datos de %agios en <ivo via )oc7et /muy .til para abandonar %:50 ;plicacin de inter#az para celulares http,88gno7ii.org y modems ?', para la realizacin de llamadas y alertas )6)

%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 pa uetes bajados en #ormato de codigo fuente. Nagios Para empezar deberemos descargar el cdigo fuente del so#t$are %agios desde su sitio $eb, en #ormato tar.gz, a la #echa la .ltima versin es la ?.H. Para ello descomprimiremos el pa uete descargado y luego procederemos a compilarlo.
root@localhost # tar xvfzp nagios-3.0.6.tar.gz root@localhost nagios-3.0.6 # ./configure *** Configuration summary for nagios 3.0.6 $eneral %ptions# ------------------------&agios executa'le# &agios user/group# Comman) user/group# *m'e))e) +erl# *vent ,ro-er# .nstall /0prefix1# 2oc- file# Chec- result )irectory# .nit )irectory# 3pache conf.) )irectory# 4ail program# 5ost %6# 7e' .nterface %ptions# -----------------------5842 9:2# C$. 9:2# 8raceroute ;use) 'y 73+<# !-0 -!00" ***#

nagios nagios(nagios nagios(nagios no yes /usr/local/nagios /0prefix1/var/nagios.loc/0prefix1/var/spool/chec-results /etc/rc.)/init.) /etc/http)/conf.) /'in/mail linux-gnu

http#//localhost/nagios/ http#//localhost/nagios/cgi-'in/ /'in/traceroute

:evie= the options a'ove for accuracy. .f they loo- o-ay( type >ma-e all> to compile the main program an) C$.s. root@localhost nagios-3.0.6 # ma-e all *** Compile finishe) *** .f the main program an) C$.s compile) =ithout any errors( you can continue =ith installing &agios as follo=s ;type >ma-e> =ithout any arguments for a list of all possi'le options<# ma-e install - 8his installs the main program( C$.s( an) 5842 files ma-e install-init - 8his installs the init script in /etc/rc.)/init.) ma-e install-comman)mo)e - 8his installs an) configures permissions on the )irectory for hol)ing the external comman) file ma-e install-config

- 8his installs *634+2** config files in /usr/local/nagios/etc ?ou>ll have to mo)ify these sample files 'efore you can use &agios. :ea) the 5842 )ocumentation for more info on )oing this. +ay particular attention to the )ocs on o'@ect configuration files( as they )etermine =hat/ho= things get monitore)A ma-e install-=e'conf - 8his installs the 3pache config file for the &agios =e' interface *** 6upport &otes ******************************************* .f you have Buestions a'out configuring or running &agios( please ma-e sure that you# - 2oo- at the sample config files - :ea) the 5842 )ocumentation - :ea) the C3Ds online at http#//===.nagios.org/faBs 'efore you post a Buestion to one of the mailing lists. 3lso ma-e sure to inclu)e pertinent information that coul) help others help you. 8his might inclu)e# 7hat version of &agios you are using 7hat version of the plugins you are using :elevant snippets from your config files :elevant error messages from the &agios log file

Cor more information on o'taining support for &agios( visit# http#//===.nagios.org/support/ ************************************************************* *n@oy. root@localhost nagios-3.0.6 # ma-e fullinstall root@localhost nagios-3.0.6 # ma-e install-config

Para correr el daemon del servicio nagios y realizar tareas de administracin y con#iguracin sobre el, se debi crear el usuario nagios y el grupo nagios con privilegios de usuario normal del sistema, con su home ubicado en el directorio de instalacin de nagios $usr$local$nagios, luego se le atribuyeron permisos de acceso y escritura para dicho usuario.
root@localhost # groupa)) nagios root@localhost # usera)) nagios -) /usr/local/nagios -$ nagios root@localhost # cho=n nagios#nagios -: /usr/local/nagios

Para dejar corriendo el servicio deberemos ejecutar , "etc"init#d"nagios start Luego deberemos bajarnos el pa uete de plugins bsico de %agios y descomprimirlo para luego compilarlo
root@localhost root@localhost root@localhost root@localhost # tar xvfzp nagios-plugins- .E. 3.tar.gz nagios-plugins- .E. 3 # ./configure nagios-plugins- .E. 3 # ma-e all 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 pa uete pnpSnagios,
root@localhost # tar xvfzp pnp-0.E. !.tar.gz root@localhost pnp-0.E. ! # ./configure *** Configuration summary for pnp 0.E. ! $eneral %ptions# ------------------------&agios user/group# .nstall )irectory# 5842 Fir# Config Fir# +ath to rr)tool# ::Fs +erl 4o)ules# ::F Ciles store) in# processIperf)ata.pl 2ogfile# +erf)ata files ;&+CF< store) in# 0-!00" ***

------------------nagios nagios /usr/local/nagios /usr/local/nagios/share/pnp /usr/local/nagios/etc/pnp /usr/'in/rr)tool ;Gersion .!.!H< C%9&F ;Gersion .!0!H< /usr/local/nagios/share/perf)ata /usr/local/nagios/var/perf)ata.log /usr/local/nagios/var/spool/perf)ata/ .f they loo- o-ay(

:evie= the options a'ove for accuracy. 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 pa uete 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 $eneral %ptions# ------------------------&F%!F, user# nagios &F%!F, group# nagios .E'J 0-3 -!00J ***#

: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 exporta datos desde el demonio de nagios.

ue

;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 entender. ue el demonio %:5I:4 puede

)i el %:565: esta escrito para un archivo de salida, usted puede con#igurarlo para rotarlo periodicamente y8o procesarlo en otra ma uina #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#o ue, %: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#o ue 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#o ue 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#o ue 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 pe ueCa de la &P( es necesario. Pero eso ni si uiera se blo uear %agios. Livestatus produce cero 8 ) de disco cuando uering datos de estado. ;cceso a los datos es mucho ms rpido una base de datos )KL. ue analizar status.dat o consultar

%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 livestatusIso3n)ingCil... gLL -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48 livestatusIsoClientDue... gLL -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48 livestatusIsoColumn.o ... gLL -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48 livestatusIsoColumnsCo... gLL -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48 livestatusIsoContactsC... gLL -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48 livestatusIsoCustomGar... gLL -F53G*IC%&C.$I5 -.. -... -.../nagios -f+.C -g -%! -48 livestatusIsoCustomGar... .... root@linux# ma-e install 4a-ing install in src ma-eM N# *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-eM N# 2eaving )irectory O/)/nagvis-)ev/src/m--livestatus- . .!/src> ma-eM N# *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-eM N# 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 !S6 EE"66N livestatus# Gersion . .! initializing. 6oc-et path# >/var/li' /nagios/r=/live> M !S6 EE"66N livestatus# Create) 9&.T control soc-et at /var/li'/nagios/r=/ live M !S6 EE"66N livestatus# %pene) 9&.T soc-et /var/li'/nagios/r=/live M !S6 EE"66N livestatus# successfully finishe) initialization M !S6 EE"66N *vent 'ro-er mo)ule >/usr/local/li'/m--livestatus/livestatus.o> initializ e) successfully. M !S6 EE"66N Cinishe) )aemonizing... ;&e= +.FRS363< M !S6 EE"66N livestatus# 6tarting 0 client threa)s M !S6 EE"66N livestatus# *ntering main loop( listening on 9&.T soc-et

5pciones del mdulo Opcin debug H 5alor por de4ault Que signi4ica )et this to O in order to ma7e Livestatus log each uery it executes in nagios.log 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 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 Livestatus needs one thread #or each concurrent client connection. ; #ixed number o# threads is created $hen %agios starts >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 >his value is in ms. @n order to avoid being hung by bro7en clients, Livestatus imposes a limit on the

maxBcachedBmessages THHHHH

maxBresponseBsize

OHSLTJGHH

numBclientBthreads

OH

threadBstac7Bsize

GTT?G

ueryBtimeout

OHHHH

idleBtimeout

?HHHHH

time #or reading the uery #rom the client. ; value o# H disables the timeout >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 pa uete %agvis desde su sitio $eb, y descomprimirlo y copiarlo a un directorio visible desde la inter#az $eb de %agios.
root@localhost # tar xvzf nagvis- .3.x.tar.gz root@localhost # mv nagvis /usr/local/nagios/share

Para instalar la con#iguracin por de#ecto deberemos dentro de 8usr8local8nagios8share8nagvis renombrar o mover el archivo etc8nagvis.ini.phpsample a etc8nagvis.ini.php. Para su correcto #uncionamiento necesitaremos establecer una serie particular de permisos
root@localhost root@localhost root@localhost root@localhost root@localhost root@localhost root@localhost # # # # # # # chmo) chmo) chmo) chmo) chmo) chmo) chmo) 66E JJS 66E JJS 66E JJS 66E /usr/local/nagios/share/nagvis/etc/nagvis.ini.php /usr/local/nagios/share/nagvis/nagvis/images/maps /usr/local/nagios/share/nagvis/nagvis/images/maps/* /usr/local/nagios/share/nagvis/etc/maps /usr/local/nagios/share/nagvis/etc/maps/* /usr/local/nagios/share/nagvis/var /usr/local/nagios/share/nagvis/var/*

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%68IYsourceR Yvie=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)escriptionNYsourceR Yvie=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)thRP 00ZPV UtrV UA-- ,*$.& servicegroup --VUt) classRPla'elPVUla'elVMlangIchil)Iname NU/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'@Iname NU/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 pa uete de su $eb o#icial y proceder a compilarlo.


root@localhost root@localhost root@localhost root@localhost root@localhost root@localhost root@localhost root@localhost root@localhost root@localhost root@localhost root@localhost root@localhost root@localhost # # # # # # # # # # # # # # groupa)) mysBl usera)) -g mysBl mysBl gunzip U mysBl-G*:6.%&.tar.gz Q tar -xvf c) mysBl-G*:6.%& ./configure --prefixR/usr/local/mysBl ma-e ma-e install cp support-files/my-me)ium.cnf /etc/my.cnf c) /usr/local/mysBl 'in/mysBlIinstallI)' --userRmysBl cho=n -: root . cho=n -: mysBl var chgrp -: mysBl . '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 Vlo ueseaW por la contraseCa ue desemos establecer, pero es importante no olvidarse de teclear las comillas simples. &omprobamos la nueva contraseCa abriendo una sesin en mys l,

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 mys l para interactuar con el servidor, por ejemplo, mys)l. s&o+ databases/ %os mostrar las bases de datos ue existan en el servidor, normalmente y si acabamos de instalar, aparecern las bases de datos mys l y test. :eberemos crear una base de datos llamada %agios mys)l.create database nagios/
Duery %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 empa uetado en nuestra distribucion Linux, es bastante simple CentO" y Red:at Para instalar el pa uete mys l haremos uso de la utilidad de sistema 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 arran ue del servicio Lo habitual ser ue cuando arran ue 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 mys ld 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 mys l en :ebian, deberemos ejecutar , apt*get install mys)l*server mys)l*common mys)l*client Para arrancar el servicio y dejarlo corriendo , "etc"init#d"mys)l start 9 para setear su arran ue por de#ecto , update*rc#d *f mys)l defaults Nota "u"* Para setear el arran ue de un servicio en )u)- Linux deberemos ejecutar el comando insserv *d nombre'servicio con el parametro *d estariamos indicando una opcion similar a defaults como en :ebian. 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 pa uetes 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 pa uetes 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 e uipos 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 pa uete %agios nos termina uedando una nomenclatura de directorios como la siguiente , bin

5)ui se almacenan los binarios ejecutables etc Guarda la configuracion de $agios libe2ec 6e almacenan los plugins )ue efectuaran los c&e)ueos a monitorear sbin %entro de este directorio se mantienen los ejecutables CG7 de la interfaz +eb 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 che uear, comandos de ejecucion, contactos de noti#icacin, intervalos de che ueos. :entro de el hay di#erentes subdirectorios y archivos. libe2ec ;lli se contienen lo ejecutables de los plugins ue e#ectuan los che ueos, )%6P, );P, 5racle, ))2, ue pueden ser binarios, scripts en Perl, P2P, )hell, 3ava, etc. sbin ; ui se almacenan los ejecutables cgi 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 che ueos, in#ormacion de ejecucion actual, archivos de soc7ets, registros de logs, colas de ejecucin de che ueos. ue se ejecutaran para la visualizacion

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 2>>P nagios3c4g

ue se autenti#icaran por

;rchivo de con#iguracion principal de %agios, a ui se especi#ican los directorios de trabajo y se incluyen los archivos de con#iguracion extra a utilizar por %agios &on diversos parametros , log;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 che ueo del host local objects$printer3c4g Plantilla de ejemplo de che ueo de impresoras por )%6P objects$s#itch3c4g Plantilla de ejemplo de che ueo de s$itch por )%6P objects$templates3c4g Plantillas generales de host, contactos, y servicios objects$timeperiods3c4g

Plantilla inicial para de#inir periodos de che ueos, a u* se de#inen los rangos de tiempo donde son vlidos el env*o de alertas y las veri#icaciones de los servicios ue estn #uncionando objects$#indo#s3c4g Plantilla de ejemplo de che ueo de e uipos Aindo$s services$ ; ui vamos a de#inir los servicios ue usaremos en los che ueos. )e de#ine la mtrica o el servicio a monitorizar y el host8grupo de hosts sobre el ue se ejecuta var$r#$ ;lli se encuentra un archivo special de soc7et ue realiza la comunicacion de los comando y ordenes de la inter#az $eb hacia nagios, como cambiar horarios de che ueo, deshabilitar noti#icaciones etc. -l archivo ue alli se encuentra nagios#cmd debe tener permisos de escritura y lectura por el propietario y el grupo de pertenencia nagios?nagcmd =@@A>, nagcmd es un grupo especial en el cual vamos a incluir al usuario ue ejecuta el servidor $eb / 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-IintervalRcomman)IfileR/usr/local/nagios/var/r=/nagios.cm)

Lo ue har ue %agios active el che ueo para buscar comandos externos, con tanta #recuencia como sea posible por el sistema y buscar los comandos en el archivo nagios#cmd. -n el siguiente gr#ico detalla la organizacin recomendada de la con#iguracin de %agios.

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#[ localhost#[ localhost#[ localhost#[ localhost#[ localhost#[ localhost#[ # # # # # # # openssl genrsa -)es3 -out server.3)es--ey 0!E openssl rsa -in server.3)es--ey -out server.-ey openssl reB -ne= --ey server.-ey -xS0H -out server.crt -)ays 36S chmo) 600 server.-ey rm server.3)es--ey mv server.crt /etc/apache!/ssl.crt 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 re uerimientos 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 pa uete debian. ;ntes deberemos tener instalados los pa uetes deb&elper y d&*ma1e en el sistema.
# tar xvfzp li'apache!-mo)-auth-casI .0.".orig.tar.gz # gzip -)c li'apache!-mo)-auth-casI .0."-3.)iff.gz Q patch -p0 patching file li'apache!-mo)-auth-cas- .0."/)e'ian/li'apache!-mo)-authcas.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)-authcas.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)-authcas.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)-authcasI .0."-3Ii3"6.)e'>.

&on eso tenemos el pa uete 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 autenticacion y las cambiamos a solo esta 5ut&<ype C56. las entradas de

: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 pa uete 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 comman)Iline 1 )efine comman) 0 comman)Iname comman)Iline 5%68+*:CF383 1 process-service-perf)ata /usr/'in/perl /usr/local/nagios/li'exec/processIperf)ata.pl

process-host-perf)ata /usr/'in/perl /usr/local/nagios/li'exec/processIperf)ata.pl -)

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)ataIfileIprocessingIintervalR S 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)ataIfileIprocessingIintervalR S 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 re uerida. .nter4a< #eb Luego en el template directivas , !ara los hosts
actionIurl /nagios/pnp/in)ex.phpXhostR/5%68&34*/

ue vayamos a utilizar deberemos agregar estas

!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, a ui se comentan los protocolos mas comunes para monitorear estados de e uipos /@&6P8)%6P0 o servicios /)%6P0. .CM! -l protocolo @&6P /7nternet Control Message rotocol 0 puede ser considerado como parte de la capa @P. La especi#icacin completa de este protocolo se encuentra en =Q& JXI. ;un ue sus mensajes son encapsulados en datagramas @P como cual uier otro protocolo de capa superior, su uso corresponde a mensajes especiales de la propia capa de red, aun ue tambin pueden acceder a l las propias aplicaciones /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 Ure uestsU con UreplaysU. La generacin de replys suele correr a cargo del 7ernel /no es un proceso de usuario0. Los mensajes @&6P de U ueryU ms importantes son, Peticin/respuesta de mscara, ;un ue normalmente se usa :2&P, tambin es posible para el host hacer una peticin durante el proceso de arran ue para obtener la mscara y una peticin =;=P para obtener su @P. La peticin de mscara suele enviarse en di#usin. (n servidor de mscaras se encarga de contestar. Peticin/respuesta de marca de tiempo , )e utiliza para conocer el tiempo ue un host tarda en procesar un mensaje y contestarlo o para sincronizar relojes entre hosts. Los tiempos se ponen en milisegundos desde las 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 arran ue, un host env*a en broadcast o multicast un mensaje de solicitud de router. (no o ms routers respondern con mensajes de anuncio de router. -sto lo podrn hacer peridicamente permitiendo a los hosts actualizar sus tablas de enrutamiento. Peticin/respuesta de eco, )e utiliza para conocer si un host est en red. -l mensaje @&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 re uest. -sto permite identi#icar

las respuestas si hubiera varias instancias de ping corriendo en el mismo host. -n el campo de secuencia, se suele llevar un contador ue permite ver si se han perdido, duplicado o desordenado pa uetes, cosa t*pica en la capa @P sobre la ue se encapsulan los mensajes @&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 ms 6E 'ytes from virtuamanager.com ;! 3. HE. EH. ""<# icmpIseBR! ttlRS6 ms 6E 'ytes from virtuamanager.com ;! 3. HE. EH. ""<# icmpIseBR3 ttlRS6 ms 6E 'ytes from virtuamanager.com ;! 3. HE. EH. ""<# icmpIseBRE ttlRS6 ms 6E 'ytes from virtuamanager.com ;! 3. HE. EH. ""<# icmpIseBRS ttlRS6 ms 6E 'ytes from virtuamanager.com ;! 3. HE. EH. ""<# icmpIseBR6 ttlRS6 ms 6E 'ytes from virtuamanager.com ;! 3. HE. EH. ""<# icmpIseBRJ ttlRS6 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 timeRE!.6 timeRE ." timeRE .6 timeRE3.J timeRE!.J timeRE!.! timeRE6.!

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 e uipo 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 Crom H!. 6". . 00 icmpIseBR! Festination 5ost Crom H!. 6". . 00 icmpIseBR3 Festination 5ost Crom H!. 6". . 00 icmpIseBRE Festination 5ost Crom H!. 6". . 00 icmpIseBR6 Festination 5ost Crom H!. 6". . 00 icmpIseBRJ Festination 5ost )ata. 9nreacha'le 9nreacha'le 9nreacha'le 9nreacha'le 9nreacha'le

Crom

H!. 6". . 00 icmpIseBR" Festination 5ost 9nreacha'le 00Z pac-et loss( time "00!ms

--- H!. 6". .! ping statistics --H pac-ets transmitte)( 0 receive)( L6 errors( ( 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 pa uetes y a intentar solucionar la congestin mediante algoritmos de enrutamiento. Parameter problem, )i un router intermedio o el host destino encuentran un problema en la cabecera @P ue le obliga a desecharlo, puede enviar un mensaje @&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 pa uete. -sto puede ocurrir por ue 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

es uemas 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 es uemas 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 eti ueta 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, 5pa ue /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 cual uier 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 re uerida de un sistema se almacena en las 6@4s usando una estructura jerr uica ue contiene los identi#icadores de objeto descritos mediante ;)%.O. -sta jerar u*a de rbol contiene los elementos ue pueden ser de tipo escalar o tablas de datos. -stos objetos cuelgan en el rbol de la 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 arran ue, nombre del administrador, localizacin #*sica, servicios o#recidos 'rupo inter#aces, %.mero de inter#aces del sistema 'rupo at, %.mero de inter#az, :ireccin #*sica, :ireccin @P 'rupo ip, )i el sistema hace #or$ard, valor del >>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-re uest , )olicitar el valor de una o varias variables 'et-next-re uest , )olicitar el valor de la siguiente variable o grupo de variables. )e utiliza para recorrer tablas, celda a celda. )et-re uest , :ar valor a una variable 'et-response , :evolver el valor de una o varias variables >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-bul7re uest, 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&$o riv *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 e uipos 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 alias mem'ers 1 )efine contactgroup0 contactgroupIname alias mem'ers 1 a)min 3)ministrators a)min-sap(a)min-=in)o=s

0nom're )el grupo contacto1 0)escripcion1 0miem'ros )el grupo1

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 Hnombregrupodecontacto#cfgI 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 alias contactgroups serviceInotificationIperio) hostInotificationIperio) serviceInotificationIoptions hostInotificationIoptions serviceInotificationIcomman)s hostInotificationIcomman)s email 1 )efine contact0 contactIname alias a)min 3)ministra)or &agios a)min !ExJ !ExJ =(u(c(r )(u(r notify-'y-email host-notify-'y-email root@localhost

arc&ivo con las

Hnagios*dirI"etc"contactgroups" entradas correspondientes

0nom're )el contacto1 0)escripcion )el contacto1

contactgroups serviceInotificationIperio) servicios1 hostInotificationIperio) hosts1 serviceInotificationIoptions hostInotificationIoptions serviceInotificationIcomman)s servicio1 hostInotificationIcomman)s host1 email 1

0grupo )e contactos al cual pertenece1 0prio)o )e tiempo )e notificaciones )e 0prio)o )e tiempo )e notificaciones )e 0opciones )e notificacion por servicio1 0opciones )e notificacion por host1 0coman)o )e notificacion a utilizar por 0coman)o )e notificacion a utilizar por 0)ireccion )e email )el contacto1

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 modi#icados por mi ,

descargados

de

nagiosexchange

ue

estn

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 ma uina 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 che ueo, los primeros son utilizados para algunos casos en particular. Los comandos de che ueo no traen datos de los e uipos a monitorear, como consumo de &P(, 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 %agios ue el comando tendra para nuestra con#iguracin personal de

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 aun ue sea un servicio a ese grupo por ue si no de lo contrario el %agios mostrara un error al arran ue, para eso lo asignamos en la propiedad servicegroups de un servicio en particular. -jemplo de una entrada de grupo de servicios,

)efine servicegroup0 servicegroupIname alias 1 )efine servicegroup0 servicegroupIname alias 1

lotusIresponse 2otus :eponse 6ervices

0nom're corto )el grupo )e servicio1 0alias )escriptivo completo )el grupo1

)e deber crear el ]nombregrupodeservicios.c#g^ anteriormente explicadas.

archivo con las

]nagios-dir^8etc8servicegroup8 entradas correspondientes

6gregando "ervicios
; continuacion se muestra una tipica entrada de con#iguracin de un servicio
)efine service 0 use hostIname hostgroupIname serviceI)escription servicegroups isIvolatile chec-Iperio) maxIchec-Iattempts normalIchec-Iinterval retryIchec-Iinterval contactIgroups notificationIinterval notificationIperio) notificationIoptions chec-Icomman) 1 )efine service 0 use hostIname hostgroupIname servicio1 serviceI)escription servicegroups isIvolatile chec-Iperio) maxIchec-Iattempts normalIchec-Iinterval cheBueos1 retryIchec-Iinterval contactIgroups maxIchec-Iattempts notificationIinterval notificaciones1 notificationIperio) notificationIoptions chec-Icomman) 1 =in)o=s srv (srv! servi)ores-=in)o=s Gerification )isco C# storage 0 !ExJ 3 S =in)o=s !E0 !ExJ c(r chec-IsnmpIstorageA^CA60AH0A-C pu'licA-r

0template )e servicio a utilizar1 0hosts Bue e@ecutan )icho servicio1 0grupos )e host Bue e@ecutan ese 0)escripcion )el servicio1 0grupo al cual pertenece1 0si el servicio es volatil1 0perio)o )e tiempo para el cheBueo1 0maximo )e intentos )e cheBueo1 0intervalo )e tiempo a programar los 0intervalo )e tiempo para un re-cheBueo1 0grupo )e contacto1W 0maxima canti)a) )e cheBueos1 0intervalo )e tiempo entre 0prio)o )e tiempo )e notificaciones1 0cuan)o enviar notificaciones1 0coman)o )e cheBueo con sus argumentos1

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 che ueos a e#ectuar por %agios, antes de enviar un 5N como resultado normal;chec+;interval @ntervalo de tiempo antes de programar un nuevo che ueo del servicio retry;chec+;interval @ntervalo de tiempo antes de realizar un re-che ueo 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 estado ue momentos debe enviar noti#icaciones de

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 che ueo 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 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

ue aparece

)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 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 ue corresponde" la in#ormacin extra a

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 alias mem'ers 1 )efine hostgroup 0 hostgroupIname alias mem'ers 1 ramallo *Buipos )e :amallo ramallo(slnra0 (srvrmlofs

0nom're )el grupo1 0alias )escriptivo1 0host miem'ros1

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 hostIname hostgroupIname alias a))ress parents contactIgroups maxIchec-Iattempts notificationIinterval notificationIperio) notificationIoptions 1 )efine host0 use hostIname hostgroupIname alias a))ress parents contactIgroups maxIchec-Iattempts notificationIinterval notificaciones1 notificationIperio) notificationIoptions 1 servi)ores servi)orsap! servi)ores-linux 63+ 6*:G*: H!. 6". 0."E 'uenosIaires linuxW 0 !0 !ExJ )(u(r

0template-host1 0nom're-host1 0grupos al Bue pertenece este host1 0alias-)escriptivo1 0ip1 0host )el Bue )epen)e1 0grupo )e contacto1W 0maxima canti)a) )e cheBueos1 0intervalo )e tiempo entre 0prio)o )e tiempo )e notificaciones1 0cuan)o enviar notificaciones1

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 e uipo ue le brinde la conectividad etc, y en el mapa se dibujara como dependiente de ese nodo contact;groups 'rupos de contacto a los ue enviar las noti#icaciones ma2;chec+;attempts 6axima cantidad de che ueos 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 estado ue momentos debe enviar noti#icaciones de

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 notes iconIimage iconIimageIalt vrmlIimage statusmapIimage 1 )efine hostextinfo0 hostIname notes linuxoracle 6ervi)or %racle )e uniface oracle.png %racle oracle.png oracle.g)!

0nom're )e host1 0)escripcion para el host1

iconIimage iconIimageIalt vrmlIimage statusmapIimage

0logo para ver 0texto para el 0logo para ver 0logo para ver

en la interfaz =e'1 logo1 en el mapa 3F1 en el mapa !F1

host;name %ombre del host al cual corresponde la in#ormacin dada notes Pe ueCa 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 )epen)entIhostIname notificationIfailureIcriteria 1 )efine host)epen)ency0 hostIname )epen)entIhostIname )epen)e1 notificationIfailureIcriteria linuxsap! linuxoracle )

0nom're )el host a referise1 0nom're )el host )el cual 0opciones )e notificacion1

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 che uee en ciertos intervalos de tiempo, por ejemplo si un host no debe ser che ueado los domingos o un servicio debe ser che ueado solo de lunes a viernes de 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 alias sun)ay mon)ay tues)ay =e)nes)ay thurs)ay fri)ay satur)ay 1 !ExJ !E 5ours 3 Fay( J Fays 3 7ee00#00-!E#00 00#00-!E#00 00#00-!E#00 00#00-!E#00 00#00-!E#00 00#00-!E#00 00#00-!E#00

C&e)ueos en las &oras laborales lunes a viernes de K a EG


)efine timeperio)0 timeperio)Iname =or-hours

alias mon)ay tues)ay =e)nes)ay thurs)ay fri)ay 1

&ormal 0H#000H#000H#000H#000H#00-

7or- 5ours J#00 J#00 J#00 J#00 J#00

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 timeperio)Iname alias @anuary mon)ay - may 4ay< @uly E mon)ay septem'er 6eptem'er< thurs)ay - novem'er &ovem'er< )ecem'er !S 1 us-holi)ays us-holi)ays 9.6. 5oli)ays 00#00-00#00 00#00-00#00 00#00-00#00 00#00-00#00 00#00-00#00 00#00-00#00

W &e= ?ears W 4emorial Fay ;last 4on)ay in W .n)epen)ence Fay W 2a'or Fay ;first 4on)ay in W 8han-sgiving ;last 8hurs)ay in W Christmas

%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 alias use sun)ay mon)ay tues)ay =e)nes)ay thurs)ay fri)ay satur)ay 1 !ExJIsansIholi)ays !ExJ 6ans 5oli)ays us-holi)ays 00#00-!E#00 00#00-!E#00 00#00-!E#00 00#00-!E#00 00#00-!E#00 00#00-!E#00 00#00-!E#00

W 3gregar excepciones

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 timeperio)Iname mon)ay tues)ay =e)nes)ay thurs)ay fri)ay 1 )efine timeperio)0 =ee-)ays =ee-)ays 00#00-!E#00 00#00-!E#00 00#00-!E#00 00#00-!E#00 00#00-!E#00

1 )efine timeperio)0 name timeperio)Iname @anuary !00"-03-!3 !00H-0E- ! mon)ay - may @uly E mon)ay septem'er 6eptem'er< thurs)ay E novem'er &ovem'er< )ecem'er !S )ecem'er 3 1

name timeperio)Iname satur)ay sun)ay

=ee-en)s =ee-en)s 00#00-!E#00 00#00-!E#00 holi)ays holi)ays 00#00-!E#00 00#00-!E#00 00#00-!E#00 00#00-!E#00 00#00-!E#00 00#00-!E#00

W W W W W W

&e= ?ear>s Fay *aster ;!00"< *aster ;!00H< 4emorial Fay ;2ast 4on)ay in 4ay< .n)epen)ence Fay 2a'or Fay ; st 4on)ay in

00#00-!E#00 W 8han-sgiving ;Eth 8hurs)ay in 00#00-!E#00 W Christmas J#00-!E#00 W &e= ?ear>s *ve ;Spm on=ar)s<

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 1 st( !00J

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 che ueos para %agios es extremadamente #lexible, ya ue no dependemos del lenguaje de programacin debido a ue %agios toma la salida resultante de su ejecucin. :eberemos conocer bien lo ue ueremos che uear y conocer los indicadores ue nos mostraran si deberemos expresarlos como un 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 H

*stado de "ervicio 5N

*stado de :ost (P

Descripcion -l plugin es capaz de veri#icar el servicio y ue parece estar #uncionando correctamente -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 -l plugin detecta ue o bien el servicio no #unciona o ue est por encima de un umbral !cr*tico" ;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

A;=%@%'

(P8:5A%8(%=-;&2;4L-

&=@>@&;L

:5A%8(%=-;&2;4L-

(%N%5A%

:5A%8(%=-;&2;4L-

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 che ueo. 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 &. ue se encargue de dicho

<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 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!

ue el plugin y elimine

: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 exec exec exec coman)o coman)o! coman)o3 coman)o3 /'in/coman)o /'in/coman)o! /'in/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 consultorsnmp7(1 7(G3K3K37 &CD0"NM!0M.)@@e2t able `
9CF-6&4+-4.,##ext.n)ex. R 9CF-6&4+-4.,##ext.n)ex.! R 9CF-6&4+-4.,##ext.n)ex.3 R 9CF-6&4+-4.,##ext.n)ex.E R 9CF-6&4+-4.,##ext&ames. R 9CF-6&4+-4.,##ext&ames.! R 9CF-6&4+-4.,##ext&ames.3 R 9CF-6&4+-4.,##ext&ames.E R 9CF-6&4+-4.,##extComman). .&8*$*:# .&8*$*:# ! .&8*$*:# 3 .&8*$*:# E 68:.&$# coman)o 68:.&$# coman)o! 68:.&$# coman)o3 68:.&$# coman)oE R 68:.&$# /'in/coman)o

06

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 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 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

ue le hemos asignado a dicho

ue

exit 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 #ire$all apache servidor-s l sap-db Para conocer el estado de un servicio, ue se encuentre disponible -n este caso el servicio : ! current;state H O H H independientemente de los hosts en los

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 service;object;id service;descripti on concentradorBmpls OL 2>>P router-vpn I? 2>>P central IL 2>>P router-ST ?? 2>>P host;name current;state H O I 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 !0 0 $:%9+ ,? 8*4+6( *838 %:F*: ,? F38*IC%:438;nagiosIstatehistory.stateItime(>Zm><(nagiosIstatehistory.state

=esultando en una tabla como esta *M!" %ovember %ovember %ovember 5N A;=%@%' &=@>@&;L * 6 OJTS O? LS Q&6N . *

%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. NO 6@ @mportante el modulo mys l de P2P no soporta la consulta a los P=5&-:(=- de 6y)KL, para ello deberemos utilizar el modulo mys li de P2P, otra cosa tambien importante es ue mys li soporta conecciones persistentes, asi ue para evitarse tiempo de implementacion a veces es necesario o implementar un script en Perl, o hacer ue el resultado del P=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, aun ue puede contener cual uier 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 e uivocada (n acceso correcto al sistema ;nomal*as, variaciones en el #uncionamiento normal del sistema ;lertas cuando ocurre alguna condicin especial @n#ormacin sobre las actividades del sistema operativo -rrores del hard$are o el so#t$are >ambin es posible registrar el #uncionamiento normal de los programas+ por ejemplo, guardar cada acceso ue se hace a un servidor $eb, aun ue esto suele estar separado del resto de alertas. -l protocolo syslog es muy sencillo, existe un ordenador servidor ejecutando el servidor de syslog, conocido como syslogd /demonio de syslog0. -l cliente env*a un pe ueCo 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 e uipos, puede hacerse una correlacin de ata ues o #allas en distintos puntos de una manera mucho ms sencilla. Por ejemplo si en el syslog aparece un mensaje de desconexin de la inter#ace de red de varios servers en el mismo momento, es lgico suponer una #alla en el s$itch donde estos servers estan conectados. (n usuario no deseado ue haya ingresado en un server, no podr alterar los mensajes ue se hayan almacenado en el server central. )e pueden generar alertas usando sistemas de monitoreo de logs.
"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 consiguiente ue menos se hace. ue ms tiempo consume y por

&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 error ocurra. ue el

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 blo uearse el acceso ssh desde determinada direccin @P despues de un n.mero de intentos #allidos de acceso. (n concepto ue aparece a u* es el de correlacin de eventos.

(n sistema automatizado de anlisis de logs ue pueda hacer una correlacin de varios eventos simpli#ica y acelera el monitoreo de eventos consolidando alertas y mensajes de error en un mensaje ms corto y #cil de entender. (na serie de operaciones estn relacionadas con la correlacin de eventos. &ompresin toma varias apariciones del mismo evento y se examina la duplicacin de in#ormacin, se remueve las redundacias y se reporta como un .nico evento. :e esta manera 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 son reportados. ue son los ue

-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 array completo tiene problemas. ue el

&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 bus uedas etc. -s .til registrar, por ejemplo, (n intento de acceso con contraseCa e uivocada (n acceso correcto al sistema ;nomal*as, variaciones en el #uncionamiento normal del sistema ;lertas cuando ocurre alguna condicin especial @n#ormacin sobre las actividades del sistema operativo -rrores del hard$are o el so#t$are >ambin es posible registrar el #uncionamiento normal de los programas+ por

ejemplo, guardar cada acceso ue se hace a un servidor $eb, aun ue esto suele estar separado del resto de alertas. Puede logguear tanto por (:P como por >&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 e uivocada (n acceso correcto al sistema ;nomal*as, variaciones en el #uncionamiento normal del sistema ;lertas cuando ocurre alguna condicin especial @n#ormacin sobre las actividades del sistema operativo -rrores del hard$are o el so#t$are >ambin es posible registrar el #uncionamiento normal de los programas+ por ejemplo, guardar cada acceso ue se hace a un servidor $eb, aun ue esto suele estar separado del resto de alertas. Puede logguear tanto por (:P como por >&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 loggueara por (:P hacia el servidor syslog. $etc$syslog3con4 Configuracion para loguear datos de autenticacion
auth.*Wauthpriv.*Wauth.noticeWauth.errorWauth.infoWauthpriv.noneW

ue

@ 0. . .!

$etc$syslog0ng$syslog0ng3con4
)estination )fIauth 0 tcp; P 0. . .!P port;S E< <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 )estination )estination )estination )estination )estination )estination )estination )estination )estination )estination )estination )estination )estination )fIauth 0 file;P/var/log/auth.logP<W 1W )fIsyslog 0 file;P/var/log/syslogP<W 1W )fIcron 0 file;P/var/log/cron.logP<W 1W )fI)aemon 0 file;P/var/log/)aemon.logP<W 1W )fI-ern 0 file;P/var/log/-ern.logP<W 1W )fIlpr 0 file;P/var/log/lpr.logP<W 1W )fImail 0 file;P/var/log/mail.logP<W 1W )fIuser 0 file;P/var/log/user.logP<W 1W )fIuucp 0 file;P/var/log/uucp.logP<W 1W )fIfacilityI)otIinfo 0 file;P/var/log//C3C.2.8?.infoP<W 1W )fIfacilityI)otInotice 0 file;P/var/log//C3C.2.8?.noticeP<W 1W )fIfacilityI)otI=arn 0 file;P/var/log//C3C.2.8?.=arnP<W 1W )fIfacilityI)otIerr 0 file;P/var/log//C3C.2.8?.errP<W 1W )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 filter filter filter filter filter filter filter fIcron 0 facility;cron<W 1W fI)aemon 0 facility;)aemon<W 1W fI-ern 0 facility;-ern<W 1W fIlpr 0 facility;lpr<W 1W fImail 0 facility;mail<W 1W fIne=s 0 facility;ne=s<W 1W fIuser 0 facility;user<W 1W fIuucp 0 facility;uucp<W 1W

filter filter filter filter filter

fIatIleastIinfo 0 level;info..emerg<W 1W fIatIleastInotice 0 level;notice..emerg<W 1W fIatIleastI=arn 0 level;=arn..emerg<W 1W fIatIleastIerr 0 level;err..emerg<W 1W 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

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

source;interno<W filter;fImail<W )estination;)fImail<W

log 0 source;interno<W filter;fIuser<W )estination;)fIuser<W

1W log 0

1W log 0

source;interno<W filter;fIuucp<W )estination;)fIuucp<W

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

1W log 0

source;interno<W filter;fIemerg<W )estination;)uIall<W

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 Pa uete )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 che ueos en 4lac74erry http,88$$$.Oight.#r8plugins84lac74erry8 Plugins de che ueo de Lotus %otes http,88barbich.net8 )ervidor de proyectos %agios, plugins, templates etc en etapa de desarrollo http,88$$$.nagios#orge.org8 )ervidor de proyectos %agios, plugins, templates etc http,88$$$.nagiosexchange.org ;gregado de che ueo de eventos %agios para #ire#ox https,88addons.mozilla.org8en-()8#ire#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-framepointerP 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-framepointerP CTTC23$6RP/0CC23$61P ./configure --=ith-'ig-ta'les --=ithpluginsRpartition(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, che ueando 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, aun ue 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)eventsIageR EE0 maxItime)eventsIageR !0 # Keep system comman)s for =ee#maxIsystemcomman)sIageR 00"0 maxIsystemcomman)sIageR # Keep service chec-s for =ee#maxIservicechec-sIageR 00"0 maxIservicechec-sIageR!E0 # Keep host chec-s for =ee#maxIhostchec-sIageR 00"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 con %agios ue pueden ser de utilidad para el dia a dia

5olcado de estado actual , Baciendo uso de la clase 6tatus:og disponible en C 5$ 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 e uipos 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 e uivalente 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. OO. :ebug#lag boolean /:isplay some $or7#lo$ output0 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

host;obje host;nam service;o service;n outage;p availabili ct;id e bject;id ame ercent 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

sla;id

/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 e uipos 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 pe ueCas compaC*as. )u sintaxis es similar a la de 6ediaAi7i, aun ue a di#erencia de este so#t$are, la in#ormacin se almacena en archivos de texto planos, por lo ue no re uiere el uso de una base de datos. CaracterPsticas@ 'estin de espacios de contenidos ordenado de los documentos. 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 blo ueos para solucionar problemas de concurrencia. 'estin de usuarios. 4.s ueda 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<

ue permite un almacenamiento

)oporte para imgenes y otros contenidos multimedia.

* @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, aun ue tambien lo podemos aplicar dentro de la plantilla inicial del servicio.
)efine serviceextinfo 0 hostIname router serviceI)escription ping notesIurl /=i-i/nagios.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.cgiXtypeR YhostRP. /hostM>0>N.P>VUfont colorR>#00"000>V3::.,3U/fontVU/aVPW if;/hostM>3>NRR < print PUa hrefR>/nagios/cgi-'in/extinfo.cgiXtypeR YhostRP. /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.cgiXtypeR YhostRP. /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 e uipo, 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 che uear por cual uiera de las dos @P para consultar disponibilidad, y ue nuestro plugin intente por una o por otra con un timeout de#inido, para eso ya existe la solucion c&ec1'multiaddr, con la cual no necesitamos realizar ninguna modi#icacion a el cdigo existente de nuestros plugins, por ejemplo en la direccion ip del host a monitorear puede ir EK0#E@F#A#E,EK0#E@F#A#EE,EK0#E@F#A#0E. Luego en la entrada de nuestro comando de che ueo realizamos modi#icaciones para ue uede algo como esto ,
)efine comman)0 comman)Iname chec-ImultipleI)ns comman)Iline /96*: //chec-Imultia))r.pl /96*: //chec-I)ns -5 /3:$ / -s /5%683FF:*66/ 1

&on lo cual el utilitario c&ec1'multiaddr actuara simplemente de envoltorio de nuestros plugins, encargandose del timeout entre cada consulta a cada direccion y de devolver su salida con su exit status correspondiente. ;djunto , 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*I0 N 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*I 0SN 4%&.I6*8I&34*RP63+ CC46 4onitor 8emplatesP

4%&.I&34*RPFialog %vervie=P +388*:&I0RP*9sers2ogge).nP M8*4+238*I 0N 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*I0J N 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*IH0 N 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 6EH E"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 6EH E"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*IEJ 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*\+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, mys l 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 iz uierda, 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 e uipo con similares caracter*sticas al realizar esto se nos har mucho ms #cil su implementacin. -l tercer botn es para generar la escritura en la con#iguracin de %agios para dicho host en caso de ue hayamos cambiado algo.

-l cuarto botn es para descargados el archivo con la con#iguracin individual de dicho e uipo. -l uinto y .ltimo botn es para mostrarnos in#ormacin de las relaciones de con#iguracin de dicho e uipo, si es posible borralo y no a#ectar otras con#iguraciones mostrndonos un resumen como el siguiente,

=e#irindonos al primer botn para proceder a editar un hosts existente o dar de alta uno nuevo, nos aparecera una pantalla como esta, donde podremos ir agregando los datos pertinentes del hosts en cuestion ue necesitamos monitorear.

;l editar un host existente o dar de alta uno nuevo, nos aparecera una pantalla como esta, donde podremos ir agregando los datos pertinentes del host en cuestion ue necesitamos monitorear. ; su vez deberemos utilizar una plantilla, en este caso la de generic-host o podemos utilizar otra con opciones y ajustes prede#inidos para el tipo de monitoreo a utilizar para esta clase de host /intervalos de che ueo, 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 che ueo, reintentos, periodo de che ueos 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;4LM2imos 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 Description page chec7BsnmpBstora chec7s storages ge /dis7s,s$ap, memory, etcZ0 chec7BsnmpBint chec7s inter#ace states, usage on hosts, s$itch, routers, etc chec7BsnmpBproce chec7s i# process ss are running, the number that are running, memory and cpu used. chec7BsnmpBload chec7s the load or the cpu o# a machine per4ormance 9es "upported plat4orms ;ll 6@4I compliant

9es

;ll 6@4I compliant

%o

;ll 6@4I compliant

9es

chec7BsnmpBvrrp

chec7s the

%o

Linux, Aindo$s, &isco, ;)SHH, 2P Procurve, Lin7Proo#, 4lucoat, %o7ia,Qortinet, %etscreen,2P(R. %o7ia @P /<==P f

chec7BsnmpBcp#$ chec7BsnmpBmem chec7BsnmpB$in chec7BsnmpBcss chec7BsnmpBenv

chec7BsnmpBnsbox

chec7BsnmpBboost edge chec7BsnmpBlin7pr oo#Bnhr

inter#ace state o# vrrp cluster chec7s &hec7point Qire$allO status &hec7s memory and s$ap usage &hec7s $indo$s services &hec7s css services state &hec7s environemental status /#an, temp, po$er supply0. &hec7s nsbox vhost f diode status. &hec7s 4oostedge services &hec7s lin7proo# %2=

9es 9es %o %o %o

&lustering0, Lin7Proo#, ;lteon &hec7point Qire$all Linux8%etsnmp, &isco, 2P )$itch Aindo$s &)) &isco, %o7ia, 4luecoat, @ronPort, Qoundry %et)ecure5ne %etbox 4oostedge =ad$are Lin7proo#

%o

%o %o

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 pa uetes ue deben estar instalados en el sistema. -n las siguientes l*neas se comentan cuales son los comandos ue vienen por de#ault y ue hacen.
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@L2lave 665 autoriza)a MoptionalN

-5, joutputFQ@Larchivo )e coman)o externo )e &agios MoptionalN

-s, jservicesFL@)>
lista )e nom'res )e servicios &agios separa)os por >#> MoptionalN

-n, jnameF%;6nom'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

- , j uiet
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 UiU. :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 hostgroupIname serviceI)escription chec-Icomman) 1 local-service ssh-nagios-services Current 2oa) chec-IsshIloa)AS.0(E.0(3.0A 0.0(6.0(E.0

-jemplo de como dar de alta el hostgroup de ejecucion


)efine hostgroup hostgroupIname alias mem'ers 1 chec+;dig 0 ssh-nagios-services &agios over 665 remote (remote!

-ste comando sirve para comprobar el #uncionamiento del servicio de :%) en un e uipo remoto. (tiliza dig para esto. (sage,chec7Bdig -l Y ueryBaddressE g-2 YhostEh g-p Yserver portEh g-> Y uery 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 comman)Iline 1 chec-I)ig /96*: //chec-I)ig -5 >/5%683FF:*66/> -l >/3:$ />

:e#inir como servicio,


)efine service0 use hostIname serviceI)escription chec-Icomman) 1 chec+;dis+ generic-service nom'reIhost )ig chec-I)igA===.google.com

-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 gvh 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 Uk8oracle8)@:8data.`\U

-c

TH6

-&

-$

OHHH6

-c

THH6

-g

sid:;>;

-r

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 004/S04 )efine comman)0 comman)Iname comman)Iline 1 0004/S004 an) /'ar for S/3Z. 3ll remaining volumes use

:e#inir como comando,


chec-IallI)is-s /96*: //chec-I)is- -= >/3:$ /> -c >/3:$!/>

:e#inir como servicio


)efine service0 use hostIname serviceI)escription chec-Icomman) 1 chec+;dis+;smb generic-service nom'reIhost Fis- 6pace chec-IallI)is-sA!0ZA 0Z

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 e uipo dado el nombre o viceversa. (tiliza nsloo7up para ello+ permite especi#icar el servidor :%) a usar o si no usa el o los especi#icados en 8etc8resolv.con#. (sage,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- Y uit 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 e uipos remotos. Permite adems realizar el seguimiento de redirecciones, tiempos de conexin, la expiracin de los certi#icados para ))L, etctera. -s especialmente .til para servidores $eb ue sirvan de base para aplicaciones de comercio electrnico. (sage, chec7Bhttp -2 YvhostE i -@ Y@P-addressE g-u YuriEh g-p YportEh
M-= M-a M-s M-m M-U=arn timeVN M-c Ucritical timeVN M-t UtimeoutVN M-2N authN M-f Uo- Q =arn Q critcal Q follo=VN M-e UexpectVN stringN M-lN M-r UregexV Q -: Ucase-insensitive regexVN M-+ stringN UminIpgIsizeV#UmaxIpgIsizeVN M-EQ-6N M-&N M-4 UageVN M-3 stringN 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 -- P3ccept2anguage# 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 comman)Iline 1 chec-Iimap /96*: //chec-Iimap -5 >/5%683FF:*66/>

&he uear @6;P con ))L


)efine comman) 0 comman)Iname comman)Iline 1 chec-Isimap /96*:A//plugins/chec-Iimap -p HH3 -5 >/5%683FF:*66/> -6

:e#inir como servicio,


)efine service0 use hostIname serviceI)escription chec-Icomman) 1 chec+;ircd generic-service nom'reIhost imaps chec-Isimap

-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.s uedas L:;P contra un servidor remoto y comprueba as* su estado de #uncionamiento y si responde dentro del tiempo esperado o no. (sage, 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 m uina ue est ejecutando el sistema %agios. &omprueba la carga del sistema en #uncin de unos umbrales ue tiene preestablecidos y permite generar advertencias o errores severos seg.n sea esta carga. (so,chec7Bload g-rh &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

-$

AL5;:O,AL5;:T,AL5;:OT

-c

: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 hostIname serviceI)escription chec-Icomman) 1 chec+;log generic-service nom'reIhost Current 2oa) chec-Iloa)AS.0AE.0A3.0A 0.0A6.0AE.0

-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 chec7Blog jversion uery (sage, chec7Blog jhelp (sage,

chec+;mailq

-ste comando #unciona en local en la m uina ue corre %agios. Permite comprobar el n.mero de mensajes ue hay en espera en las colas de )endmail. )e puede establecer un l*mite para ue se genere una noti#icacin en ese caso.
9sage# chec-ImailB -= 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 m uina ue est ejecutando %agios y permite monitorizar los #icheros de sucesos de 6=>'+ en concreto permite monitorizar cual uiera de los parmetros ue se vuelcan sobre dichos #icheros como por ejemplo conexiones, carga del procesador, entrada, salida, etctera. Permite establecer umbrales ue si se superan generan noti#icaciones. >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 e uipo 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 m uina ue est ejecutando %agios y permite comprobar ue el archivo de sucesos del sistema de monitorizacin no sea ms antiguo de lo ue se especi#i ue. (sage,chec7Bnagios YprocessBstringE 5ptions, -h, jhelp
+rint )etaile) help screen

-Q

Ystatus

log

#ileE

-e

YexpireBminutesE

-&

-<, 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 8usr8local8nagios8bin8nagios


negate

-e

-Q

8usr8local8nagios8var8status.log

-&

-ste comando sirve para, en combinacin con cual uiera 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 especi#icado para comprobar ue el servicio de %-A) est activo.

remoto

>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- Y uit 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 e uipo Aindo$s %>8IHHH8RP remoto ue est ejecutando el servicio %)&lient para comprobar parmetros locales a dicho e uipo como por ejemplo uso de la &P(, de la memoria, del disco, etctera.
chec+;ntp

-ste comando ejecuta ntpdate para comprobar ue el timestamp de la m uina local ue ejecuta %agios no di#iere en ms de lo especi#icado del timestamp de una m uina remota dado.
chec+;n#stat

Plani#icacin, especi#icacin, diseCo y evaluacin de redes -ste comando realiza peticiones a un e uipo %ovell remoto ue est ejecutando el servicio 6=>'-R> %L6 para comprobar parme tros locales a dicho e uipo 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 e uipo remoto est #uncionando correctamente. =ealiza peticiones para ello.
chec+;procs

-ste comando #unciona en la m uina donde se est ejecutando %agios. &omprueba el n.mero de procesos ue se estn ejecutando en la m uina y genera advertencias cuando este n.mero sobrepasa el umbral especi#icado.
chec+;real

-ste comando comprueba si el servicio =-;L de un e uipo 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 m uina local donde se ejecuta %agios+ necesita de pa uetes adicionales instalados en el sistema de monitorizacin y su #uncin es comprobar el estado del hard$are de la m uina.
chec+;smtp

-ste comando permite conocer el estado de un servicio )%6P de una m uina remota. =ealiza conexiones a este servicio para averiguar la in#ormacin necesaria.
chec+;snmp

-ste comando permite conocer el estado de una m uina remota mediante la consulta a su agente )%6P. (tiliza para ello el protocolo )%6P en cual uiera de sus versiones O, I ?.
chec+;ssh

-ste comando permite controlar si el servicio ))2 de una m uina 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 m uina 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 cual uier servicio ue utilice soc7ets >&P para recibir peticiones. :e#inir como comando,
)efine comman)0 comman)Iname comman)Iline 1 chec-Itcp /96*: //chec-Itcp -5 >/5%683FF:*66/> -p /3:$ /

)efine service0 use hostIname serviceI)escription chec-Icomman) 1 chec+;time

generic-service nom'reIhost telnet chec-ItcpA!3

-ste comando permite comprobar si el servicio de hora />@6-0 est #uncionando en una m uina 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 cual uier servicio ue utilice soc7ets (:P para recibir peticiones.
chec+;ups

-ste comando permite monitorizar el estado del servicio (P) en m uinas remotas+ para ello hace peticiones a este servicio. %ecesita pa uetes adicionales instalados en el sistema de monitorizacin.
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 che uear el estado de 2eart4eat y sus nodos, muy .til por cierto
#A/'in/'ash # 3uthor# *mmanuel ,retelle # Fate# !/03/!0 0 # Fescription# :etrieve 2inux 53 cluster status using clIstatus # ,ase) on http#//===.ran)om'ugs.com/linux/ho=to-monitor-linux-heart'eatsnmp.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 P 1

+rint version of plugin

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

fi

echo P5eart'eat %K# /3//.P exit /%K

)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 che uear 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 /iR W 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 /criticalR W 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

&he ueo 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)ingR W\nPW exit W 1

-l script s l
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 e uipo a monitorear


monitoreo 322 R &%+3667F# /'in/su - oracle -c /usr/local/'in/)'aI!pcIpen)ing.pl chec+;microstrategy

&he uear ue el servicio de 6icro)trategy este corriendo

)efine comman) 0 comman)Iname comman)Iline /5%683FF:*66/ register 1 )efine service 0 serviceI)escription use chec-Icomman) maxIchec-Iattempts chec-Iinterval retryIinterval activeIchec-sIena'le) chec-Iperio) notificationIperio) notificationIoptions notificationsIena'le) register 1

chec-Imicrostrategy /96*: //chec-Imicrostrategy.sh

6ervicio 4icro6trategy generic-service chec-Imicrostrategy

!ExJ !ExJ r(c

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 consultar por medio de snmp v? ue pueda

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 #uente si van a utilizarlo en obras derivadas ue pido es ue citen la

)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