Как отслеживать нагрузку на веб-сервере Apache и статистику страниц

В этой статье вы узнаете, как отслеживать нагрузку и запросы веб-сервера Apache с использованием модуля mod_status в ваших дистрибутивах Linux, таких как CentOS, RHEL и Fedora.

Что такое mod_status?

mod_status – это модуль Apache, который помогает отслеживать нагрузку на веб-сервер и текущие соединения httpd с помощью интерфейса HTML, к которому можно получить доступ через веб-браузер.

Модуль mod_status Apache показывает простую HTML-страницу, содержащую информацию о текущей статистике веб-сервера, включая:

  • Общее количество входящих запросов
  • Общее количество байтов и подсчеты сервера
  • Использование процессора веб-сервером
  • Нагрузка сервера
  • Время работы сервера
  • Общий трафик
  • Общее количество неактивных рабочих
  • PIDs с соответствующими клиентами и многое другое.

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

Тестовая среда

Мы использовали следующую тестовую среду для этой статьи, чтобы узнать больше о mod_status с некоторыми практическими примерами и скриншотами.

  1. Операционная система – CentOS 8/7
  2. Приложение – Веб-сервер Apache
  3. IP-адрес – 5.175.142.66
  4. Корневая директория – /var/www/html
  5. Файл конфигурации Apache – /etc/httpd/conf/httpd.conf
  6. Порт HTTP по умолчанию – 80 TCP
  7. Проверка настроек конфигурации – httpd -t

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

  1. Создайте свой собственный веб-сервер и разместите веб-сайт в Linux

Как включить модуль mod_status в Apache

По умолчанию установка Apache поставляется с включенным модулем mod_status. Если нет, убедитесь, что он включен в файле конфигурации Apache.

[root@tecmint ~]# vi /etc/httpd/conf/httpd.conf

Ищите слово “mod_status” или прокручивайте вниз, пока не найдете строку, содержащую.

#LoadModule status_module modules/mod_status.so

Если вы видите символ ‘#‘ в начале “LoadModule”, это означает, что mod_status отключен. Удалите ‘#‘, чтобы включить mod_status.

LoadModule status_module modules/mod_status.so

Настройка mod_status

Теперь снова ищите слово “Location” или прокручивайте вниз, пока не найдете раздел для mod_status, который должен выглядеть следующим образом.

# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
#<Location /server-status>
#    SetHandler server-status
#    Order deny,allow
#    Deny from all
#    Allow from .example.com
#</Location>

В вышеприведенном разделе раскомментируйте строки для директивы Location, SetHandler и ограничения каталога в соответствии с вашими потребностями. Например, я оставляю это простым с Order Allow, deny и это разрешено для всех.

<Location /server-status>
   SetHandler server-status
   Order allow,deny
   Deny from all
   Allow from all 
</Location>

Примечание: Вышеприведенная конфигурация является конфигурацией по умолчанию для веб-сайта Apache (один веб-сайт). Если вы создали один или несколько виртуальных хостов Apache, вышеприведенная конфигурация не будет работать.

Таким образом, вам просто необходимо определить ту же конфигурацию для каждого виртуального хоста для любых доменов, которые вы сконфигурировали в Apache. Например, конфигурация виртуального хоста для mod_status будет выглядеть так.

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/example.com
    ServerName example.com
    ErrorLog logs/example.com-error_log
    CustomLog logs/example.com-access_log common
<Location /server-status>
   SetHandler server-status
   Order allow,deny
   Deny from all
   Allow from example.com 
</Location>
</VirtualHost>

Enable ExtendedStatus

Настройки “ExtendedStatus” добавляют больше информации на страницу статистики, такую как использование ЦП, запросов в секунду, общий трафик и т. д. Чтобы включить это, отредактируйте тот же файл httpd.conf и найдите слово “Extended”, раскомментируйте строку и установите статус “On” для директивы ExtendedStatus.

# ExtendedStatus controls whether Apache will generate "full" status
# information (ExtendedStatus On) or just basic information (ExtendedStatus
# Off) when the "server-status" handler is called. The default is Off.
#
ExtendedStatus On

Перезапустите Apache

Теперь убедитесь, что вы правильно включили и настроили страницу статуса сервера Apache. Вы также можете проверить ошибки в конфигурации httpd.conf с помощью следующей команды.

[root@tecmint ~]# httpd -t

Syntax OK

Однажды, получив синтаксис OK, вы сможете перезапустить службу httpd.

[root@tecmint ~]# service httpd restart
OR
[root@tecmint ~]# systemctl restart httpd
Stopping httpd:                                          [  OK  ]
Starting httpd:                                          [  OK  ]

Доступ к странице mod_status

Страница статуса Apache будет доступна по вашему доменному имени с помощью “/server-status” по следующим URL-адресам.

http://serveripaddress/server-status

