Мониторинг использования squid в реальном времени с помощью mrtg
MooSE 2009-01-23 03:23:13
Проверил: MooSE
Иногда возникает необходимость в реальном времени
наблюдать за использованием кэша прокси-сервера squid. Удобнее всего
для этого настроить рисования графика количества запросов в секунду,
количества запросов из кэша и процентного отношения этих двух значений.
Прежде чем приступить к решению задачи немного
конкретизируем начальные условия: у нас есть прокси-сервер под
управлением Ubuntu Server 8.10, на котором установлен, настроен и
запущен пакет squid3, он имеет IP-адрес 192.168.2.1. Так же у нас есть
сервер мониторинга под управлением Debian Lenny, имеющий IP-адрес
192.168.2.10.
Для рисования графика удобнее всего использовать
mrtg, а данные снимать по snmp. На самом деле ничего нового изобретать
не нужно, всё что необходимо описано в этой статье. Фактически здесь мы просто адаптируем её под конкретные условия.
Первым делом нам нужно настроить squid таким
образом, чтобы он отдавал нам данные по snmp. Для этого достаточно
добавить в конец файла конфигурации (/etc/squid3/squid.conf) строки:
# Порт, с которого будем собирать данные по snmp
snmp_port 3401
# имя snmp-community. пусть будет public
acl snmp_monitoring snmp_community public
# сервер мониторинга
acl monitoring src 192.168.2.10
# разрешаем доступ к snmp-community public с хоста monitoring
snmp_access allow snmp_monitoring monitoring
запрещаем доступ к snmp во всех остальных случаях
snmp_access deny all
Посылаем squid команду перечитать конфигурацию:
squid3 -k reconfigure
На этом конфигурация прокси-сервера заканчивается.
Единственное что — нужно скопировать с прокси-сервера файл
/usr/share/squid3/mib.txt и разместить его в одной из директорий на
сервере мониторинга. Автор предпочёл создать директорию /etc/mrtg и
сохранить его в ней под именем squid.mib. Этот файл пригодиться нам
чуть позже, а сейчас установим mrtg на сервер мониторинга (если его там
ещё нет):
apt-get install mrtg
Если mrtg на сервере мониторинга до этого не был
сконфигурирован, то создадим файл конфигурации /etc/mrtg.cfg с
минимальными настройками:
WorkDir: /var/www/mrtg
EnableIPv6: no
Если же mrtg уже настроен то этот шаг нужно пропустить.
Теперь у нас есть уже настроенный mrtg, в
конфигурацию которого осталось только настроить подгрузку нужного
mib-файла и добавить рисование нужного графика. Сначала настроим
загрузку нужного mib-файла, для этого добавим в файл конфигурации mrtg
строку:
LoadMIBs: /etc/mrtg/squid.mib
И вот теперь финальный шаг. Добавляем секцию для рисования нужного графика:
Target[cacheHits]: cacheHttpHits&cacheProtoClientHttpRequests:public@192.168.2.1:3401
Title[cacheHits]: HTTP Hits
PageTop[cacheHits]: <H1>Proxy Cache Statistics: HTTP Hits / Requests</H1>
MaxBytes[cacheHits]: 10000000
Suppress[cacheHits]: y
LegendI[cacheHits]: HTTP hits
LegendO[cacheHits]: HTTP requests
Legend1[cacheHits]: HTTP hits
Legend2[cacheHits]: HTTP requests
YLegend[cacheHits]: perminute
ShortLegend[cacheHits]: req/min
Options[cacheHits]: nopercent, perminute, dorelpercent
В итоге на графике будет три кривые:
- Синяя: количество обращений к прокси-серверу за единицу времени.
- Зелёная: количество ответов на запросы, вышедшие из кэша.
- Янтарная: процентное отношение второго к первому
Первые результаты появятся на графике минут через
пятнадцать-двадцать после сохранения файла конфигурации. У автора этих
строк график выглядит так:

Если вдруг график не рисуется, то первым делом нужно
проверить отдаёт ли squid данные по snmp. Для этого нужно установить на
сервер мониторинга пакет snmp:
apt-get install snmp
И попробовать опросить squid с помощью snmpwalk:
snmpwalk -v 1 -c public 192.168.2.1:3401 .1.3.6.1.4.1.3495.1.1
Вывод должен выглядеть примерно вот так:
SNMPv2-SMI::enterprises.3495.1.1.1.0 = INTEGER: 8148
SNMPv2-SMI::enterprises.3495.1.1.2.0 = INTEGER: 92156
SNMPv2-SMI::enterprises.3495.1.1.3.0 = Timeticks: (16730204) 1 day, 22:28:22.04
Если же snmpwalk выдаст примерно вот такую ошибку:
Timeout: No Response from 192.168.2.1:3401
То либо squid не настроен отдавать данные по snmp
(нужно вернуться на прокси-сервер и проверить все настройки), либо
нужный порт на прокси-сервере (в данном случае это 3401/udp) просто
закрыт файрволлом (в этом случае его нужно открыть).
Приятной работы!