Мониторинг Apache через Zabbix

Мониторинг Apache через Zabbix

Используется Zabbix Server 7+, мониторинг хоста с помощью Zabbix Agent 7+. Сервер Ubuntu 24.04.1, шаблон Apache by Zabbix agent. предполагается, что Apache установлен на вашем сервере.

Настройка, проверка Apache

Для корректной работы шаблона необходимо, чтобы в Apache был активирован mod_status. Проверяем, подключен ли модуль:

apachectl -M | grep status_module
status_module (shared)

«apachectl -M» покажет список всех подключенных модулей

Если модуль не подключен, включаем его и перезапускаем Apache:

sudo a2enmod status
sudo systemctl restart apache2
sudo systemctl status apache2

Для настройки шаблона Zabbix и проверки доступности статистики необходимо понять, какой порт слушает Apache. Обычно это порт 80, но если у вас Apache работает, например, за Nginx, то его порт точно другой. Определяем:

sudo netstat -ltupan | grep -P 'LISTEN' | grep -P 'apache2'

tcp        0      0 0.0.0.0:8181            0.0.0.0:*               LISTEN      98827/apache2

Текущий вывод показывает, что Apache случает порт 8181 на всех адресах сервера.

Дефолтовая настройка модуля должна Вам дать возможность запросить статистику сервера с локального хоста и не дать запросить с удаленного. Проверить это можно в конфигурационном файле /etc/apache2/mods-enabled/status.conf:

sudo cat /etc/apache2/mods-enabled/status.conf
...
<Location /server-status>
        SetHandler server-status
        Require local
        #Require ip 192.0.2.0/24
</Location>
...

Нас интересует блок доступа Location /server-status, директива внутри Require local разрешает доступ по URL /server-status только клиентам локального хоста. Проверяем:

curl http://127.0.0.1:8181/server-status?auto
127.0.0.1
ServerVersion: Apache/2.4.58 (Ubuntu) mod_fcgid/2.3.9
ServerMPM: event
Server Built: 2024-10-02T12:40:51
CurrentTime: Thursday, 28-Nov-2024 21:17:30 +07
RestartTime: Wednesday, 27-Nov-2024 18:20:54 +07
ParentServerConfigGeneration: 3
ParentServerMPMGeneration: 2
ServerUptimeSeconds: 96995
ServerUptime: 1 day 2 hours 56 minutes 35 seconds
Load1: 0.28
Load5: 0.39
Load15: 0.39
Total Accesses: 17681
Total kBytes: 67341
Total Duration: 3949866
CPUUser: 17.19
CPUSystem: 17.42
CPUChildrenUser: 3.55
CPUChildrenSystem: 2.21
CPULoad: .0416207
Uptime: 96995
ReqPerSec: .182288
BytesPerSec: 710.935
BytesPerReq: 3900.07
DurationPerReq: 223.396
BusyWorkers: 2
GracefulWorkers: 0
IdleWorkers: 48
Processes: 2
Stopping: 0
ConnsTotal: 0
ConnsAsyncWriting: 0
ConnsAsyncKeepAlive: 0
ConnsAsyncClosing: 0
Scoreboard: ____W____________________________________W________....................................................................................................

Отлично. Тест успешен.

Настройка шаблона Zabbix

В Web-интерфейсе заходим в меню "Сбор данных" -> "Узлы сети", выбираем интересующий нас узел. В открывшемся диалогом окне на вкладке "Узел сети" в разделе "Шаблоны" с помощью кнопки "Выбрать" выбираем группу шаблонов "Templates/Applications" и далее выбираем шаблон "Apache by Zabbix agent", ну или в строке поиска просто вводим "Apache by Zabbix agent".

После добавления шаблона переходим на вкладку "Макросы", в нем в раздел "Макросы узла сети" добавляем перекрытие значений 2-х макросов:

  • {$APACHE.PROCESS_NAME} - для указания имени процесса;
  • {$APACHE.STATUS.PORT} - для указания порта процесса.

Нажимаем "Обновить". Всё, основная настройка завершена. Ждем опроса агентом сервера Apache и через некоторое время получаем данные, которые можно выводить на панели мониторинга.

Пример панели мониторинга Apache средствами Zabbix

Я набросал доступных графиков, хотя смотреть на них я буду только в перспективе, основная функция мониторинга - уведомление о проблемах, что у меня настроено посредством Telegram.