Instalando Nagios 3

download Instalando Nagios 3

of 13

Transcript of Instalando Nagios 3

Instalando Nagios 3.x en Debian etch http://blog.unlugarenelmundo.es/2007/06/29/instalando-nagios-3x-en-debian-etch/#comment-70712Tena pendiente instalar una mquina nueva con Debian 4 para migrar a ella los servicios de monitorizacin de mi centro de trabajo. Las versiones de Nagios etiquetadas como stable en esta nueva Debian son la 1.4 y la 2.6 as que como quera probar la nueva versin 3 y no encontr ningn repositorio donde estuviera en forma de paquete .deb me decid por compilarla e instalarla para evaluar si es lo suficientemente estable como para usarla en produccin. El proceso ha sido bien sencillo as que dejo aqu un breve paso a paso para quien quiera animarse.Partimos de una instalacin limpia de debian etch con apache2. Lo primero que necesitamos es instalar nuestro entorno de compilacin. Hay un paquete en debian con todo lo que necesitas para ello. apt-get install build-essential El segundo paso es instalar las libreras necesarias para, posteriormente, compilar nagios. Necesitamos las jpeg, png y gd2. Para las dos primeras no tuve ningn problema en instalar las que vienen con la distribucin estable: apt-get install libjpeg62 libjpeg62-dev libpng12-0 libpng12-dev Para las gd2 sin embargo me li un poco necesito las que traen soporte para xpm o las que no?es indiferente, tal vez? Cmo no tena ni idea y no encontr informacin referente a ello visit la pgina del proyecto y vi que all no hacan distincin alguna Reconozco que lo de los formatos grficos no es lo mo (ni los de audio, ni los de video, ni) as que tir por la calle de enmedio y decid bajarme los fuentes y compilarlos tambin: cd /tmp wget -c http://www.libgd.org/releases/gd-2.0.35.tar.gz tar xzf gd-2.0.35.tar.gz cd gd-2.0.35 ./configure make make install Lo siguiente es crear los grupos y usuarios necesarios para nagios: useradd nagios passwd nagios groupadd nagios groupadd nagcmd usermod -G nagios usermod -G nagios usermod -G nagcmd usermod -G nagcmd

nagios josemaria nagios www-data

Con esto hemos creado un nuevo usuario (nagios), le asignamos una contrasea, creamos dos grupos (nagios y nagcmd). Aadimos nagios a ambos grupos, el usuario www-data (el que usa Apache) al grupo nagcmd y, por comodidad aunque no es indispensable, nuestro usuario comn al grupo nagios para que la edicin de ficheros de configuracin nos resulte ma cmoda. Ya lo tenemos todo listo. Ahora toca bajarse Nagios, compilarlo e instalarlo. Visita la pgina oficial para asegurarte de que usas las ltimas versiones disponible. Por lo dems, la secuencia usando las versiones actuales es la siguiente:

cd /tmp wget -c http://tinyurl.com/2jyzao/nagios-3.0a5.tar.gz wget -c http://tinyurl.com/2mqzzk/nagios-plugins-1.4.9.tar.gz tar xzf nagios-3.0a5.tar.gz cd nagios-3.0a5 ./configure --with-command-group=nagcmd make all make install make install-init make install-config make install-commandmode make install-webconf cd .. tar xzf nagios-plugins-1.4.9.tar.gz cd nagios-plugins-1.4.9 ./configure --with-nagios-user=nagios --with-nagios-group=nagios make make install Creamos una contrasea para el acceso web del usuario nagiosadmin y reiniciamos apache: htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin /etc/init.d/apache2 reload Y por ltimo arrancamos nagios y, si no presenta ningn error, creamos un enlace para que de ahora en adelante arranque de forma automtica al iniciar la mquina: /etc/init.d/nagios start ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios Y ya. Con esto nuestro nagios debe de estar totalmente funcional y accesible va web a travs de la URL http://hostname/nagios. La configuracin por defecto monitoriza algunos servicios en la propia mquina dnde se instala y nos debe de bastar para saber que funciona correctamente. Para sacarle partido debemos de hacer algunas cosillas ms que os enumero, aunque con menor detalle, a continuacin. 1. Primero y fundamental: hay que plasmar la topologa de nuestra red a travs de los ficheros de configuracin de nagios. Dichos ficheros se encuentan en el directorio /usr/local/nagios/etc/objects. All debemos de encontrar al menos un fichero llamado localhost.cfg (el nico activo por el momento) y que nos puede servir como ejemplo de base. No le echeis cuenta a quien os diga que la configuracin de nagios es enrevesada y echadle un vistazo libres de prejuicios, ya vereis que no es as. La gua de configuracin debera de ser una buena referencia para este paso. Si queremos recibir notificaciones por email de las alertas de nuestra red es preciso que la mquina tenga postfix instalado y correctamente configurado y que editemos el fichero /usr/local/nagios/etc/objects/contacts.cfg y cambiemos la direccin de correo que aparece asociada por defecto al usuario nagiosadmin por la nuestra. Si queremos personalizar con iconos apropiados los hosts que aparecen en mapas y fichas de informacin debemos de descargarnos una o varias colecciones de ellos del apartado correspondiente (logos and images) de nagios exchange, descomprimirlas y dejar los iconos en el directorio /usr/local/nagios/share/images/logos/. Y ya que estamos por Nagios Exchange conviene echarle un vistazo tambin a la seccin de Check Plugins. En ella encontraremos una gran coleccin de scripts para la monitorizacin de los ms variados servicios y que complementan fabulosamente a los que nagios trae de base y hemos instalado ya.

