Monitorando Recursos do Servidor com Collectd-web e Apache CGI no Linux

Este tutorial discutirá como você pode instalar e executar a interface Collectd-web, que é uma ferramenta de monitoramento web de front-end para o daemon Collectd, em conjunto com a interface Apache CGI para produzir saídas html gráficas a fim de monitorar caixas Linux.

Monitor Linux Server Resources

No final do artigo, também apresentaremos como você pode proteger a interface Collectd-web usando o mecanismo de Autenticação do Apache .hpasswd.

Requisitos

O requisito deste artigo é que você deve ter o Collectd e o Collectd-Web instalados em seu sistema Linux. Para instalar esses pacotes, você deve seguir os Passos #1 e #2 do artigo anterior desta série em:

  1. Instalar Collectd e Collectd-Web no Linux

Siga apenas os dois passos a seguir no link acima:

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

Uma vez que essas duas coisas necessárias forem concluídas com sucesso, você pode continuar com as instruções adicionais neste artigo para configurar o Collectd-web com o Apache CGI.

Passo 1: Instalando o Servidor Web Apache

1. Supondo que você já tenha instalado o servidor web Apache em seu sistema, se não tiver, você pode instalar usando o seguinte comando de acordo com a distribuição Linux que você está utilizando.

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

2. Depois de instalar o Apache, altere o diretório para a raiz do documento do servidor web padrão (que está localizado em /var/www/html/ ou /var/www e clone o projeto Collectd-web Github emitindo os comandos abaixo:

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

Também, torne o script Collectd-web executável emitindo o seguinte comando:

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

Passo 2: Habilitar o CGI do Apache (scripts .cgi) para o Host Padrão

3. Para que o Apache execute os scripts CGI localizados no diretório cgi-bin HTML do host padrão Collectd-web, você precisa habilitar explicitamente a interface CGI do Apache para scripts Bash (com extensão .cgi) alterando o arquivo de configuração do host padrão sites-available e adicionando o bloco de declarações abaixo.

Em Sistemas Debian

Primeiro, abra o arquivo de configuração do host padrão do Apache para edição com o editor nano:

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

Enquanto o arquivo estiver aberto para edição, adicione o seguinte bloco de diretivas abaixo da diretiva Document Root conforme ilustrado na imagem abaixo:

<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

Depois de terminar a edição do arquivo, feche-o com CTRL + o e saia do editor nano (CTRL+x), em seguida, habilite o módulo CGI do Apache e reinicie o servidor para aplicar todas as alterações feitas até agora emitindo os comandos abaixo:

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

Em Sistemas RedHat

4. Para habilitar a interface CGI do Apache para CentOS/RHEL, abra o arquivo de configuração do Apache httpd.conf e adicione as seguintes linhas ao final do arquivo:

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

Adicione o seguinte trecho ao arquivo httpd.conf.

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

Para aplicar as alterações, reinicie o daemon httpd emitindo o seguinte comando:

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

Passo 3: Navegue na Interface do Collectd-web

5. Para visitar a interface do Collectd-web e visualizar estatísticas sobre sua máquina coletadas até agora, abra um navegador e acesse o local URI do seu IP da máquina /collectd-web/ utilizando o protocolo HTTP.

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

Passo 4: Proteja a URL do Collectd-web com Autenticação Apache

6. Caso deseje limitar o acesso à interface do Collectd-web protegendo-a com o mecanismo de Autenticação Apache (.htpasswd), que requer que os visitantes insiram um nome de usuário e uma senha para acessar um recurso da web.

Para fazer isso, você precisa instalar o pacote apache2-utils e criar um conjunto de credenciais para autenticação local. Para alcançar esse objetivo, primeiro emita o seguinte comando para instalar o pacote apache2-utils:

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

7. Em seguida, gere um nome de usuário e uma senha que serão armazenados em um arquivo local oculto .htpass localizado no caminho padrão do host Apache Collectd-web emitindo o comando abaixo:

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

Tente proteger esse arquivo atribuindo as seguintes permissões:

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

8. No próximo passo, depois de ter gerado o arquivo .htpass, abra o host padrão do Apache para edição e instrua o servidor a usar a autenticação básica do servidor htpasswd adicionando o seguinte bloco de diretivas conforme ilustrado na captura de tela abaixo:

<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. O último passo para refletir as mudanças é reiniciar o servidor Apache emitindo o comando abaixo e visitar a página de URL Coollectd-web conforme descrito acima.

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/