Мониторинг ресурсов сервера с помощью Collectd-web и Apache CGI в Linux

Этот учебник будет обсуждать, как установить и запустить интерфейс Collectd-web, который является инструментом мониторинга веб-интерфейса для демона Collectd, совместно с интерфейсом Apache CGI для создания графических HTML-выводов для мониторинга Linux-боксов.

Monitor Linux Server Resources

В конце статьи мы также расскажем, как можно защитить интерфейс Collectd-web, используя механизм аутентификации .hpasswd Apache.

Требования

Требование этой статьи – наличие установленных Collectd и Collectd-Web на вашей системе Linux. Чтобы установить эти пакеты, вам необходимо выполнить шаги #1 и #2 из предыдущей статьи этой серии по ссылке:

  1. Установка Collectd и Collectd-Web в Linux

Выполните только следующие два шага по ссылке выше:

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

Как только эти два необходимых действия будут успешно выполнены, вы можете продолжить дальнейшие инструкции в этой статье по настройке Collectd-web с Apache CGI.

Шаг 1: Установка веб-сервера Apache

1. Предполагая, что у вас уже установлен веб-сервер Apache на вашей системе, если нет, вы можете установить его с помощью следующей команды в соответствии с вашим дистрибутивом Linux.

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

2. После установки Apache измените каталог на ваш корневой каталог веб-сервера по умолчанию (который находится в системном пути /var/www/html/ или /var/www) и клонируйте проект Collectd-web Github выполнив нижеприведенные команды:

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

Также сделайте следующий скрипт Collectd-web исполняемым, выполнив следующую команду:

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

Шаг 2: Включите Apache CGI (скрипты .cgi) для стандартного хоста

3. Для того чтобы Apache мог запускать скрипты CGI, расположенные в каталоге cgi-bin стандартного хоста HTML Collectd-web, вам необходимо явно включить интерфейс Apache CGI для скриптов Bash (с расширением .cgi), изменив конфигурационный файл стандартного хоста sites-available и добавив ниже приведенный блок инструкций.

На системах Debian

Сначала откройте файл конфигурации стандартного хоста Apache для редактирования с помощью редактора nano:

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

Пока файл открыт для редактирования, добавьте следующий блок директив ниже директивы Document Root, как показано на изображении ниже:

<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

После завершения редактирования файла закройте его с помощью CTRL + o и выйдите из редактора nano (CTRL+x), затем включите модуль Apache CGI и перезапустите сервер, чтобы применить все внесенные изменения, выполнив следующие команды:

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

На системах RedHat

4. Чтобы включить интерфейс Apache CGI для CentOS/RHEL, откройте файл конфигурации Apache httpd.conf и добавьте следующие строки в конец файла:

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

Добавьте следующий отрывок в файл httpd.conf.

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

Для применения изменений перезапустите демон httpd, выполнив следующую команду:

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

Шаг 3: Просмотр интерфейса Collectd-web

5. Чтобы посетить интерфейс Collectd-web и визуализировать статистику о вашем компьютере, откройте браузер и перейдите по адресу вашего компьютера IP-адрес/collectd-web/ с использованием протокола HTTP.

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

Шаг 4: Защита паролем URL Collectd-web с использованием аутентификации Apache

6. Если вы хотите ограничить доступ к интерфейсу Collectd-web, защитив его с помощью механизма аутентификации Apache (.htpasswd), который требует от посетителей ввода имени пользователя и пароля для доступа к веб-ресурсу.

Для этого вам необходимо установить пакет apache2-utils и создать набор учетных данных для локальной аутентификации. Для достижения этой цели сначала выполните следующую команду для установки пакета apache2-utils:

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

7. Затем сгенерируйте имя пользователя и пароль, которые будут сохранены в скрытом локальном файле .htpass, расположенном в пути по умолчанию хоста Apache Collectd-web, выполнив следующую команду:

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

Попробуйте защитить этот файл, назначив следующие разрешения:

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

8. На следующем этапе, после создания файла .htpass, откройте файл Apache по умолчанию для редактирования и настройте сервер на использование базовой аутентификации на стороне сервера с помощью htpasswd, добавив следующий блок директив, как показано на нижеприведенном скриншоте:

<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. Последний шаг для отражения изменений – перезапустить сервер Apache, выполнив нижеприведенную команду, и посетить страницу URL Coollectd-web, как описано выше.

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/