Monitor de Hiawatha: instalación y configuración

Luego de haber configurado dos hosts virtuales en el post anterior, en esta ocasión instalaremos el monitor de Hiawatha. Podemos hacerlo en el mismo servidor en donde residen los hosts virtuales o en uno separado. En esta oportunidad utilizaremos la primer alternativa, y resetearemos la variable Port a su valor por defecto (80).

Monitor de Hiawatha

Para empezar, descarguemos el monitor y descomprimamos el tarball dentro de /var/www/monitor.ejemplo.com.ar:

wget https://www.hiawatha-webserver.org/files/monitor-1.5.tar.gz
tar xzf monitor-1.5.tar.gz --strip 1 -C /var/www/monitor.ejemplo.com.ar

El próximo paso consiste en instalar los siguientes paquetes adicionales. Tengamos en cuenta que el monitor de Hiawatha consiste en una aplicación que utiliza PHP y MySQL o MariaDB:

aptitude install php php-mysql php-xml php-xsl php-cgi php-fpm mariadb-server

Recordemos que es importante ejecutar mysql_secure_installation luego de haber instalado el servidor de bases de datos.

A continuación, crearemos un host virtual adicional llamado monitor.ejemplo.com.ar con la siguiente configuración (en /etc/hiawatha/hiawatha.conf). Esta será la URL a la que tendremos que navegar luego para acceder a la interfaz web del monitor. También indicaremos la dirección IP del monitor mediante la variable MonitorServer:

VirtualHost {
        Hostname = monitor.ejemplo.com.ar
        WebsiteRoot = /var/www/monitor.ejemplo.com.ar/public
        StartFile = index.php
        AccessLogfile = /var/www/monitor.ejemplo.com.ar/access.log
        ErrorLogfile = /var/www/monitor.ejemplo.com.ar/error.log
        UseFastCGI = PHP7
        ExecuteCGI = yes
        TimeForCGI = 15
        UseToolkit = monitor
}

UrlToolkit {
        ToolkitID = monitor
        RequestURI isfile Return
        Match ^/(css|files|fonts|images|js)(/|$) Return
        Match ^/(favicon.ico|robots.txt)$ Return
        Match [^?]*(\?.*)? Rewrite /index.php$1
}

MonitorServer = 192.168.0.35

En el mismo archivo, descomentemos la siguiente sección:

FastCGIserver {
        FastCGIid = PHP7
        ConnectTo = /run/php/php7.0-fpm.sock
        Extension = php
}

y la línea

CGIhandler = /usr/bin/php-cgi:php

e iniciemos el servicio php7.0-fpm:

systemctl start php7.0-fpm
systemctl enable php7.0-fpm

Configuración de PHP

En /etc/php/7.0/fpm/php.ini, localicemos la siguiente línea. Luego de descomentarla, cambiaremos el valor 1 (por defecto) por 0:

cgi.fix_pathinfo=0

De la misma forma, en /etc/php/7.0/fpm/pool.d/www.conf habilitemos la siguiente línea:

listen.mode = 0660

Configuración de MySQL / MariaDB

Antes de seguir, necesitamos tener creada una base de datos y un usuario dedicado para la misma. El monitor utilizará esta información para registrar los datos que recolecte de los hosts virtuales.

En primer lugar, importemos ingresemos a la consola de MySQL / MariaDB:

mysql -u root -p

con la contraseña que hayamos elegido para root cuando ejecutamos mysql_secure_installation. A continuación, crearemos una base de datos llamada HiawathaMonitorDB y un usuario llamado monitor con todos los permisos necesarios en la misma:

CREATE DATABASE HiawathaMonitorDB;
CREATE USER 'monitor'@'localhost' IDENTIFIED BY 'TuPassAca';

En segundo lugar, salgamos de la consola de MySQL / MariaDB para importar la configuración de la base de datos:

mysql HiawathaMonitor DB -u root -p < /var/www/monitor.ejemplo.com.ar/database/mysql.sql

y luego volvamos a ingresar para dar los permisos necesarios a monitor:

mysql -u root -p
GRANT ALL PRIVILEGES ON HiawathaMonitorDB.* TO 'monitor'@'localhost';

Finalmente, editemos el archivo /var/www/monitor.ejemplo.com.ar/settings/website.conf. En la sección Database settings ingresemos los datos de conexión a la base de datos:

DB_HOSTNAME = localhost
DB_DATABASE = HiawathaMonitorDB
DB_USERNAME = monitor
DB_PASSWORD = TuPassAca

Por seguridad, hagamos que el propietario del archivo sea www-data y que solamente el mismo pueda leerlo:

chown www-data:www-data /var/www/monitor.ejemplo.com.ar/settings/website.conf
chmod 600 /var/www/monitor.ejemplo.com.ar/settings/website.conf

Luego de reiniciar los servicios pertinentes

systemctl restart {hiawatha|mariadb}

podemos proseguir.

Configurar el monitor

A partir de este punto, solamente tenemos que apuntar nuestro browser a monitor.ejemplo.com.ar/setup y seguir los pasos indicados. Las credenciales de acceso por defecto son admin / monitor. A continuación, debemos dirigirnos a monitor.ejemplo.com.ar/cms y desde la sección Website administration / Webservers agregar los sitios a monitorear como vemos en la Fig. 1:

Agregar sitios al monitor de Hiawatha
Figura 1 – Agregar sitios al monitor de Hiawatha

Ahora agreguemos las siguientes líneas al cron de root. Los mismos se encargarán del mantenimiento de los logs:

*/5 * * * * /var/www/monitor.ejemplo.com.ar/database/fetch_webserver_logs
 0 0 * * * /var/www/monitor.ejemplo.com.ar/database/delete_old_logs
 59 23 * * * /var/www/monitor.ejemplo.com.ar/database/send_reports

Luego de algunos minutos, deberíamos poder ver las estadísticas de los sitios que configuramos. En la Fig. 2 vemos la cantidad de conexiones a todos los sitios por hora:

El monitor de Hiawatha: ver conexiones a todos los sitios por hora
Figura 2 – El monitor de Hiawatha: ver conexiones a todos los sitios por hora

Consideraciones finales

Por último, destaquemos los siguientes puntos sobre los que el monitor nos alertará luego de la instalación:

  • Cambiar la contraseña de la cuenta de administrador (a través de la interfaz web).
  • Cambiar el valor de la variable secret_website_code setting (a través de la interfaz web).
  • Cambiar el valor de la variable DEBUG_MODE a no (en /var/www/monitor.ejemplo.com.ar/settings/website.conf).

El monitor de Hiawatha es una herramienta sumamente útil, en particular si alojamos varios sitios web en un mismo servidor. En el sitio web del autor y al inspeccionar la interfaz del monitor podemos encontrar más información sobre las opciones disponibles.