martes, 30 de agosto de 2011
Nagios3 Instalación y configuración
=='''Instalar y configurar Nagios'''==
* Descargar e instalar Nagios 3
root@Trex:~# apt-get install -y nagios3 nagios3-doc
-y = acepta automaticaente para que no pregunte si deseo descargar el paquete.
(el paquete nagios3-doc es una documentacion que explica paso a paso, mas adelante la van a usar)
* Por defecto nos crea el directorio del nagios en
/etc/nagios3/
root@Trex:/etc/nagios3# ls
total 140
-rw-r--r-- 1 root root 1904 Jul 3 2010 apache2.conf
-rw-r--r-- 1 root root 12218 Jul 3 2010 cgi.cfg
-rw-r--r-- 1 root root 2442 Aug 12 08:56 commands.cfg
drwxr-xr-x 2 root root 4096 Aug 12 13:56 conf.d
-rw-r--r-- 1 root root 26 Aug 9 14:16 htpasswd.users
-rw-r--r-- 1 root root 45013 Aug 12 12:54 nagios.cfg
drwxr-xr-x 3 root root 4096 Aug 12 13:55 objects
-rw-r----- 1 root nagios 1293 Jul 3 2010 resource.cfg
drwxr-xr-x 2 root root 4096 Aug 9 14:16 stylesheets
root@Trex:/etc/nagios3#
* Editar el apache.conf del nagios para ver la documentacion de nagios.org
'''vim /etc/nagios3/apache2.conf'''
Y buscamos esta parte de DirectoryMatch
<DirectoryMatch (/usr/share/nagios3/htdocs|/usr/lib/cgi-bin/nagios3|/etc/nagios3/stylesheets)>
Options FollowSymLinks
'''DirectoryIndex index.php'''
al lado de DirectoryIndex index.php le agregamos un index.html quedando así.
<DirectoryMatch (/usr/share/nagios3/htdocs|/usr/lib/cgi-bin/nagios3|/etc/nagios3/stylesheets)>
Options FollowSymLinks
'''DirectoryIndex index.php index.html'''
Esto lo que hace es, habilitar la opcion "Documentatión" que esta en el nagios, muy util!!.
Finalmente reinicien el apache y ya tienen toda la documentacion de nagios.org en su server :D
'''/etc/init.d/apache2 reload'''
* La carpeta objects por defecto no viene creada as ique la cree antes de hacer un ls
mkdir /etc/nagios3/objects
Lo primero que debemos tener en cuenta es que cada archivo que creamos, modificamos o manipulamos
el sistema lo "va a buscar" con lo cual si nos confundimos en algo el sistema no levanta y tira error.
El primer archivo a modificar es el nagios.cfg que es el archivo donde vamos a espesificarle los archivos
de configuracion que luego van a ser los "equipos"
root@Trex:/etc/nagios3# vim nagios.cfg
y vamos a donde dice # OBJECT CONFIGURATION FILE(S). Por default trae estos archivos comentados, Yo personalmente
no los uso, los dejo comentado y creo directamente mis servidores. (servers.cfg lo use para pruebas)
# OBJECT CONFIGURATION FILE(S)
cfg_file=/etc/nagios3/objects/servers.cfg
cfg_file=/etc/nagios3/objects/kyle.cfg
cfg_file=/etc/nagios3/objects/butters.cfg
cfg_file=/etc/nagios3/objects/cartman.cfg
cfg_file=/etc/nagios3/objects/ike.cfg
cfg_file=/etc/nagios3/objects/jesus.cfg
cfg_file=/etc/nagios3/objects/kenny.cfg
cfg_file=/etc/nagios3/objects/ned.cfg
cfg_file=/etc/nagios3/objects/pip.cfg
cfg_file=/etc/nagios3/objects/stan.cfg
cfg_file=/etc/nagios3/objects/timmy.cfg
cfg_file=/etc/nagios3/objects/towelie.cfg
cfg_file=/etc/nagios3/objects/tweek.cfg
cfg_file=/etc/nagios3/objects/garrison.cfg
Luego de tener la lista de "servidores" debemos crear los .cfg dentro de la carpeta objects, para que el sistema
luego busque dentro de cada .cfg lo que tiene que chequear.
root@Trex:/etc/nagios3/objects#
Aclaración: Podemos crear todos los archivos .cfg vacíos y luego empezar a agregar que queremos que chequee,
yo esto lo hago por un tema de organización, así ya tengo todos los servidores creados tanto en el archivo de
configuración del nagios /etc/nagios3/nagios.cfg como en la carpeta objects.
Ahora si, Dentro de la carpeta objects ya tenemos todos los .cfg creados, y vamos a ir editando uno por uno y
agregandole lo que queremos que chequee.
Al final de cada ejemplo estan explicados basicamente los significados de los parametros.
'''EJEMPLO DEL ARCHIVO DE CONFIGURACION DE servers.cfg (mi equipo de pruebas)'''
############ define servidores ################
define host {
host_name CFH
alias CFH
address 192.168.0.47
use generic-host
parents localhost
icon_image /base/linux40.png
icon_image_alt Jonathan
vrml_image linux40.png
statusmap_image /base/linux40.gd2
}
############ define service ################
################################## basicos ###############################
define service {
use generic-service
host_name CFH
service_description ssh
check_command check_ssh_port!1080
use generic-service
}
define service {
host_name CFH
service_description ping
check_command check_ping!100.0,20% !500.0,60%
use generic-service
notification_interval 0 ; set > 0 if you want to be renotified
}
define service {
host_name CFH
service_description http
check_command check_http! -H 192.168.0.47
use generic-service
notification_interval 0 ; set > 0 if you want to be renotified
}
################################## NRPE ###############################
define service{
use generic-service ; Name of service template to use
host_name CFH
service_description Espacio en /
check_command check_nrpe!check_/
}
define service{
use generic-service ; Name of service template to use
host_name CFH
service_description Espacio en Storage
check_command check_nrpe!check_storage
}
define service{
use generic-service ; Name of service template to use
host_name CFH
service_description Procesos Totales
check_command check_nrpe!check_procs
}
define service{
use generic-service ; Name of service template to use
host_name CFH
service_description Current Load
check_command check_nrpe!check_load
}
define service{
use generic-service ; Name of service template to use
host_name CFH
service_description apt
check_command check_nrpe!check_apt
}
define service{
use generic-service ; Name of service template to use
host_name CFH
service_description cpu
check_command check_nrpe!check_cpu
}
'''DEFINE HOST'''
define host { } = dentro de las llaves debemos poner todos los parametros de cada servidor a monitorear
host_name = el nombre real del host
alias = alias con el cual veremos en los graficos
address = la IP del equipo que queremos monitorear
use = es el tipo de uso que le vamos a dar (por defecto generic-host) se usa para diferenciar por grupos de servicio.
parents = se usa espesificando el padre de ese servidor ej el padre de todos los servidores deberia ser el firewall
icon_image = icono del servidor en la visualizacion del host
vrml_image = icono del servidor en la visualizacion pequeña
statusmap_image = icono en el "radar" de hosts
'''DEFINE SERVICE'''
define service { } = dentro de las llaves debemos poner todos los parametros de servicios
use = es el tipo de uso que le vamos a dar (por defecto generic-service) se usa para diferenciar por grupos de servicio.
host_name = el nombre del servidor (debe ser exactamente igual al que definimos en define host { } )
service_description = una descripcion de que hace el servicio ej: check_ping chequea si responde ping
check_command = se debe colocar check_xxx -parametro1 -parametro2 (xxx es el tipo de servicio ejcheck_ping )
use = por defecto generic-service, se usa como para definir por grupos de servicios
Una vez que ya tenemos configurados todos los archivos .cfg que estaban dentro de /etc/nagios3/objects/
nos falta instalar el plugin NRPE tanto en los servidores como en el NAGIOS
Aclaracion: llamamos NAGIOS al servidor NAGIOS es decir al que tiene el servicio de NAGIOS, y servidores a los equipos que
se conectan a NAGIOS, en este caso los equipos que se conectan al nagios son tambien servidores aunque pueden ser equipos
normales como terminales, routers, switchs, etc.
NRPE es para que chequee contra los servidores cada servicio que le configuramos anteriormente y obtenga la informacio a mostrar
'''Esta parte suele ser confusa:
Debemos instalar el plugin nagios-nrpe-plugin en NAGIOS
y Debemos instalar el plugin nagios-nrpe-server en las terminales, routers, switchs o servidores a monitorear'''
*Instalando en NAGIOS
root@Trex:~# apt-get install nagios-nrpe-plugin
*Instalando en Servidor (servidor web por ej)
root@webserver:~# apt-get install nagios-nrpe-server
*Una vez instalado este paquete, debemos configurar el archivo que envia info a el o los nagios. Para ello debemos editar el archivo nrpe.cfg que se encuentra en /etc/nagios/
root@CFH:/etc/nagios# vim /etc/nagios/nrpe.cfg
*acá lo unico que modificamos o agregamos mejor dicho es lo que queremos que se chequee en este equipo.
*vamos hasta donde dice #COMMAND DEFINITIONS. Acá van a encontrar una serie de ejemplos, yo personalemnte los dejo todos comentados y agrego solo lo que quiero que chequee.
acá les dejo un ejemplo de mi equipo con nrpe.
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_/]=/usr/lib/nagios/plugins/check_disk -w 25% -c 10% -p /
command[check_home]=/usr/lib/nagios/plugins/check_disk -w 25% -c 15% -p /home/jonathan
command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_procs]=/usr/lib/nagios/plugins/check_procs -w 200 -c 260
command[check_apt]=/usr/lib/nagios/plugins/check_apt
command[check_sensors]=/usr/lib/nagios/plugins/check_sensors
command[check_http]=/usr/lib/nagios/plugins/check_http
command[check_cpu]=/usr/lib/nagios/plugins/check_cpu -c 70 -w 85
command[check_swap]=/usr/lib/nagios/plugins/check_swap -w 50 -c 30
command = es el comando que viene a buscar
[chec_xxx] = xxx es el comando a chequear.
/usr/lib/nagios/plugins/check_xxx es la ruta donde estan los scripts de check o chequeo.
-w = valor por el cual el sistema alerta en estado WARNING o peligroso
-c = valor por el cual el sistema alerta en estado CRITICO
*Una vez que ya tenemos todo esto configurado en este equipo debemos configurar el nagios para que escuche o venga a buscar estos comandos nrpe.
*Chequear que el NRPE este "escuchando"
'''root@CFH:/etc/nagios# netstat -at | grep nrpe'''
'''tcp 0 0 *:nrpe *:* LISTEN'''
*Si no "escucha" al tirar el netstat no muestra nada
*En caso que no tengan instalado los ssl:
'''root@CFH:/etc/nagios# apt-get install ssl-cert openssl libssl0.9.8'''
'''Agregar un server con chequeo de NRPE:'''
Entrar al server:
'''ssh root@192.168.x.39'''
actualizar el sistema (en este caso un debian6)
'''apt-get update'''
descargar los paquetes nrpe y plugins.
'''apt-get install nagios-plugins nagios-plugins-basic nagios-nrpe-server'''
una vez instalado todo editar el nrpe.cfg
'''vim /etc/nagios/nrpe.cfg'''
agregar los comandos NRPE que queremos que sean chequeados, en este caso DISCO y PROCESOS
agregamos las siguientes lineas, (si se fijan tienen algunos ejemplos ya predefinidos y comentados)
'''command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 40% -c 20% -p /dev/simfs'''
'''command[check_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 250'''
'''check_disk''' = chequea el disco
'''/usr/lib/nagios/plugins/check_disk''' = '''(depende del sistema puede variar)''' es la ruta del script que maneja el chequeo de disco
'''-w 40%''' = -w es Warning, en este caso manda por mail un warnin cuando el disco esta al 40% de llenarce (es un ej.)
'''-c 20%''' = idem que el anterior pero manda un Critical
'''-p /dev/simfs''' = -p es el PATH en este caso uso una maquina virtual, si es un equipo fisico seria /dev/sda1 (si no saben cual es pueden hacer un df -h para que les muestre la particion y en Mb, Gb, etc).
ºººººººººººººººººººººººººººººººº
*Luego buscamos donde dice "allowed_hosts" y agregamos la IP del servidor de nagios, (yo suelo poner tambien la del equipo anfitrion para hacer chequeos locales, aunque no es necesario)
'''allowed_hosts=127.0.0.1,192.168.x.38,192.168.x.39'''
'''127.0.0.1''' = es el localhost del nagios
'''192.168.x.38''' = es el NAGIOS
'''192.168.x.39''' = es mi VM a monitorear
siempre separar por una "coma" ( , )
ºººººººººººººººººººººººººººººººººººººººººººººººº
*Finalmente buscamos la linea que dice "dont_blame_nrpe=0" y la reemplazamos por 1
'''#dont_blame_nrpe=0'''
'''dont_blame_nrpe=1'''
*Generalmente suelo comentar la linea que voy a modificar y agregar la misma linea modificada debajo. Esto lo hago para darme cuenta de las modificaciones que le voy haciendo al sistema y ver como esta originalmente.
'''Timeperiods'''
Franja de horario en que nagios envía las alertas.
'''Proximamente'''
FALTA------------------------------------
'''Instalando Postfix y configurando el envio de mails con Alertas de Nagios. *(BETA)'''
Bueno, luego de leer muchos manuales, docs, blogs y demas junté toda la info, instale,
probe y funciono, ahora tengo corriendo mi nagios con envio de alertas via mails usando postfix.
*Instalar Postfix y ssl's
root@jprado:~# apt-get install -y postfix openssl ssl-cert
-y autoacepta cuando nos pregunta si queremos instalar el paquete.
* Backupear el archivo main.cf para poder trabajar tranquilos.
root@jprado:~# cp /etc/postfix/main.cf /etc/postfix/main.cf_original
* Editar el archivo main.cf del postfix
root@jprado:~# vim /etc/postfix/main.cf
* En mi caso borre toda la config que tenia y agregue lo siguiente:
## relayhost o SMTP que vamos a usar:
relayhost = [smtp.gmail.com]:587
## TLS Configuracion:
smtp_tls_loglevel = 1
smtp_tls_CAfile = /etc/postfix/certs/CAcert.pem
smtp_tls_cert_file = /etc/postfix/certs/mycert.pem
smtp_tls_key_file = /etc/postfix/certs/mykey.pem
smtp_use_tls = yes
smtpd_tls_CAfile = /etc/postfix/certs/CAcert.pem
smtpd_tls_cert_file = /etc/postfix/certs/mycert.pem
smtpd_tls_key_file = /etc/postfix/certs/mykey.pem
smtpd_tls_received_header = yes
smtpd_use_tls = yes
## Otra Config TLS
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
## alias de mapeo para "salir afuera"
smtp_generic_maps = hash:/etc/postfix/generic
* Muchos parametros todabía no se que significan, aunque de a poco voy investigando y agregando que es y para que sirve cada parametro.
* Crear el archivo de validación o autenticacion (en mi caso use Gmail)
root@jprado:~# vim /etc/postfix/passwd
* Dentro del archivo que acabamos de crear debemos colocarle el smtp, el puerto y el user y pass.
root@jprado:~# cat /etc/postfix/passwd
# Logueo para postfix con cuenta Gmail
#
[smtp.gmail.com]:587 usuario@gmail.com:contraseña
#
#
root@jprado:~#
* Alias para "salir afuera" o mandar mails a otros usuarios, (yahoo, hotmail,gmail,etc.)
root@jprado:~# vim /etc/postfix/generic
# Alias con cuenta Gmail
#
root@localhost.localdomain usuario@gmail.com
#
# Recordar cambiar el /etc/hosts
#
#
* Editar el archivo hosts.
root@jprado:~# vim /etc/hosts
IP nombrelocalhost.nombrelocaldomain nombrelocalhost
# Ejemplo de mi hosts
127.0.0.1 localhost
127.0.1.1 jprado localhost
127.0.0.1 jprado.localdomain usuario@gmail.com
* Aclaro que no se si esta bien, despues lo chequeare bien y modificare este "man"
* Ahora debemos modificar los permisos de los siguientes archivos y cifrarlos para
* no dejar la pass a la vista.
root@jprado:~# chmod 600 /etc/postfix/sasl_passwd
root@jprado:~# chmod 600 /etc/postfix/generic
root@jprado:~# postmap /etc/postfix/sasl_passwd
root@jprado:~# postmap /etc/postfix/generic
* Ahora debemos crear los certificados para el postfix.
* Crear carpeta de certificados
root@jprado:~# mkdir /etc/postfix/certs
* Entrar
root@jprado:~# cd /etc/postfix/certs
root@jprado:~# openssl dsaparam 1024 -out dsa1024.pem
root@jprado:~# openssl req -x509 -nodes -days 3650 -newkey dsa:dsa1024.pem -out mycert.pem -keyout mykey.pem
root@jprado:~# ln -s mycert.pem CAcert.pem
root@jprado:~# openssl req -x509 -new -days 3650 -key /etc/postfix/certs/mykey.pem -out /etc/postfix/certs/mycert.pem
root@jprado:~# rm dsa1024.pem
* Reiniciar el servicio de postfix
root@jprado:~# /etc/init.d/postfix restart
FALTA -------------------------------------
EN TESTEO -----------------------------------------
*'''ACLARACION!'''
Suele pasar que cuando intentamos chequear si el nrpe esta funcionando nos devuelve el siguiente error:
CHECK_NRPE: Error - Could not complete SSL handshake.
Esto quiere decir que tenemos mal configurado los "allowed_host"
editar el nrpe.cfg y buscar la linea llamada "allowed_hosts"
vim /etc/nagios/nrpe.cfg
Cambiar:
allowed_hosts=127.0.0.1
por esto
allowed_hosts=127.0.0.1,IP del Equipo, IP de otro equipo,
root@nagios:~# /usr/lib/nagios/plugins/check_disk -w 30% -c 10% -p /
DISK OK - free space: / 5905 MB (72% inode=96%);| /=2286MB;2457;7372;0;8192
-w Warning = envia warning cuando el disco esta al 30% de llenarse
-c Critical = envia critical cuando el disco esta al 10% de llenarse
-p Path = directorio donde calcula el tamaño en /
'''NagiosQL:'''
Es una herramienta (o interfaz web) para administrar graficamente el nagios. Permite agregar los host,
agregar o modificar servicios y todo lo relacionado a configuracion de nagios, solo que en vez de
estar en la linea de comando tipeando entramos a la interfaz web y creamos todo con simples clics.
http://sourceforge.net/projects/nagiosql/files/nagiosql/NagiosQL%203.2.0/
Descargamos el paquete: (generalmente lo descargo en /root o en /tmp)
wget http://sourceforge.net/projects/nagiosql/files/nagiosql/NagiosQL%203.2.0/nagiosql_320.tar.gz
Desempaquetamos:
tar -xzf nagiosql_320.tar.gz
entramos al directorio:
cd nagiosql32/
y copiamos todo el contenido a /var/www/ (para poder instalarlo via web)
cp -rf /root/nagiosql32/* /var/www/
Luego hay que cambiarle los permisos a los directorios:
chown -R www-data.nagios /etc/nagiosql/
Creamos el directorio /config (Sinceramente no se para que lo utiliza, pero en la instalacion lo requiere)
mkdir -p /var/www/nagiosql/config
(-p es para que cree el directorio completo, con todas las carpetas el arbol)
Nagiosql necesita unos paquetes para su correcto funcionamiento:
System Requirements
Webserver like Apache 2.x
MySQL 5.x or greater
Nagios 2.x/3.x (local or remote) or a Nagios compatible monitoring system
PHP 5.2.0 or greater including:
PHP Module: Session
PHP Module: MySQL
PHP Module: gettext
PHP Module: filter
PHP Module: FTP (optional)
PECL Extension: SSH (optional)
Dependiendo de la distro puede variar.
Yo los busqué de la siguiente forma:
apt-cache search php | grep -i Session
apt-cache search php | grep -i etc etc etc
Chequeamos que esten todos los servicios corriendo:
ps -ef | grep -i apache
ps -ef | grep -i nagios
ps -ef | grep -i mysql
(el -i es para que no distiga mayusculas y minusculas).
Luego debemos configurar el timezone del php:
vim /etc/php5/apache2/php.ini
Buscamos la linea:
[Date]
; Defines the default timezone used by the date functions.
; http://php.net/date.timezone
;date.timezone =
Y descomentamos la que dice date.timezone y le colocamos la zona donde estemos, en mi caso quedo así.
date.timezone = 'America/Argentina/Buenos_Aires'
(las comillas son las comilla simples rectas, no las dobles ni las torcidas.)
Una vez que realizamos todos estos pasos reiniciamos los servicios de apache y mysql
/etc/init.d/apache2 restart
/etc/init.d/mysql restart
y finalmente entramos a nuestro server vía web para instalarlo
(Se instala de la forma tipica Netx, Next, Next. no tiene mucha siencia.)
En el navegador colocan la ip del server
http://IP_del_server/
y automaticamente les levanta el index para iniciar la instalacion.
'''ACLARACIÓN!!!!'''
No estoy seguro si funciona instalándolo DESPUÉS de tener corriendo el nagios,
En la próxima prueba voy a intentar instalar el nagios base sin nada y luego instalarle
el NagiosQL para ver si puedo usar la interfaz web para crear todo.
Mientras tanto sigo investigando.
'''UN DETALLE FINAL'''
Una vez que ya tenemos nuestro Nagios funcionando a la perfección, nos queda la ultima tarea,
borrar el log de las alertas para que nos quede el nagios funcionando
perfectamente y sin alerta alguna cosa de empezar a monitorear realmente a partir de este momento.
Para ello borrar el contenido del archivo nagios.log o COPIARLO con otro nombre
y crear un nuevo nagios.log vacío.
La ruta es la siguiente: '''/var/log/nagios3/nagios.log'''
'''Help:'''
http://www.nagios.org/
http://nagiosplugins.org/man/
http://nagioses.blogspot.com.ar/2009/03/nrpe.html
http://linuxos4all.blogspot.com.ar/2011/04/checknrpe-received-0-bytes-from-daemon.html
http://www.php.net/manual/es/timezones.php
http://www.nagiosql.org/documentation/14-faqs/general-documentation/78-requirements-ql32x.html
http://sourceforge.net/projects/nagiosql/files/nagiosql/
http://www.unixmen.com/timezone-for-php-is-not-set-please-set-qdatetimezoneq-option-in-phpini/
http://www.thomas-krenn.com/de/wiki/NagiosGrapher_Konfiguration
https://www.netways.org/projects/grapher/wiki/Doc?version=12
http://www.ftmon.org/blog/install-nagiosgrapher-ubuntu/
http://linuxmanage.com/nagiosgrapher-useful-charts-in-nagios.html
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario