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

В итоге на графике будет три кривые:

  1. Синяя: количество обращений к прокси-серверу за единицу времени.
  2. Зелёная: количество ответов на запросы, вышедшие из кэша.
  3. Янтарная: процентное отношение второго к первому

Первые результаты появятся на графике минут через
пятнадцать-двадцать после сохранения файла конфигурации. У автора этих
строк график выглядит так:

Пример графика

Если вдруг график не рисуется, то первым делом нужно
проверить отдаёт ли 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) просто
закрыт файрволлом (в этом случае его нужно открыть).

Приятной работы!

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34