Saltar al contenido →

Instalar y configurar Monit en un VPS con ISPConfig 3

Ya he mencionado que mi servidor es un VPS contratado con time4vps. Llevo utilizando VPS desde hace ya casi 3 años. Antes nunca me había planteado gestionar mi propio servidor, dada la comodidad relativa de un hosting compartido. Eso fue hasta que comencé a utilizar mi servidor para el trabajo, desarrollando proyectos para terceros, lo cual me ha llevado a tener que lidiar con los soportes técnicos.

En un hosting compartido, es a veces muy complicado conseguir que te instalen una extensión de PHP (ImageMagick, intl, etc), modifiquen alguna configuración de apache o mucho menos actualizar la versión de PHP. Por no hablar, de su política en caso de detección de virus en tu servidor que es cerrar todo y dejarte el marrón a ti. Banear tu ip cuando subes un archivo que ellos consideran malicioso cuando es un simple plugin de WordPress o estás desarrollando y has tenido demasiados errores 404 o 500 en un breve lapso de tiempo (¡Hola RedCoruna!). En otros casos es sencillamente imposible subir una web por ftp o descargártela porque no soporta más de una conexión al mismo tiempo, por sus continuas caídas y cortes de conexión (¡Hola 1&1, Dinahosting, …!). La lista de problemas en un hosting compartido normal es larga cuando te pones a desarrollar más o menos en serio.

Un hosting compartido puede ser suficiente para la mayoría de las personas pero para desarrollar suele dar demasiados quebraderos de cabeza. Decidí finalmente hacerme con un VPS en OVH primero y finalmente en time4vps.

Lo primero que eché de menos fue lo fácil que era crear cuentas de correo en un hosting compartido. Configuras el dominio, creas una cuenta de correo en cpanel o el panel de control instalado y a trabajar. En un VPS, no tenía ni idea de cómo configurar postfix, amavis, … Estos nombres me sonaban pero nunca había trabajado con ellos. Sin duda, es lo que me pareció más complicado de configurar el VPS. Aún, a día de hoy, creo que no tengo del todo claro como está funcionando. ISPConfig 3 me facilitó mucho la vida y es un buen panel de control.

Problemas con el correo

El problema recurrente que me he encontrado en OVH es que más o menos una vez a la semana me dejaban de llegar los correos. La verdad es que todavía no sé porque ocurría y en ese momento, no tenía mucho tiempo que dedicar a indagar sobre estos problemas, así que cada vez que ocurría lo único que hacía era volver a arrancar el servicio amavis. La culpa solía ser siempre del proceso amavis que se había parado y los correos quedaban indefinidamente en la cola.

Cansado de OVH por este tema y algunos problemas con el soporte técnico, decidí mudarme a time4vps. El VPS era muy económico así que decidí probar suerte. Ya llevo más de un año en este hosting, estoy muy satisfecho con su rendimiento en general pero tengo que reconocer que sigo teniendo problemas con el correo ocasionalmente.

El problema no es tener que arrancar el servicio cada x semanas. El problema es que cuando me doy cuenta de que no me llegan los correos, el servicio lleva parado 2 o 3 días y tengo casi 30 emails en la cola. Es la desventaja de trabajar con dos emails diferentes al mismo tiempo.

Necesitaba una herramienta de monitorización que no sólo me enviara un aviso cuando el servicio fallara sino también que reiniciara el servicio si es posible. Además, necesitaba que esta herramienta fuera gratis o al menos de bajo coste. Mi bolsillo no está todavía para muchas alegrías.

Monit

Descubrí Monit hace ya meses cuando me puse a buscar esa herramienta de monitorización, pero al principio me echó para atrás. La verdad es que al ver la documentación y el archivo de configuración de ejemplo, me di cuenta que parecía como si estuviera programando. En ese momento, buscaba algo con una interfaz gráfica… siendo sincero, me daba mucha pereza ponerme con ello y lo he dejado de lado.

Volviendo unos meses después, y siguiendo este tutorial, acabé instalando y configurando Monit.

Instalar Monit

El archivo de configuración está en la ruta “/etc/monit/monitrc”. Te recomiendo su lectura, este archivo viene con muchos comentarios e información.

Configurar Monit

Os dejo como muestra mi archivo de configuración con comentarios:

A continuación, os pongo el contenido de cada archivo que existe en la carpeta conf.d:

amavis.conf

Aquí indico a monit que revise si el proceso “amavisd” está ejecutándose, si el protocolo smtp no está en el puerto 10024, le indico que intente reiniciar el proceso.

apache2.conf

En este archivo, compruebo que el puerto 80 response al protocolo http y que /monit/token es accesible. Si falla durante 2 ciclos consecutivos, reinicio apache. Si de los últimos 5 ciclos, hay 3 reinicios entonces dejo de monitorizar este proceso.

clamav.conf

Muy parecido a lo que hago con amavis, pero para clamav.

mysql.conf

Para mysql hago algo parecido a lo que hago con apache.

php5-fpm.conf

Apache, MySQL y PHP… prácticamente la misma configuración.

postfix.conf

El de postfix es el más complicado sin duda.

spamassassin.conf

Spamassassin necesario para el buen funcionamiento del correo.

ssh.conf

Importante configurar esto para evitar quedarme sin acceso ssh… que ya me ha pasado.

Una vez configurado vuestro archivo de monit:

Para ver el estado actual de vuestros monitores:

Si cambiáis algo del archivo o los archivos de configuración de Monit, podéis reiniciar los monitores con:

Configurar ISPConfig para utilizar Monit

Si has configurado como en mi archivo de configuración el acceso web, es muy sencillo. Debes ir a la configuración de vuestro servidor System > Server Config. Verás que existen 3 campos: Monit URL, Monit User, Monit password. Configura tu acceso y ya está.

Desde Monitor > Server State > Show Monit podrás ver el acceso web al estado de Monit.

Desde que instalé Monit, mi servidor es mucho más estable ya que no depende de mi acción para reiniciar servicios o comprobar que hay problemas. Ya se encarga Monit de ello y cuando hay un problema que no puede resolver, me avisa para que yo me encargue de ello. Un pequeño truco que aprendí después de configurar por primera vez Monit, si recibes muchos emails de alerta, utiliza “for x cycles” para que te avisa si la condición que compruebas ocurre más de 1 vez. Por ejemplo, puede ser que el servidor supere tus valores límites durante un lapso de tiempo breve, pero se recupere enseguida. Yo no paraba de recibir emails al principio porque había configurado monit para ejecutarse cada 60 segundos y que me avisara siempre. Con esta configuración el ratio de emails ha disminuido mucho, pero la monitorización sigue siendo suficiente.

Enlaces interesantes

* Nota: Algunos de estos enlaces son referidos. Los enlaces referidos son enlaces por los que yo obtengo algún tipo de beneficio si tú pinchas en ellos y acabas registrándote o comprando algo. Estos beneficios pueden ser descuentos sobre productos o meses gratis de servicio premium en aplicaciones. Eres libre de utilizarlos o no, aunque te agradecería que lo hicieras :).

  • Miguel Eduardo Peña Gomez

    interesante .. aunque ya ha pasado tiempo .. si no hay kvm no esta demas un webmin para entrada de emergencia en caso de caidas ssh es lo que uso en mis servers como entrada secundaria … de time4vps lo probaremos tengo varios vps en OVH y pronto unos dedicados ahi no me preocupo funcionan bien .. como user de consola que soy arreglar lo que sea desde ssh es algo de todos los dias .. pero de time4vps con esos precios y los reviews le daremos una chance para testearlo ..