1. ¡OFERTA! con cupón "DIRVPS": hosting por $0,01 y también VPS Linux y Windows por $0,01 el primer mes por Interserver ← publi
    Descartar aviso
Descartar aviso
Al usar este sitio web, aceptas que nosotros y nuestros socios podamos establecer cookies para fines tales como personalizar el contenido y la publicidad. Más información.

Como instalar Monit y mantener un excelente uptime !

Tema en 'Tutoriales Asuntos Técnicos' iniciado por Datacenter1, 15 Oct 2007.

  1. Datacenter1

    Datacenter1 Usuario activo

    [Objetivo]
    ========

    Instalar Monit y configurarlo para monitorear los servicios básicos de un servidor web http, dns, MySQL, mail, carga y memoria del servidor

    [A quien va dirigido]
    ===============

    Administradores de sistema, propietarios de servidores dedicados que desean monitorear servicios y ejecutar acciones si el servicio no responde (como recibir alertas o reiniciar el servicio)


    [Introducción - Que es Monit ]
    =======================

    Monit es una excelente herramienta para administradores de sistemas, permite monitorear diferentes servicios y reaccionar en caso de fallas, desde simples alertas por email hasta complejas ordenes, monit es altamente configurable, incluye una interfaz web desde donde podemos ver el status de los servicios e incluso reiniciarlos (opcional)

    [Como funciona]
    ============

    Una vez instalado, Monit verifica el status de los servicios configurados (por ejemplo cada 60 segundos) en caso de detectar una anomalía, reacionará tal como lo programamos, ya sea enviando un alerta al administrador o intentando corregir la situación de manera automática, todo depende de la configuración particular que realicemos, puede ser usado para monitorear una vasta variedad de servicios, los test se realizan localmente, sin embargo es posible configurarlo para que realice test en servidores remotos.

    [Requerimientos]
    ============

    Monit no tiene requerimientos, más allá de perl, make (incluidos en casi todo servidor Linux)

    [Instalación]
    =========

    Para instalar monit, como root en el servidor ejecutemos los siguientes comandos:

    CODE, HTML o PHP Insertado:
    cd /usr/local/src
    wget http://www.tildeslash.com/monit/dist/monit-4.9.tar.gz
    tar zxvf monit-*
    cd monit*
    ./configure --without-ssl
    make && make install
    
    Ya tenemos instalado monit, ahora vamos a instalar una pequeña utilidad para arrancar monit como demonio (daemon), para ello ejecutamos los siguientes comandos desde el mismo directorio donde descomprimimos monit

    CODE, HTML o PHP Insertado:
    cp contrib/rc.monit /etc/init.d/monit
    chmod 755 /etc/init.d/monit
    ln -s /usr/local/bin/monit /usr/bin/monit
    
    
    Un último paso en la instalación antes de pasar a la configuración (solo aplica si tienes apache instalado y deseas monitorearlo con monit):

    Localiza el directorio root document de apache, normalmente lleva el nombre de htdocs dentro de el crear una carpeta llamada monit y dentro de monit crear un archivo llamado token, el contenido de este archivo es irrelevante

    ahora visita http://0.0.0.0/monit/token (cambia 0.0.0.0) por la ip de tu servidor (la usada por apache) si no hay un error, es que apache ha podido leer correctamente el archivo /monit/token, en caso de error asegúrate de que has creado el archivo en la ubicación correcta y que apache puede leerlo.

    [Configuración de monit]

    Monit incluye un archivo de configuración ubicado en /etc, sin embargo en este artículo, crearemos una configuración jerárquica de monit para ello crearemos el directorio monit en /etc

    CODE, HTML o PHP Insertado:
    touch /etc/monitrc
    mkdir /etc/monit
    
    Ahora editaremos el archivo de configuración, copia y pega todo el siguiente bloque y luego edita /etc/monitrc para que cambies los valores necesarios.

    CODE, HTML o PHP Insertado:
    cat<<EOF >> /etc/monitrc
    # Monit control file
    # ==================
    
    # Monit global settings:
    # ----------------------
    set daemon  60
    set logfile syslog facility log_daemon
    set mailserver localhot
    set mail-format {
       from: root@localhost
       subject: $SERVICE $EVENT at $DATE
       message: Monit $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION.
                 }
    set alert [email protected]
    
    
    set httpd port 2812 and
    #     SSL ENABLE
    #     PEMFILE  /var/certs/monit.pem
         allow admin:password #[cambiar]
    
    # Configuration Files:
    # --------------------
    
    #include /etc/monit/server.monit
    #include /etc/monit/httpd.monit
    #include /etc/monit/mysqld.monit
    #include /etc/monit/named.monit
    
    
    EOF
    
    Ya hemos configurado monit, ahora solo basta decirle que es lo que debe monitorear y que hacer en caso de anomalías.

    Observe que he establecido algunos "include" esto es para tener todo mejor organizado y fácilmente poder activar o desactivar algún monitor solo comentando o descomentando la linea include /etc/monit/servicio.monit

    Procedemos a crear los archivos para cada servicio (Luego podrás crear tus propios archivos para otros servicios adicionales)

    CODE, HTML o PHP Insertado:
    touch /etc/monit/server.monit
    touch /etc/monit/httpd.monit
    touch /etc/monit/mysqld.monit
    touch /etc/monit/named.monit
    
    Abrimos /etc/monit/server.monit y le copiamos el siguiente contenido, adaptando los valores para su servidor:
    CODE, HTML o PHP Insertado:
    # Monit Server  settings:
    # ----------------------
     check system hostname # cambiar por el nombre de su servidor
        if loadavg (1min) > 2 for 3 cycles then alert
        if loadavg (5min) > 4 for 2 cycles then alert
        if memory usage > 75% then alert
        if cpu usage (user) > 70% then alert
        if cpu usage (system) > 30% then alert
        if cpu usage (wait) > 20% then alert
    
    Grabar los cambios

    Abrimos /etc/monit/httpd.monit y copiamos:
    CODE, HTML o PHP Insertado:
    check process httpd # cambiar por el nombre del proceso
            with pidfile "/ruta_al_archivo_pid/httpd.pid" # cambiar  por el archivo  del servidor apache
            start program = "/etc/init.d/httpd start" # cambiar si es necesario
            stop program  = "/etc/init.d/httpd stop" # cambiar si es necesario
            if failed host localhost port 80 protocol HTTP request "/monit/token" then restart
            if cpu > 60% for 2 cycles then alert
            if cpu > 80% for 5 cycles then alert
            if totalmem > 75% for 5 cycles then alert
            if children > 250 then alert
            if 5 restarts within 5 cycles then timeout
    
    Realizamos ahora la misma operación con /etc/monit/mysqld.monit e incluimos:

    CODE, HTML o PHP Insertado:
    check process mysql # cambiar por el nombre del proceso
       with pidfile "/var/run/mysqld/mysqld.pid" #cambiar por la ruta y archivo pid
       start program = "/etc/init.d/mysqld start" #cambiar de ser necesario
       stop program = "/etc/init.d/mysqld stop" #cambiar de ser necesario
       if failed host localhost port 3306 protocol MYSQL then restart
       if 5 restarts within 5 cycles then timeout
    
    y por último hacemos lo mismo con el archivo named.monit e incluimos:

    CODE, HTML o PHP Insertado:
    
    check process named # cambiar por el nombre del proceso 
       with pidfile "/hsphere/local/var/named/named.pid" #cambiar por la ruta y archivo pid
       start program = "/etc/init.d/named start" #cambiar de ser necesario
       stop program = "/etc/init.d/named stop" #cambiar de ser necesario
       if failed host 127.0.0.1 port 53 type tcp protocol dns then restart
       if failed host 127.0.0.1 port 53 type udp protocol dns then restart
       if 5 restarts within 5 cycles then timeout
    
    Ahora solo nos resta verificar la instalación y arrancar el servicio:
    CODE, HTML o PHP Insertado:
    chkconfig --level 345 monit on # configura monit para que arranque con el servidor
    /etc/init.d/monit start # arrancamos monit 
    monit status # muestra el status de los servicios monitoreados
    
    La página oficial de monit es http://www.tildeslash.com/monit/ incluye muchos ejemplos prácticos de configuración.

    [Advertencia]
    ==========

    El autor no toma ninguna responsabilidad por cualquier efecto indeseado que la aplicación de los comandos aquí descritos puedan ocasionar, el manejo de servidores de producción requiere de un administrador de sistemas experimentado Novatos: utilicen un sistema de pruebas para aprender NO sus servidores de producción.

    Se agradece reportar al autor cualquier error encontrado o actualizaciones necesarias.

    Autor: Guillermo Calvo
     
    Última edición: 18 Oct 2007
  2.  
  3. DavidC

    DavidC 8 de Mayo de 2008 Q.E.P.D.

    Como siempre, buen aporte y bien presentado, Guillermo. Lo aplicaré sobre mi vps de aprendizaje. Ya te diré algo.
    Muchas gracias.
     
  4. WebTech

    WebTech Súper Moderador Miembro del Staff Moderador CH

    No conocía este script, pero veo que es interesante. Muchas de esas funcionalidades están presentes en otras aplicaciones como SIM y la suite CSF, personalmente, prefiero Nagios para monitorización remota de servidores, altamente configurable, lo único complicado es su instalación.

    Igualmente, buen aporte, siempre es bueno conocer otras alternativas :afirmar:

    Saludos! :aprueba:
     
  5. Datacenter1

    Datacenter1 Usuario activo

    Saludos WebTech

    Las capacidades de Monit son superiores a SIM y CSF (también he trabajado con ambos) me agrada CSF y es parte de mi rutina de hardening para servidores cPanel, sin embargo esos dos productos se limitan a chequear una conexión TCP a un determinado puerto, en otras palabras solo hacen test básicos, personalmente he visto casos en los que SIM no detectó un servidor apache que no respondía ningún request, para SIM todo está bien si el puerto 80 esta funcionando, en cambio Monit tiene protocolos especiales para probar HTTP, DNS, MYSQL y muchos más.

    No pretende ser un NAGIOS (el campeón indiscutible de los servicios de monitoreo) sino un producto fácil de instalar, fácil de configurar, muy ligero y de gran ayuda.
     
  6. WebTech

    WebTech Súper Moderador Miembro del Staff Moderador CH

    Ahora luego de este detalle, aún más creo que lo voy a considerar para testeo :), gracias :aprueba:

    Saludos!
     
  7. Datacenter1

    Datacenter1 Usuario activo

    Advertencia

    Este tutorial contiene errores, sugiero NO UTILIZARLO sino se tienen buenos conocimientos de Linux, haré las correcciones necesarias tan pronto como puede editar el post original

    [Actualización]

    El tutorial ha sido corregido, es seguro utilizarlo ahora
     
    Última edición: 18 Oct 2007
  8. Datacenter1

    Datacenter1 Usuario activo

    La advertencia no es contigo, WebTech, se que eres un avanzado Sys Admin, hay error en el archivo monitrc (introducidos por mi) y un error /etc/init.d/monit del autor de ese módulo, que pasé por alto corregir, si vas a instalarlo antes de mis correcciones, por favor contácteme y con gusto te doy los detalles correctos

    Aparte de que es posible simplificar aún más la instalación, haré los cambios tan pronto como sea posible.
     
  9. WebTech

    WebTech Súper Moderador Miembro del Staff Moderador CH

    Vi que era algo general, no te preocupes :cool:, igual gracias por la advertencia, seguro le vendrá bien a todos hasta que puedas editar el ticket.

    Un saludo! :aprueba:
     
  10. Datacenter1

    Datacenter1 Usuario activo

    Listo, he corregido los errores que contenía
     
  11. dinamo

    dinamo Nuevo usuario

    configure: error: monit requires flex, not lex
    me da ese error al momento de ejecutar ese comando
    ./configure --without-ssl

    saludos:aprueba:
     
  12. Datacenter1

    Datacenter1 Usuario activo


    Saludos,

    CODE, HTML o PHP Insertado:
    yum install flex
    debe resolver el problema, si al momento de la compilación recibes un mensaje de yacc no encontrado

    CODE, HTML o PHP Insertado:
    yum install byacc 
    lo instalará
     
  13. HostingDN

    HostingDN Usuario activo

    Hola tengo una duda en lo siguiente:

    set httpd port 2812 and
    # SSL ENABLE
    # PEMFILE /var/certs/monit.pem
    allow admin:password #[cambiar]

    Donde dice cambiar, que se tiene que poner?, perdon esque no entendi bien esa parte


    Corrigiendo, lo lamento ya entendi jejeje esque tarde en captarlo
     
  14. Datacenter1

    Datacenter1 Usuario activo

    Debes poner el usuario que tendrá acceso y el password

    Pronto estaré reescribiendo una versión rápida y simplificada de este tutorial para http://comoinstalo.com
     
  15. snisnik

    snisnik Nuevo usuario

    Monit es gratuito?? o hay que pagar algo?
    salduos!
     
  16. MaxKiller

    MaxKiller Usuario activo

    Es Open Source, es gratis.

    Saludos :aprueba:
     
  17. fastlane

    fastlane Nuevo usuario

    Excelente guia, muchas gracias 800-HELP.com
     
  18. Adsl5mb

    Adsl5mb Usuario activo

    Hola,

    Una pregunta el Monit tiene alguna opción para que en caso de que el Load supere una cantidad por ejemplo 25 durante 5 minutos haga un restart de httpd o mysqld?

    Estaba usando el SIM pero me parecio mucho más completo este.

    muchas gracias.
     
  19. Hola,

    Creo que solo lo tiene para las opciones: dnslimit, loglimit, waitlimit.

    Saludos,
     
    Última edición por un moderador: 22 Jul 2009


Alojamiento web, Hosting Reseller, Servidores Dedicados - All in Hosting


    
    
    
    
Blog · Sitios amigos: GuiaHosting · Unidominios · Interalta ·