Apache один из самых популярных веб-серверов в интернет. Его популярность обусловлена широким функционалом и гибкостью настройки. Использование любого ПО в серьёзных проектах предполагает кроме прочего мониторинг. Далее рассмотрим организацию мониторинг Apache с помощью MRTG.
Общая идея примерно такая же как и при построении графиков использования веб-сервера Nginx: парсить вывод, сгенерированный с помощью модуля server-status.
Уточним начальные условия: веб-сервер и сервер мониторинга у нас работают под управлением ubuntu 12.04 LTS. Сервер мониторинга имеет IP-адрес 10.12.14.16. Администраторы так же должны иметь возможность просматривать статус сервера. Они будут обращаться из сети 172.17.233.0/25.
Приступаем к настройке. Для начала включим модуль server-status в apache:
a2enmod status
Далее приведём файл /etc/apache2/mods-enabled/status.conf к следующему виду:
# Если включен модуль статуса <IfModule mod_status.c> # Урл, по которому можно смотреть статус <Location /server-status> # Включаем соответствующий обработчик SetHandler server-status # Ограничиваем доступ Order Deny,Allow Deny from all Allow from 127.0.0.1 ::1 Allow from 10.12.14.16 Allow from 172.17.233.0/25 </Location> # Показывать расширенный статус ExtendedStatus On </IfModule>
На этом настройка apache закончена. Перезапускаем его:
invoke-rc.d apache2 restart
Переходим к настройке сервера мониторинга. Для начала напишем скрипт, который будет парсить вывод server-status и выдавать его в виде, удобном для MRTG. Скрипт на пишем на PHP (желающие могут переписать на любом другом языке). Его листинг:
#!/usr/bin/php <?php // Получаем имя хоста $host = isset($argv[1]) ? $argv[1] : '127.0.0.1'; // Получаем данные $data = file_get_contents('http://' . $host . '/server-status'); // Парсим данные $reqs = preg_replace('{^.+Total accesses: (\d+).+$}uis', "$1", $data); // Отображаем результат print "0\n"; print "$reqs\n"; print time() . "\n"; print "$host\n";
После этого добавим в конфигурацию MRTG примерно такие строки:
Target[apache]: `/var/www/mrtg/scripts/apache.php backend1.domain.com` MaxBytes[apache]: 1 Title[apache]: apache statistics PageTop[apache]: <h1>apache statistics</h1> AbsMax[apache]: 1250000 Options[apache]: integer,nopercent,nobanner,growright YLegend[apache]: per second ShortLegend[apache]: per second Legend1[apache]: Connections per second Legend2[apache]: Requests per second
После этого MRTG начнёт рисовать график и через некоторое время уже можно посмотреть на результат. Выглядеть будет примерно вот так:
График наглядно показывает число запросов, обрабатываемых веб-сервером каждую секунду. Кроме того можно настроить в MRTG обработку выхода этого значения за допустимые пределы. Примерно так же, как мы делали это ранее для мониторинга температуры.
На этом всё. Приятной работы!
Anonymous 2014-02-13 12:10:26 (#)