En una entrada anterior os hablamos sobre Monit y cómo instalarlo en nuestro servidor Centos y/o Ubuntu para poder controlar los servicios que tenemos instalados. En esta ocasión os traemos una aplicación web que permite graficar los datos que recoge Monit. Este tutorial funciona tanto para Centos y Ubuntu, aunque es posible que algunas rutas y algunos comandos puedan varias un poco.
Requisitos y dependencias
Para que Monit Graph funcione correctamente, es necesario que en nuestro servidor tengamos instalado un servidor de Apache o Nginx con PHP. Si necesitas saber como se instala un servidor Apache puedes ir a “Cómo instalar en Linux: Apache MariaDB y PHP (LAMP)” o si bien prefieres Nginx puedes ir a “Cómo instalar en Linux: NGINX MariaDB y PHP (LEMP)“.
También es importante tener los siguientes paquetes de PHP instalados:
Ubuntu:
# apt-get install libapache2-mod-php7.0 php7.0-cli php7.0-mysql php7.0-xml php7.0-curl
Centos:
# yum install php-cli php-mysql php-xml php-curl
Adicionalmente, podéis crear un VirtualHost o Server (según si usáis Apache o Nginx) para poder acceder vía subdominio y así lo preferís. Recuerda que es importante proteger el directorio donde vais a instalar Monit Graph ya que no dispone de un panel de login. Nosotros, al ser un tutorial vamos a trabajar con la ruta por defecto del Apache que es /var/www/html y vamos a añadir la web allí. Si tenéis alguna duda al respecto siempre podéis poneros en contacto con Soporte de Clouding para que os ayudemos.
Descargar Monit-Graph
Para descargar Monit-Graph podemos utilizar dos métodos: O bien accedemos vía SSH y usamos wget o bien podemos copiarlo desde FTP. Nosotros utilizaremos el primer método ya que es el más cómodo para nosotros.
Una vez accedamos vía SSH, tendremos que ir a la ruta que hemos configurado en nuestro DocumentRoot o Root, en nuestro caso:
# cd /var/www/html
Nos descargamos Monit-Graph con wget:
# wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/monit-graph/monit-graph.tar.gz
Descomprimimos:
# tar zxf monit*.tar.gz
Eliminamos el tar.gz:
# rm monit*.tar.gz
Configuramos permisos de directorios y ficheros:
chown www-data.www-data -R * chmod 755 -R * chmod 777 data/logs chmod 644 data/index.php chmod 644 data/logs/index.php
Modificamos el fichero de configuración:
# nano config.php
Y lo configuramos así:
$monit_url = "46.183.XXX.XXX:2812"; // La IP:Puerto o dominio:puerto de nuestro Monit
$monit_http_username = "admin"; // Usuario con el que accedemos a Monit
$monit_http_password = "monit"; // Contraseña con el que accedemos a Monit
$monit_url_ssl = false; // Cambiamos true por false
Añadimos lo siguiente en cron para que cada minuto recoja datos de nuestro Monit:
# crontab -e
* * * * * php /var/www/html/cron.php >> /var/log/monit-graph.log
Tened en cuenta de modificar la ruta al fichero cron.php.
Una vez hacemos estos cambios, reiniciamos el servidor Apache/Nginx y accedemos a nuestro Monit Graph:
Monit-Graph no muestra gráficos
En el caso de que no funcione correctamente y no muestre los gráficos, una manera sencilla para depurar errores de nuestra configuración es ejecutar el fichero cron.php desde nuestro terminal, de la siguiente manera:
# php cron.php
Al momento de ejecutarse nos mostrará errores y podremos solventarlos fácilmente. Por ejemplo el siguiente error:
[MonitGraph] /var/www/html/monit-graph.class.php line 122: cURL Error (27): SSL:
couldn't create a context: error:140A90C4:SSL routines:SSL_CTX_new:null ssl method
passed
Significa que en nuestro fichero de configuración tenemos el valor $monit_url_ssl con true en vez de con false.
Otro ejemplo:
PHP Warning: file_get_contents(/var/www/html/data/server.xml): failed to open
stream: No such file or directory in /var/www/html/monit-graph.class.php on line
148
Significa que no encuentra el fichero /var/www.html/data.server.xml, eso significa que probablemente Monit Graph no se ha podido conectar con Monit y aún no ha creado automáticamente ese fichero. En este caso, toca revisar de nuevo nuestro fichero de configuración y ver si el valor $monit_url es correcto (no os olvidéis de poner los puertos del Monit)
Fuentes: DreamCenception, Code Google