Crmgo Блог

мониторим apache, модуль mod_performance

мониторим apache, модуль mod_performance

mod_performance Что этот модуль собой представляет. Это обычный модуль Apache 2.x для Linux. Из документации к нему: модуль предназначен для сбора и накопления статистики по использованию ресурсов(CPU и memory, время выполнения скрипта) веб-сервером Apache 2.2; модуль позволяет провести анализ собранных…

мониторим apache, модуль mod_performance

mod_performance

Что этот модуль собой представляет. Это обычный модуль Apache 2.x для Linux. Из документации к нему:

  • модуль предназначен для сбора и накопления статистики по использованию ресурсов(CPU и memory, время выполнения скрипта) веб-сервером Apache 2.2;
  • модуль позволяет провести анализ собранных данных.

Что все это значит? А то, что он позволяет отслеживать за тем, сколько ресурсов потребляет поступивший веб-серверу запрос. Каждый раз сохраняя следующую информацию:

  1. виртуальный хост, которому поступил запрос;
  2. файл, который запрашивается;
  3. URI запроса;
  4. CPU нагрузка в %;
  5. использование памяти в %;
  6. время обработки запроса.

А накопившуюся статистику — позволяет анализировать. В качестве базы данных для сохранения и анализа используется SQLite.
В качестве анализатора использования ресурсов, используется не scoreboard, как в mod_status и расширениях perl, а glibtop.
Модуль позволяет отслеживать как абсолютно все запросы, так и конкретные, отфильтрованные по правилу с помощью регулярных выражений. Точнее будет сказано, что модуль ВСЕГДА обрабатывает только те запросы, которые соответствуют фильтру, содержащему регулярное выражение.

Как просмотреть накопленные данные

Модуль предоставляет два интерфейса для просмотра и анализа данных: 1) глобальный; 2) так называемый per-host.
Каждый интерфейс прикреплен к хендлеру:

user-status — per-host
performance-status — глобальный

Доступ к интерфейсам настраивается как и в модуле mod_status, т.е.:

<Location /perf-status>
    Order allow,deny
    SetHandler performance-status
    Allow from 1.1.1.1
</Location>

Глобальный интерфейс позволяет просматривать и анализировать накопленные данные по всем виртуальным хостам, per-host интерфейс же отображает и анализирует только информацию по хосту, к которому интерфейс прикреплен, например, если вызвать хост test.test.test/user-status, то вся выводимая статистика будет касаться только этого хоста. Статистика по другим хостам отображаться не будет.

Глобальный интерфейс управления модулем выглядит, как приведено на рисунке ниже:
Главная форма mod_performance

В главной форме, на рисунке можно увидеть поля:
Mode — режим отображения данных.
Period — дней, период отображения или анализа данных, начиная от начала текущего дня.
Period begin — начало периода, заданного в формате YYYY-MM-DD hh:mm:ss.
Period end — конец периода, заданного в формате YYYY-MM-DD hh:mm:ss.
Если заданы Period begin, Period end — в таком случае отображаются данные ограниченные этими параметрами, а поле Period — игнорируется. В противном случае анализируемый участок задается параметром Period.
Hostname(SQL) — фильтр, выводить данные только по указанному хосту. Синтаксис вызова подобно конструкции like в SQL. Т.е. если задать «%test», то будут выбраны все хосты заканчивающиеся на «test».
Script name(SQL) — подобно предыдущему параметру, только анализируется имя вызываемого скрипта.
URI(SQL) — подобно предыдущему параметру, только анализируется URI запроса.
Graph Mode(Y/N) — отображать графикой или текстом.

Примерный вывод данных выглядит так:
Текстовый вывод накопленной информации

Хост приведенный в примере на картинке — абсолютно тестовый, если он совпадает с реальным — приношу извинения.
А графический режим отображения приведен на рисунке ниже:
Графический вывод

Режимы анализа

Show output without analytics – вывести собранную информацию без анализа, отфильтрованную по хосту, скрипту и URI(графический и текстовый режим).
Maximal %CPU – вывести только записи с максимальным значением %CPU(с учетом фильтрации).
Maximal memory % — вывести только записи с максимальным значением %memory(с учетом фильтрации).
Maximal execution request time – вывести самыйдолго выполняющийся скрипт.
Host requests statistics– вывести статистику обращений к хостам с сортировкой по убыванию (в % от общего числа с учетом фильтров).
Execution history screen(use Period begin) – позволяет вычислять список выполняющихся запросов на указанное время
Number of requests per domain — вывести статистику обращений к хостам с сортировкой по убыванию(не в процентах а количество).
Average usage per host — вывести среднюю загрузку сервера каждым хостом(сумма % CPU, сумма % MEMORY, сумма выполнения скриптов, средний % CPU за период, средний % использования памяти, среднее время выполнения скриптов).
Не буду вдаваться в подробности и некоторые режимы оставлю без внимания.

Как установить модуль

Здесь я привожу пример установки для rpm-систем. Все действия необходимо проводить под пользователем root.
1) установим необходимые пакеты для сборки:

yum install httpd-devel apr-devel libgtop2-devel sqlite-devel gd-devel

2) создадим временную паку для исходных кодов:

mkdir ~/my_tmp
cd ~/my_tmp

3) скачиваем исходные коды модуля и распаковываем архив и переходим в распакованную папку:

wget http://lexvit.dn.ua/utils/getfile.php?file_name=mod_performance_tar201104233487.gz -O mod_performance.tar.gz
tar zxvf mod_performance.tar.gz
cd mod_performance/

4) собираем модуль:

make

5) на warning не обращаем внимания. Главное, чтоб не было error. Если все собралось нормально, то:

make install

или

cp .libs/mod_performance.so <путь куда копировать>
Конфигурируем Apache

Конфигурация будет осуществляться для стандартной установки Apache, т.е модули располагаются в каталоге /etc/httpd/modules, существует каталог /etc/httpd/conf.d/ и он подключен в /ect/httpd/conf/httpd.conf.
1) создать файл конфигурации модуля:

touch /etc/httpd/conf.d/mod_performance.conf

2) вставить в него:

LoadModule performance_module modules/mod_performance.so

<IfModule mod_performance.c>
PerformanceHistory 5
PerformanceEnabled On
PerformanceMaxThreads 80
PerformanceScript \.php
PerformanceStackSize 1
PerformanceUseCanonical On

<Location /admin-status>
Order allow,deny
SetHandler performance-status
Allow from 1.1.1.1
</Location>
</IfModule>

3) сохранить файл и перезапустить Apache:

service httpd restart

Файл конфигурации выступает лишь как пример. Все параметры должны быть подобраны под конкретный сервер.
Вышеприведенная конфигурация модуля позволяет отслеживать запросы к php скриптам.
Описание всех параметров конфигурации можно прочитать в документации модуля.

Примечание: материал мог быть создан с помощью ИИ и затем отредактирован человеком. Ответственный: Dmytro Lomaka, Kaltenkirchen.