Иногда возникает необходимость в реальном времени наблюдать за использованием кэша прокси-сервера 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) просто закрыт файрволлом (в этом случае его нужно открыть).
Приятной работы!