2. 3. 4.

Y poco ms an no he plasmado todos los hosts y servicios de mi red pero con una horita escasa de trabajo este es el resultado. Cuando concluya prometo hacer una segunda entrada contando en detalle la configuracin para los ms perezosos que no quieran leerse la documentacin en ingls.

Configurando Nagios 3.x (y I)Bien, continuamos donde lo dejamos? Tenemos nuestro nagios recien instalado y ahora toca configurarlo, plasmar la topologa de nuestra red y monitorizar algunos servicios bsicos. El primer archivo que tenemos que tocar es /usr/local/nagios/etc/nagios.cfg. En el, entre otras cosas, se dicen los archivos de configuracin que nagios tendr en cuenta. En el apartado correspondiente a los objetos, que es lo nico que vamos a tocar, localizamos la entrada correspondiente al fichero activo como ejemplo (linux.cfg). Comentamos la lnea correspondiente a este fichero e introducimos una nueva con el archivo cfg que usaremos y que se llamar, por ejemplo, mired.cfg. Editamos el archivo nagios.cfg e introducimos los siguientes cambios (en negritas): # Definitions for monitoring the local (Linux) host # cfg_file=/usr/local/nagios/etc/objects/linux.cfg # Definicin de nuestra pequea red local de ejemplo cfg_file=/usr/local/nagios/etc/objects/mired.cfg

