Supervise los recursos del servidor con Collectd-web y Apache CGI en Linux


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

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

El requisito de este artículo es que debe tener Collectd y Collectd-Web instalados en su sistema Linux. Para instalar estos paquetes, debe seguir los pasos n. ° 1 y n. ° 2 del artículo anterior de esta serie en:

  1. Instale Collectd y Collectd-Web en Linux

Solo siga los siguientes dos pasos del enlace anterior:

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

Una vez que estas dos cosas requeridas se completaron con éxito, puede continuar con más instrucciones en este artículo para configurar Collectd-web con Apache CGI.

Paso 1: Instalar el servidor web Apache

1. Suponiendo que ya ha instalado el servidor web Apache en su sistema, si no, puede instalarlo usando el siguiente comando de acuerdo con su distribución de Linux.

# 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 siguientes comandos:

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

Además, haga que el siguiente script Collectd-web sea ejecutable emitiendo el siguiente comando:

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

Paso 2: Habilite Apache CGI (scripts .cgi) para el host predeterminado

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

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

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

Mientras el archivo está abierto para editarlo, agregue el siguiente bloque de directiva debajo de la directiva Document Root, como se ilustra en la siguiente imagen:

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

Una vez que haya terminado de editar el archivo, ciérrelo con CTRL + o y salga del editor nano (CTRL + x), luego habilite el módulo Apache CGI y reinicie el servidor para aplicar todos los cambios realizados hasta ahora mediante la emisión de los siguientes comandos:

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

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 en la parte inferior del archivo:

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

Agregue el siguiente extracto 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: Examinar la interfaz web de Collectd

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

http://192.168.1.211/collect-web/

Paso 4: Proteja con contraseña la URL recopilada de la web mediante la autenticación Apache

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

Para hacerlo, debe instalar el paquete apache2-utils y crear un conjunto de credenciales para la autenticación local. Para lograr este objetivo, primero ejecute 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 .htpass local oculto ubicado en la ruta de acceso web Collectd del host predeterminado de Apache 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, abra el host predeterminado de Apache para editarlo e indique al servidor que use la autenticación básica del lado del servidor htpasswd agregando el siguiente bloque de directiva como se ilustra en la captura de pantalla siguiente:

<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>

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

Debería aparecer una ventana emergente en la página web solicitando sus credenciales de autenticación. Utilice el nombre de usuario y la contraseña creados anteriormente para acceder a la interfaz web de Collectd.

# 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