Yo y mi debian

Lunes, 12 de septiembre de 2005

$>Monit, manual de instalaci?n y configuraci?n. :)

Monit es un sistema de monitorizaci?n de procesos en Linux/Unix, que adem?s de monitorizar tambi?n puede realizar acciones autom?ticamente si estas las configuramos antes una determinada alerta.

Monit se configura de una manera sencilla y muy intuitiva, posee una web de visualizaci?n de todo aquello que hayamos configurado, mediante un servidor web que viene incluido en el programa.

Podremos parar, relanzar o arrancar servicios desde la web de monit, montar unidades, desmontarlas, monitorizar los recursos de nuestro pc, memoria, disco,... . Controla cambios en ficheros, permisos, ... .Podemos controlar todo tipo de servicios locales o remotos por los protocolos TCP, UDP y sockets Unix.

Podemos definir protocolos para monitorizar distintos servicios , monit simula una conexi?n para comprobar su estado. Monit tiene ya configurados los protocolos mas importantes, como HTTP, HTTPS, SMTP, FTP, POP, IMAP, MYSQL, NNTP, NTP3, LDAP, LDAP2, LDAP3, DNS, RSYNC, FTPS, SLL,... entre otros.


Instalaci?n Helado

En la pagina de monit monit podemos encontrar tanto el c?digo fuente, como paquetes precompilados para las distribuciones mas usadas.

Al estar el programa escrito en C, necesitares para su funcionamiento tener instalado el libc. Si instalamos monit desde las fuentes, adem?s debemos de instalar un servidor web tipo Apache para que monit lo use, si lo instalamos desde los paquetes precompilados, no nos hace falta nada mas.

SI lo instalamos desde c?digo fuente, con un simple

./configure
./make
./make install

estar? instalado

Una vez instalado, tenemos, primero el archivo de configuracion de monit, el monitrc, que sera en donde configuraremos nuestro monit.

Para lanzar monit, bastara con poner en consola

monit

Y para salir

monit quit


Podemos querer que se ejecute autom?ticamente al inicio del sistema, entonces deberemos decirselo al inittab, editandolo

vi /etc/inittab

a?adiremos la siguiente linea

mo:2345:respawn:ejecutable_monit -Ic archivo_conf_moit

Tenemos que tener cuidado, ya que despendiendo de la distribuci?n, el ejecutable del programa y el archivo de configuracion pueden estar en otro sitio, en mi caso, con Debian Sid

mo:2345:respawn:/bin/monit -Ic /etc/monit/monitrc

Ejecutamos

telinitq

Y ya tendremos el el monit cargado por el inittab.

Configurando monit

Voy a indicar distinto ejemplos y explicarlos. El sistema de monit es muy simple, adem?s en su arcivo de configuraci?n trae ejemplos de casi todo.

Cuando configuremos algo en monitrc, al guardar podemos ejecutar

monit -t

Si algo esta mal, este nos lo indicara.

Empezamos editando el archivo monitrc

Tenemos dos tipos de entradas, globales y servicios:

Globales: empiezan por set y el par?metro a configurar, aqu? configuramos cosas de monitorio
Servicio: empiezan por check y el servicio a monitorizar. Nos permite el uso de if, osea de la condicion.

Entradas Globales

tenemos

set damenon 120

Aqu? le decimos a monit que cada 120 segundos, osea 2 minutos, realice la comprobaci?n de todos los procesos que monitoriza.

set logfiles syslog facility LOG_daemon

Monit escribir? sus errores y comprobaciones v?a syslog.

set mailserver [email protected]

Le decimos a Monit el servidor SMTP por el que enviara correos.

set alert [email protected]

Le decimos a Monit a que cuenta de correo enviara los mensajes de alerta.

set httpd port 4567 address localhost

Le decimos en que puerto el servidor web de monit funcionar?, y desde que res o equipo vamos a entrar. En este caso solo podremos acceder a la web de monit desde la propia maquina, si queremos aceder desde fuera seria

set httpd port 4567

accederemos a la web de monit, poniendo