La red que vamos a definir como ejemplo constar de dos servidores windows, dos linux (uno de ellos el propio que alberga a Nagios), un router que nos da salida a Internet y un switch al que estn conectados todos ellos. Vamos a crear el archivo mired.cfg en el directorio especificado y en el incluiremos la definicin de estos objetos: define host{ use linux-server host_name nagios alias Nagios Server address 127.0.0.1 } define host{ use generic-switch host_name switch#1 alias Switch address 192.168.0.2 parents nagios } define host{ use generic-switch host_name router#1 alias Router ADSL address 192.168.0.1 parents switch#1 } define host{ use linux-server host_name intranet alias Servidor Linux address 192.168.0.3 parents switch#1 } define host{ use windows-server host_name windows#1 alias Servidor principal del dominio address 192.168.0.4 parents switch#1 } define host{ use windows-server host_name windows#2 alias Servidor secundario del dominio address 192.168.0.5 parents switch#1 }

Como podeis ver las definiciones son bien sencillas. Esta simpleza deriva de que Nagios usa una estructura jerrquica en la que cada objeto hereda las caractersticas definidas previamente en las plantillas que est usando. La declaracin de estas plantillas se hace en el archivo templates.cfg. All podemos ver, por ejemplo, el contenido del objeto linux-server que, a su vez, se deriva de otro denominado generic-host. Por el momento os digo esto slo por culturilla porque no nos va a hacer falta. Nos basta con saber que tenemos disponibles las siguientes plantillas para empezar a trabajar con ellas:

linux-server windows-server generic-printer generic-switch Otra cosa interesante es la clausula parents mediante la que especificamos las conexiones entre los diferentes hosts. Como veis la nica mquina a la que no le hemos asignado un padre es a la que tiene Nagios instalado. Pensad que esa mquina ser el corazn de nuestra red de monitorizacin porque es desde ella desde donde se ejecutaran todos los comandos. Aunque aqu no aparece ninguna, una mquina puede tener ms de un host como padre (imaginaos una estructura de switches con conexiones redundantes entre ellos). Para ello basta con especificar los nombres de todos los padres que consideremos necesarios separados por comas. A continuacin y en el mismo fichero aadiremos las definiciones necesarias para crear grupos y organizar nuestros objetos y para monitorizar un primer servicio comn a todos ellos: el PING define hostgroup{ hostgroup_name linux-servers alias Servidores Linux members nagios, intranet } define hostgroup{ hostgroup_name windows-servers alias Servidores Windows members windows#1, windows#2 } define hostgroup{ hostgroup_name switches alias Electrnica de red members switch#1, router#1 } define service{ use generic-service host_name nagios, intranet, switch#1, router#1, windows#1, windows#2 service_description PING check_command check_ping!200.0,20%!600.0,60% normal_check_interval 5 retry_check_interval 1 }

La definicin de los grupos es autoexplicativa verdad? Luego nos serviran para organizar las vistas adecuadamente. Y desde luego que esta clasificacin no es obligatoria. Podeis crear grupos en funcin del entorno donde estn las mquinas (desarrollo, preproduccin, produccin), la localizacin geogrfica, el color de la carcasa a vuestro rollo, vamos. Para los servicios quizs sea necesario contar algunas cosas ms. Como podemos ver el servicio que hemos definido tambin deriva de un objeto denomimado generic-service y que tambin se encuentra en el archivo templates.cfg. Podemos echarle all un vistazo a esa definicin pero por el momento no conviene que os despisteis y lo ms interesante es la linea etiquetada como check_command que es donde realmente invocamos al comando que se va a encargar de monitorizar el servicio con una curiosa estructura de argumentos separados mediante signos de exclamacin. Para comprender lo que estamos haciendo realmente tenemos que echar mano del fichero commands.cfg. Alli buscamos la definicin del comando check_ping: # check_ping command definition define command{ command_name check_ping command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5 } $USER1$ es una variable que apunta al directorio donde se encuentran los plugins (/usr/lib/nagios/plugins/) y $HOSTADDRESS$ es la IP del host que estamos monitorizando. Los argumentos que invocamos separados por signos de exclamacin se sustituyen aqu por los $ARG1$ y $ARG2$. Es decir, cuando Nagios lanza esta comprobacin para, por ejemplo, la mquina que aloja nuestra intranet est ejecutando lo siguiente: /usr/lib/nagios/plugins/check_ping -H 192.168.0.3 -w 200.0,20% -c 600.0,60% -p 5 No creo que por el momento merezca la pena meterse en muchas interioridades pero bsicamente lo que hacemos (y esto es comn para casi todos los scripts que monitorizan servicios en Nagios) es pasar un umbral que consideraremos como warning y otro como critical (-w y -c respectivamente). Si te interesa saber ms sobre lo que realmente ests haciendo basta con que ejecutes el comando con un -h. Conocer como funcionan realmente los comandos de nagios es muy importante porque cuando empecemos a desarrollar nuestros propios scripts o queramos modificar los que vienen por defecto lo mejor es ejecutarlos directamente desde lnea de comando y comprobar la salida que dan hasta que estemos satisfechos. Y, si os parece, lo dejamos aqu por el momento. En la prxima entrega aadiremos algunos servicios ms y adornaremos con iconos apropiados el mapa de nuestro sistema.

Configurando Nagios 3.x (y II)La semana pasada dejamos nuestro nagios funcionando pero un tanto soso. El mapa de estado (tal vez la pantalla ms vistosa de la herramienta) queda bastante pobre sin logos identificativos para cada mquina y tan slo comprobbamos que las mquinas respondieran a un ping sin monitorizar servicio alguno.

Hoy vamos a empezar por ponerlo bonito. Lo primero que necesitamos son logotipos. En el apartado correspondiente de Nagios Exchange tenemos varias colecciones para elegir. Yo uso habitualmente dos de ellas: Base Images para los ordenadores y Cook Images para la electrnica de red. Los descargamos, los descomprimimos y los copiamos en el directorio /usr/local/nagios/share/images/logos. Cada icono suele venir en cuatro formatos diferentes: gif, jpg, png y gd2. Ahora tenemos que indicar en las definiciones de nuestros hosts los iconos que queremos usar para representarlos. Como ya os he dicho en otras ocasiones soy un poco torpe para los formatos as que suelo hacer caso a las recomendaciones que le en algn momento (no recuerdo donde) y escojo el .gif como icono general y el .gd2 para el mapa de estado. No voy a poneros de nuevo la definicin de todos los hosts con las lneas que hay que incluir para ello. La sintaxis es tan simple que, creo, basta con uno como ejemplo (lo aadido en negrita):

define host{ use linux-server host_name nagios alias Nagios Server icon_image debian.gif statusmap_image debian.gd2 address 127.0.0.1 } Los iconos elegidos para el resto de los hosts han sido network_switch.gif, router.gif, linux40.gif, win40.gif y sus respectivos .gd2 para el mapa de estado. Reiniciamos el servicio y ahora ya se ve mejor verdad?

Aadamos ahora algunos sevicios adicionales. Para ello vamos a volver a echarle un vistazo al fichero /usr/local/nagios/etc/objects/commands.cfg. En el apartado SAMPLE SERVICE CHECK COMMANDS tenemos los que vienen preconfigurados y listos para usar pero ojo con algunos de ellos: los que comienzan con check_local slo sirven para monitorizar servicios en la propia mquina en la que est instalado nagios. Advertido esto, vamos a aadir los siguientes servicios:

Nmero de usuarios, nmero de procesos y carga de cpu para la mquina que alberga a nagios. Servicios SSH y HTTP en ambas mquinas con Linux. Servicios SMTP y POP3 en la mquina que alberga la intranet y que, para este ejemplo, tambin hace las veces de servidor de correo. Servicio DHCP en el servidor secundario de dominio de windows. Para ello aadimos lo siguiente al final de nuestro fichero mired.cfg y volvemos a reiniciar el servicio que ejecuta nagios: define service{ use generic-service host_name nagios service_description Current Users check_command check_local_users!20!50 }

define service{ use generic-service host_name nagios service_description Total Processes check_command check_local_procs!250!400!RSZDT } define service{ use generic-service host_name nagios service_description Current Load check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0 } define service{ use generic-service host_name nagios, intranet service_description SSH check_command check_ssh } define service{ use generic-service host_name nagios, intranet service_description HTTP check_command check_http } define service{ use generic-service host_name intranet service_description SMTP Response Check check_command check_smtp!-t 5 -e midominio.es } define service{ use generic-service host_name intranet service_description POP3 Response Check check_command check_pop!-t 5 -e midominio.es } define service{ use generic-service host_name windows#2 service_description DHCP check_command check_dhcp } La nica personalizacin que requiere para adecuarlo a vuestra red es cambiar midominio.es en los servicios SMTP y POP3 por los que maneje vuestro servidor de correo.

Ahora la vista del grid de servicios de nuestra red queda bastante mejor (notad que he bajado a propsito el servicio POP3 de la mquina correspondiente para que no todo parezca tan idlico):

Sigue diciendo alguien por ah que la configuracin de nagios es complicada? Y aqu lo dejamos por hoy. En la prxima entrega veremos como aadir nuevos servicios a los que vienen por defecto en el fichero commands.cfg

Configurando Nagios 3.x (y III)Continuamos donde lo dejamos. Una de las cosas que tenemos pendiente es hacer que nagios nos notifique las alertas que detecta, porque si tenemos que estar pendientes de las pantallas de estado en todo momento la cosa, despus de las primeras horas, no tiene tanta gracia verdad? Para ello lo nico que tenemos que hacer es editar el fichero /usr/local/nagios/etc/objects/contacts.cfg y modificar la direccin de correo del contacto que trae por defecto por la nuestra:

define contact{ contact_name nagiosadmin ; Short name of user use generic-contact ; Inherit default values from generic-contact template (defined above) alias Nagios Admin ; Full name of user email [email protected] ;