Мониторинг apache с помощью MRTG

()

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 обработку выхода этого значения за допустимые пределы. Примерно так же, как мы делали это ранее для мониторинга температуры.

На этом всё. Приятной работы!

Ключевые слова: apache, mrtg, мониторинг.

Комментарии:

Anonymous 2014-02-13 12:10:26 (#)

Лучше для этого использовать apache2ctl fullstatus и bash скрипт.
Новый комментарий



© 2006-2016 Вадим Калинников aka MooSE

Санкт-петербург снять квартиру на сутки;Швейцарские часы б у продажа и швейцарские часы http://www.chronoland.ru