В этой статье вы узнаете, как отслеживать нагрузку на веб-сервер Apache и запросы с помощью модуля mod_status, совместимого со всеми современными дистрибутивами Linux, такими как RHEL, Fedora и Ubuntu.
Что такое mod_status?
mod_status — это модуль Apache, который в режиме реального времени предоставляет информацию о нагрузке веб-сервера и текущих подключениях. Доступ к ней осуществляется через HTML-интерфейс, который можно просматривать в браузере.
Этот интерфейс отображает статистику сервера, в том числе:
- Общее количество полученных запросов
- Общее количество обработанных байт
- Загрузка процессора
- Загрузка сервера и время безотказной работы
- Статистика трафика
- Активные работники против бездействующих
- Идентификаторы процессов подключенных клиентов и многое другое.
В качестве живого примера ознакомьтесь с официальной страницей состояния Apache на странице состояния проекта Apache.
Среда тестирования
В приведенных здесь шагах используется следующая конфигурация:
- Операционная система: Ubuntu 22.04 / RHEL 9
- Приложение: HTTP-сервер Apache
- Корень документа: /var/www/html
- Файл конфигурации Apache:
/etc/apache2/apache2.conf
(Debian/Ubuntu) или/etc/httpd/conf/httpd.conf
(CentOS/RHEL) - Порт HTTP по умолчанию: 80 TCP
Убедитесь, что Apache установлен и работает в вашей системе. При необходимости обратитесь к нашему руководству по настройке сервера Apache.
Включение mod_status в Apache
В большинстве современных дистрибутивов mod_status включен по умолчанию, и вы можете убедиться в этом, выполнив следующую команду.
ls /etc/httpd/modules | grep mod_status # на базе RHEL apachectl -M | grep status # на базе Debian
Далее откройте файл конфигурации Apache.
sudo vi /etc/httpd/conf/httpd.conf # на базе RHEL sudo nano /etc/apache2/apache2.conf # на базе Debian
Чтобы получить доступ к состоянию сервера, добавьте или измените следующий раздел в файле конфигурации Apache:
<Location /server-status> SetHandler server-status Require local Require ip YOUR_IP_ADDRESS </Location>
Чтобы разрешить удалённый доступ, замените YOUR_IP_ADDRESS на свой реальный IP-адрес.
Если вы используете виртуальные хосты, повторите эту настройку в каждом соответствующем разделе <VirtualHost>
<VirtualHost *:80> DocumentRoot /var/www/html ServerName example.com <Location /server-status> SetHandler server-status Require ip YOUR_IP_ADDRESS </Location> </VirtualHost>
Чтобы получить более подробные показатели, такие как загрузка ЦП и количество запросов в секунду, вы можете включить ExtendedStatus
, добавив эту строку в файл конфигурации.
ExtendedStatus On
После внесения изменений перезапустите службу Apache, чтобы применить их:
sudo apachectl configtest sudo systemctl restart httpd # на базе RHEL sudo systemctl restart apache2 # на базе Debian
Теперь вы можете получить доступ к странице состояния вашего сервера, перейдя на:
http://YOUR_SERVER_IP/server-status
Чтобы он автоматически обновлялся каждые несколько секунд, добавьте ?refresh=5
(или любое количество секунд) в URL-адрес:
http://YOUR_SERVER_IP/server-status?refresh=5
Проверьте состояние сервера Apache из командной строки
Чтобы проверить состояние сервера Apache из командной строки, вы можете использовать lynx
— текстовый веб-браузер.
sudo yum install Lynx # на базе RHEL sudo apt install Lynx # на базе Debian
После установки попробуйте запустить команду apachectl
для проверки состояния сервера Apache:
sudo apachectl status
Это позволит получить краткий обзор состояния сервера, включая количество обработанных запросов, время безотказной работы сервера и другие важные показатели.
Для более детального просмотра вы можете использовать опцию fullstatus
:
sudo apachectl fullstatus
Заключение
Модуль mod_status в Apache — это мощный и простой в использовании инструмент мониторинга для отслеживания нагрузки и производительности вашего сервера в режиме реального времени. Это помогает заблаговременно устранять неполадки и оптимизировать работу сервера.