OR

http://serev-hostname/server-status

Вы увидите что-то похожее на следующую страницу с включенным ExtendedStatus.

Apache mod_status View

На приведенном выше снимке вы можете увидеть интерфейс HTML, который показывает всю информацию о времени работы сервера, идентификаторе процесса с его соответствующим клиентом, страницей, к которой они пытаются получить доступ.

Также показывается значение и использование всех сокращений, используемых для отображения статуса, что помогает нам лучше понять ситуацию.

Вы также можете обновлять страницу каждые несколько секунд (скажем, 5 секунд), чтобы увидеть обновленную статистику. Чтобы установить автоматическое обновление, добавьте “?refresh=N” в конце URL. Где N можно заменить на количество секунд, через которое вы хотите обновить страницу.

http://serveripaddress/server-status/?refresh=5
Apache mod_status Refresh

Просмотр страницы статуса из командной строки

Вы также можете просматривать страницу статуса Apache из интерфейса командной строки, используя специальные браузеры командной строки под названием links или lynx. Вы можете установить их, используя утилиту управления пакетами по умолчанию под названием yum, как показано ниже.

# yum install links

OR

# yum install lynx

После установки вы можете получить те же статистические данные в вашем терминале, используя следующую команду.

[root@tecmint ~]# links http://serveripaddress/server-status
OR
[root@tecmint ~]# lynx http://serveripaddress/server-status
OR
[root@tecmint ~]#  /etc/init.d/httpd fullstatus
                     Apache Server Status for localhost
   Server Version: Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3
   Server Built: Aug 13 2013 17:29:28

   --------------------------------------------------------------------------
   Current Time: Tuesday, 14-Jan-2014 04:34:13 EST
   Restart Time: Tuesday, 14-Jan-2014 00:33:05 EST
   Parent Server Generation: 0
   Server uptime: 4 hours 1 minute 7 seconds
   Total accesses: 2748 - Total Traffic: 9.6 MB
   CPU Usage: u.9 s1.06 cu0 cs0 - .0135% CPU load
   .19 requests/sec - 695 B/second - 3658 B/request
   1 requests currently being processed, 4 idle workers
 .__.__W...

   Scoreboard Key:
   "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
   "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
   "C" Closing connection, "L" Logging, "G" Gracefully finishing,
   "I" Idle cleanup of a worker, "." Open slot with no current process

Srv PID     Acc    M CPU   SS  Req Conn Child Slot     Client        VHost             Request
0-0 -    0/0/428   . 0.30 5572 0   0.0  0.00  1.34 127.0.0.1      5.175.142.66 OPTIONS * HTTP/1.0
                                                                               GET
1-0 5606 0/639/639 _ 0.46 4    0   0.0  2.18  2.18 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
                                                                               GET
2-0 5607 0/603/603 _ 0.43 0    0   0.0  2.09  2.09 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
3-0 -    0/0/337   . 0.23 5573 0   0.0  0.00  1.09 127.0.0.1      5.175.142.66 OPTIONS * HTTP/1.0
                                                                               GET
4-0 5701 0/317/317 _ 0.23 9    0   0.0  1.21  1.21 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
                                                                               GET
5-0 5708 0/212/213 _ 0.15 6    0   0.0  0.85  0.85 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
6-0 5709 0/210/210 W 0.16 0    0   0.0  0.84  0.84 127.0.0.1      5.175.142.66 GET /server-status
                                                                               HTTP/1.1
7-0 -    0/0/1     . 0.00 5574 0   0.0  0.00  0.00 127.0.0.1      5.175.142.66 OPTIONS * HTTP/1.0

   --------------------------------------------------------------------------

    Srv  Child Server number - generation
    PID  OS process ID
    Acc  Number of accesses this connection / this child / this slot
     M   Mode of operation
    CPU  CPU usage, number of seconds
    SS   Seconds since the beginning of the most recent request
    Req  Milliseconds required to process most recent request
   Conn  Kilobytes transferred this connection
   Child Megabytes transferred this child
   Slot  Total megabytes transferred this slot
   --------------------------------------------------------------------------

    Apache/2.2.15 (CentOS) Server at localhost Port 80

Заключение

Модуль mod_status веб-сервера Apache является очень удобным инструментом мониторинга для отслеживания производительности деятельности веб-сервера и способен выявлять проблемы самостоятельно. Для получения дополнительной информации прочтите страницу статуса, которая поможет вам стать более успешным администратором веб-сервера.

  1. Домашняя страница Apache mod_status

Это все, что у нас есть о mod_status на данный момент, мы предложим еще несколько хитростей и советов по Apache в будущих учебниках. До тех пор оставайтесь гиками и следите за Tecmint.com, и не забудьте добавить свои ценные комментарии.

Source:
https://www.tecmint.com/monitor-apache-web-server-load-and-page-statistics/