Мониторинг Apache через Zabbix
Используется Zabbix Server 7+, мониторинг хоста с помощью Zabbix Agent 7+. Сервер Ubuntu 24.04.1, шаблон Apache by Zabbix agent. предполагается, что Apache установлен на вашем сервере.
Настройка, проверка Apache
Для корректной работы шаблона необходимо, чтобы в Apache был активирован mod_status
. Проверяем, подключен ли модуль:
Если модуль не подключен, включаем его и перезапускаем 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 и через некоторое время получаем данные, которые можно выводить на панели мониторинга.
Я набросал доступных графиков, хотя смотреть на них я буду только в перспективе, основная функция мониторинга - уведомление о проблемах, что у меня настроено посредством Telegram.