http://nuestra_ip:puerto

en este caso

http://localhost:4567 ---> si estamos en nuestro pc

http://ip:4567 --> si estamos en otro pc



allow localhost
allow admi:monit

Con allow damos permisos de entrada a la web de monit. En este caso damos permiso a la maquina localhost, osea nosotros mismo, y si estamos accediendo desde otro sitio, le decimos que con la segunda linea el usuario y el password para acceder, en esta caso admin y pass monit.

allow 10.1.1.2
allow 192.168.0.1/255.255.255.240
allow maquina.dominio.es

Podemos en allow, desde poner 1 maquina, a un dominio completo, a unos ragos de ip

allow md5 /etc/apache2/ftpasswd paco manuel

tambi?n asi a?adimos a los usuarios paco y manuel, con sus claves de apache2.

allow manilo:pass read-only

Definimos un usuario de solo lectura, no podr? en la web de monit ni parar ni reiniciar... servicios, solo vera su estado.


Podemos activar el servicio SSL, para mayor seguridad para acceder a la web mediante HTTPS .

set httpd 2812
ssl enable
pemfile /etc/certs/monit.pem

As?, primero decimos el puerto del servidor web. Luego activamos el ssl, y por ultimo, le decimos donde esta el archivo pem, que contiene la clave privada y el certificado.




Entradas de servicio:

Tipo proceso;

check process apache with pidfile /run/var/apache2/apache2.pid
start =/etc/init.d/apache2 start
stop =/etc/init.d/apache2 stop
if failes port 80 and protocol http then restrart
if cpu usage is greater than 60 percent for 2 cycles then alert
if cpu usage > 98 percent for 2 cycles then restart
if 2 restarts within 3 cycles then timeout

Esto es una configuraci?n t?pica para monitorizar un apache.

check process apache2 with pidfile /run/var/apache2/apache2.pid

le decimos que chequee el proceso apache2 y le indicamos donde esta el archivo que le diga cual es ele pid de este proceso. Este archivo lo tienen todos los demonios.


start =/etc/init.d/apache2 start
stop =/etc/init.d/apache2 stop

Como se para y arranca el demonio.


if failes port 80 and protocol http then restrart

Si falla el puerto 80, o el que sea del servidor web, y el protocolo http, que reinicie el servidor

if cpu usage is greater than 60 percent for 2 cycles then alert
if cpu usage > 98 percent for 2 cycles then restar

Si el uso es mayor al 60% que avise, si es mayr al 98 % que restaure


if 2 restarts within 3 cycles then timeout

Si ha restaurado el servicio 2 en 3 ciclos, le decimos que deje pasar un tiempo sin hacer nada, para que no nos sature el servidor.



Tipo host

check host tal.cual.pascual.com witch address tal.cual.pascual.com
if failes port 80 protocol http and resquest ?/index.htm?
then alert with the mail-format {subject:tal.cual.pascual.com caido}
if failed port 21 protocol ftp with 15 seconds then alert and exec ?/ftp/iniciarftp.sh?
alert [email protected]


configuraci?n t?pica del un servidor en el que tememos un apache y un ftp. Si fueran otros protocolos seria igual, indicando el protocolo y el puerto que usa.

check host tal.cual.pascual.com witch address tal.cual.pascual.com

Le decimos que chequee este hots

if failes port 80 protocol http and resquest ?/index.htm?
then alert with the mail-format {subject:tal.cual.pascual.com caido}

si falla el protocolo http por el puerto 80 y no hay respuesta de index.html, que alerte y adem?s envie un mail al que se especifico en las entradas globales con el subject tal.cual.pascual.com caido y adem?s alerte.


if failed port 21 protocol ftp with 15 seconds then alert and exec ?/ftp/iniciarftp.sh?

Si falla el ftp por el puerto 21, pasados 15 segundos, que alerte y ejecutara el escritp que estar en la ruta
?/ftp/iniciarftp.sh?, en vez de un escrip, podemos decirle que ejecute cualquier programa de nuesto Linux, indicandole la ruta y los parametor ejemplo:

exec ?/bin/ls -l?



alert [email protected]

Las alertas las mandara a esta mail.




Dependencias entre dos procesos:

Puede darse el caso que un proceso dependa de otro para su correcto funcionamiento, podemos representar estas dependencias en monit


check process apache2 with pidfile ?/usr/local/apache2.pif?
......

depends on httpd

check file httpd witch path /etc/init.d/httpd
...

As? decimos que el proceso apache2 depende de otro llamado httpd y ejecutaremos la acccion que queramos..





Tipo Fichero


check file http.conf with paht /etc/httpd/http.conf
if change checksum then exec ?/bin/apachectl grafeful?



Aqu? estamos monitorizando el archivo de configuraci?n de httpd.

if change checksum alert

Le decimos que utilice el comando graceful, que hace que apache recoja los cambios

check file access_log with paht /etc/apache/access_log
if size > 100 Mb then exec ?/sbin/logratate -f rotate_apache_now?


Estamos monitorizando el archivo que guarda los datos de la gente que entra a navegar a nuestra web.

if size > 100 Mb then exec ?/sbin/logratate -f rotate_apache_now?

Si el tama?o es mayor a 100 megas, use el comando logratate -f rotate_apache_now que rote el archivo.



Tipo directorio

check directory sbin with path /sbin
if changed timestamp then alert

Comprueba el directorio /sbin

Si se poduce un cambio nos da una alerta.

Esto nos puede ser necesario si cada z tiempo tiene que producirse un cambio en un directorio, ya sea por un backup o lo que sea, sabremos que si el cambio no se produce que ha habido un error.

check directory bakup with path /bakup_hora
if timestamp >1 hour ten alert

comprueba que cada hora se produzca un cambio del directorio bakup_hora, sino, avisa con alerta.



Tipo dispositivo.

Podemos monitorizar los dispositivos de /dev/, como discos duros...

check device home with path /dev/hda2
start = ?/bin/mount /dev/hda2?
stop = ?/bin/umount /dev/hda2?
if space usage > 90% then alert
if space usage > 99% then stop
if inode usage > 90% then alert
if inode usage > 99% then stop


Le decimos que el dispositivo hda2, que es el home, le este monitorizando, si pasa del 90 de uso de espacio o inodos, nos avisa, si nos pasamos del 99% lo desmonta.



Podemos a?adir a cada monitorizaci?n la siguiente clausula a cualquiera monitorizaci?n

group normbre.

Donde nombre es el que queramos. Esto nos sirve para agrupar procesos monitorizados.
Para que queremos esto?
Si queremos parar todos los procesos de un grupo, prodremos hacerlo desde consola

monit -g web stop all

As? todos los procesos del grupo web los paramos o

monit -g web restart
monit -g web start

Reiniciando o iniciando los servicios a su vez.


monit stop all
monit start all
monir restart all

Podremos para, iniciar o reiniciar todo los procesos.
Publicado por Orion220 @ 15:10 | 3 Comentarios | Enviar

Comentarios

$>Añadir comentario
  • Autor: sKuDRaM
  • Fecha: Martes, 13 de septiembre de 2005
  • Hora: 22:02
la verdad es que lo veo curiosete. lo voy a probar y luego cuento como ma ido.


http://dai.blogcindario.com/ azarquiel (toledo)

  • Autor: Invitado
  • Fecha: Mi?rcoles, 10 de junio de 2009
  • Hora: 2:46
Pues no lo veo, jiji ser?a de mucha ayuda en este momento, ocupo entregar un trabajo escolar utilizando monit pero no logro ver con estos colores. Ahi sigo esforzandome por leer. Gracias por la info

  • Autor: Invitado
  • Fecha: Jueves, 18 de febrero de 2010
  • Hora: 11:53
H7cyK8 <a href="http://btkpamvlbwrt.com/">btkpamvlbwrt</a>, [url=http://jrqaqifsqane.com/]jrqaqifsqane[/url], [link=http://mthiqbanghnh.com/]mthiqbanghnh[/link], http://gdeugpkpnwlv.com/