Monitorear Recursos del Servidor con Collectd-web y Apache CGI en Linux

Este tutorial discutirá cómo puedes instalar y ejecutar la interfaz Collectd-web, que es una herramienta de monitoreo web de front-end para el demonio Collectd, en conjunto con la interfaz Apache CGI para producir salidas html gráficas con el fin de monitorear cajas Linux.

Monitor Linux Server Resources

Al final del artículo, también presentaremos cómo puedes proteger la interfaz Collectd-web utilizando el mecanismo de Autenticación de Apache .hpasswd.

Requisitos

El requisito de este artículo es que debes tener Collectd y Collectd-Web instalados en tu sistema Linux. Para instalar estos paquetes, debes seguir los Pasos #1 y #2 del artículo anterior de esta serie en:

  1. Instalar Collectd y Collectd-Web en Linux

Solo sigue los siguientes dos pasos del enlace anterior:

Step 1: Install Collectd Service 
Step 2: Install Collectd-Web and Dependencies 

Una vez que hayas completado con éxito estas dos cosas requeridas, puedes continuar con las instrucciones adicionales en este artículo para configurar Collectd-web con Apache CGI.

Paso 1: Instalando el Servidor Web Apache

1. Suponiendo que ya has instalado el servidor web Apache en tu sistema, si no lo has hecho, puedes instalarlo usando el siguiente comando según la distribución de Linux que tengas.

# apt-get install apache2	[On Debian based Systems]
# yum install httpd		[On RedHat based Systems]

2. Después de instalar Apache, cambie el directorio a la raíz del documento del servidor web predeterminado (que se encuentra en la ruta del sistema /var/www/html/ o /var/www y clone el proyecto Collectd-web Github emitiendo los comandos a continuación:

# cd /var/www/html
# git clone https://github.com/httpdss/collectd-web.git

También, haga que el script Collectd-web sea ejecutable emitiendo el siguiente comando:

# chmod +x /var/www/html/collectd-web/cgi-bin/graphdefs.cgi

Paso 2: Habilitar Apache CGI (scripts .cgi) para el Host Predeterminado

3. Para que Apache ejecute los scripts CGI ubicados en el directorio cgi-bin de Collectd-web HTML del host predeterminado, es necesario habilitar explícitamente la interfaz CGI de Apache para scripts Bash (con extensión .cgi) modificando el host predeterminado de sites-available y agregando el bloque de declaraciones a continuación.

En Sistemas Debian

Primero abra el archivo de configuración del host predeterminado de Apache para editar con el editor nano:

# nano /etc/apache2/sites-available/000-default.conf

Mientras el archivo está abierto para edición, agregue el siguiente bloque de directivas debajo de la directiva Document Root como se ilustra en la imagen a continuación:

<Directory /var/www/html/collectd-web/cgi-bin>
                Options Indexes ExecCGI
                AllowOverride All
                AddHandler cgi-script .cgi
                Require all granted
</Directory>
Enable CGI in Debian

Después de editar el archivo, ciérrelo con CTRL + o y salga del editor nano (CTRL+x), luego habilite el módulo CGI de Apache y reinicie el servidor para aplicar todos los cambios realizados hasta ahora emitiendo los comandos a continuación:

# a2enmod cgi cgid
# service apache2 restart
OR
# systemctl restart apache2.service     [For systemd init scripts]
Enable Apache CGI

En Sistemas RedHat

4. Para habilitar la interfaz CGI de Apache para CentOS/RHEL, abra el archivo de configuración de Apache httpd.conf y agregue las siguientes líneas al final del archivo:

# nano /etc/httpd/conf/httpd.conf

Agregue el siguiente fragmento al archivo httpd.conf.

ScriptAlias /cgi-bin/ “/var/www/html/collectd-web/cgi-bin"
Options FollowSymLinks ExecCGI
AddHandler cgi-script .cgi .pl

Para aplicar los cambios, reinicie el demonio httpd emitiendo el siguiente comando:

# service httpd restart
OR
# systemctl restart httpd        [For systemd init scripts]

Paso 3: Navegar por la Interfaz de Collectd-web

5. Para visitar la interfaz de Collectd-web y visualizar estadísticas sobre su máquina recopiladas hasta ahora, abra un navegador y navegue hasta la ubicación URI de su máquina Dirección IP/collectd-web/ utilizando el protocolo HTTP.

http://192.168.1.211/collect-web/
Collectd-Web Dashboard

Paso 4: Proteger con Contraseña la URL de Collectd-web utilizando Autenticación de Apache

6. En caso de que desee limitar el acceso a la interfaz de Collectd-web protegiéndola mediante el mecanismo de Autenticación de Apache (.htpasswd), lo que requiere que los visitantes ingresen un nombre de usuario y una contraseña para acceder a un recurso web.

Para hacerlo, necesita instalar el paquete apache2-utils y crear un conjunto de credenciales para la autenticación local. Para lograr este objetivo, primero emita el siguiente comando para instalar el paquete apache2-utils:

# apt-get install apache2-utils	        [On Debian based Systems]
# yum install httpd-tools		[On RedHat based Systems]

7. A continuación, genere un nombre de usuario y una contraseña que se almacenarán en un archivo local oculto .htpass ubicado en la ruta predeterminada del host Apache Collectd-web emitiendo el siguiente comando:

# htpasswd -c /var/www/html/collectd-web/.htpass  your_username

Intente proteger este archivo asignando los siguientes permisos:

# chmod 700 /var/www/html/collectd-web/.htpass
# chown www-data /var/www/html/collectd-web/.htpass

8. En el siguiente paso, después de haber generado el archivo .htpass, abre el host predeterminado de Apache para editarlo e instruir al servidor para usar autenticación básica del lado del servidor con htpasswd añadiendo el siguiente bloque de directivas como se ilustra en la captura de pantalla a continuación:

<Directory /var/www/html/collectd-web >
                AuthType Basic
                AuthName "Collectd Restricted Page"
                AuthBasicProvider file
                AuthUserFile /var/www/html/collectd-web/.htpass 
                Require valid-user
</Directory>
Apache Password Protect Directory

9. El último paso para reflejar los cambios es reiniciar el servidor Apache emitiendo el siguiente comando y visitar la página URL de Coollectd-web como se describe arriba.

A pop-up should appear on the web page requesting for your authentication credentials. Use the username and password created earlier to access Collectd web interface.

# service apache2 restart		[On Debian based Systems]
# service httpd restart			[On RedHat based Systems]

OR
---------------- For systemd init scripts ----------------
# systemctl restart apache2.service		
# systemctl restart http.service  
Apache Password Authentication
Collectd-Web Panel

Source:
https://www.tecmint.com/monitor-linux-server-resources-with-collectd-web-and-apache-cgi/