Зона особого внимания: Squid
Last stable: squid-3.1.19     Beta: squid-3.2.0.15

Squid + MRTG.
Настройка MRTG для мониторинга текущего состояния Squid

Обновлено: 19.07.2011

   Целью данной статьи является описание настройки MRTG для мониторинга состояния вашего прокси. Будем считать, что вы знакомы с пакетом MRTG, принципом его работы и конфигурирования, т.е. я не буду отвлекаться на описание установки самого MRTG и проблемы, которые могут при этом возникнуть. Для тех, кто раньше не имел с ним дела и хочет детально ознакомится со всеми тонкостями, могу предложить зайти на сайт авторов этого проекта Multi Router Traffic Grapher. Также советую прочитать неплохую статью Вячеслава Калошина о том, что может MRTG и как его заставить эти возможности раскрыть :) Кроме того я перевел раздел Squid FAQ, касающийся настройки поддержки SNMP, обязательно прочитайте !!!. Также хочется думать, что у вас установлена последняя стабильная версия Squid или хотя бы не младше 2.2, т.к я буду рассматривать именно такой вариант. Настройка для Squid 2.1 несколько отличается, а кто-нибудь еще использует такой раритет ? :) Тогда загляните в FAQ.

   Теперь, когда все вводные даны, перейдем к делу. Опрос состояния Squid осуществляется по SNMP, поэтому прежде всего нужно проверить, была ли включена поддержка SNMP при сборке вашего Squid-а. Начиная с версии 2.5, опции при сборке можно посмотреть при помощи ключа -v:

%/usr/local/squid/sbin/squid -v
Squid Cache: Version 2.5.STABLE9
configure options: --enable-delay-pools --enable-snmp

   В данном случае наличие ключа --enable-snmp свидетельствует о том, что все в порядке и поддержка SNMP включена. Если у вас подобного ключа нет, то придется пересобрать Squid с его указанием:

%cd /usr/local/src/squid-source-dir/
%./configure --enable-snmp [прочие опции]
%make clean
%make all
%make install

   Дело сделано. Теперь необходимо поправить squid.conf, а именно описать acl c с указанием сообщества, которому разрешен доступ по SNMP, к примеру

acl My_SNMP snmp_community squidmrtg

описывает сообщество squidmrtg. Вы можете указать любое имя как для списка доступа так и для сообщества.

   Далее указываем номер порта, на котором Squid будет слушать SNMP-запросы. Для snmp_port по умолчанию предлагается использовать значение 3401. Если нет необходимости его менять, просто оставляем его без изменений:

snmp_port 3401

Только не забывайте снять комментарий со строки snmp_port. Если в вашем конфиге параметра snmp_port нет, то его нужно обязательно указать !

   Теперь опишем каким хостам можно к Сквиду по SNMP обращаться, т.к. по умолчанию доступ запрещен всем:

acl myhost src 192.168.0.50/255.255.255.255
snmp_access allow My_SNMP myhost
snmp_access deny all

т.е. разрешаем запросы с хоста 192.168.0.50, всем остальным - запрещено.

   Если есть необходимость можно привязать SNMP-агента к определенному IP, что осущесталяется изменением следующих директив:

#snmp_incoming_address 0.0.0.0
#snmp_outgoing_address 255.255.255.255

Обращаю ваше внимание, что по умолчанию оба параметра закоментарены.

   Теперь можно запускать Squid и проверять работоспособность наших настроек. При запуске прокси в cache.log вы должны увидеть строку:

2003/03/13 11:51:12| Accepting SNMP messages on port 3401, FD 16.

   Я считаю, что у вас уже установлен пакет ucd-SNMP, воспользуемся для теста его утилитой snmpwalk. О том, что все в порядке просигнализирует примерно такой вот ответ:

%snmpwalk -p 3401 hostname squidmrtg .1.3.6.1.4.1.3495.1.1
enterprises.3495.1.1.1.0 = 65516
enterprises.3495.1.1.2.0 = 3686398
enterprises.3495.1.1.3.0 = Timeticks: (76421321) 8 days, 20:16:53.21

   Если вы используете для сбора статистики по SNMP пакет Net-SNMP 5.x.x, то синтаксис команды немного другой, а именно это будет выглядеть так:

%snmpwalk -v 1 -c squidmrtg hostname:3401 .1.3.6.1.4.1.3495.1.1
SNMPv2-SMI::enterprises.3495.1.1.1.0 = INTEGER: 98276
SNMPv2-SMI::enterprises.3495.1.1.2.0 = INTEGER: 3276794
SNMPv2-SMI::enterprises.3495.1.1.3.0 = Timeticks: (20306107) 2 days, 8:24:21.07

   Все, с самим Сквидом разобрались, теперь переходим к настройке собственно MRTG. Попытаемся соорудить самое нужное - графики количества запросов к прокси, попадания в кеш и их процентного соотношения, а также входящего/исходящего http-трафика. Про cfgmaker можно забыть - файл конфигурации придется писать руками или взять мой squid.cfg.
   Немножко прокомментирую то, что получилось:

#Не забывайте создать WorkDir перед тем как пускать в дело indexmaker
WorkDir: /usr/local/apache/htdocs/mrtg/squid
#Если вы не хотите подгружать MIB-файл , то вам необходимо скопировать его
#в директорию, где хранятся MIB-файлы пакета ucd-SNMP под именем SQUID-MIB.txt.
#У меня, к примеру это /usr/local/share/snmp/mibs. Обращаю ваше внимание,что в
#версии 2.5 MIB-файл по умолчанию находится в директории squid/share .

LoadMIBs: /usr/local/squid/etc/mib.txt
#Я предпочитаю демоном MRTG запускать
RunAsDaemon: Yes
#Опрашиваем каждые 5 мин
Interval: 5
#Комментарии к графикам по-русски (koi8-r)
Language: russian
#Обязательно укажите SNMP-порт вашего прокси, в противном случае MRTG будет пытаться
#получить данные со 161-го и ничем особым это не закончится.

Target[cacheHits]: cacheHttpHits&cacheProtoClientHttpRequests:squidmrtg@detotam.com: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
#dorelpercent необходим для того, чтобы получить отношение хитов к запросам
Options[cacheHits]: nopercent, perminute, dorelpercent

#HTTP In/Out Kb
Target[squid-inout]: cacheHttpInKb&cacheHttpOutKb:squidmrtg@detotam.com:3401
Title[cacheServerInOutKb]: HTTP In/Out Kb
PageTop[cacheServerInOutKb]: <H1>proxy Cache Statistics: HTTP InKb / OutKb</H1>
MaxBytes[cacheServerInOutKb]: 10000000
Suppress[cacheServerInOutKb]: y
LegendI[cacheServerInOutKb]: HTTP InKb
LegendO[cacheServerInOutKb]: HTTP OutKb
Legend1[cacheServerInOutKb]: HTTP InKb
Legend2[cacheServerInOutKb]: HTTP OutKb
ShortLegend[cacheServerInOutKb]: Kb/min
Options[cacheServerInOutKb]: nopercent, perminute

   Примечание.Если есть желание видеть статистику по HTTP In/Out в b/s, немного поправьте конфиг, а именно измените строки:

Target[cacheServerInOutKb]: cacheHttpInKb&cacheHttpOutKb:squidmrtg@detotam.com:3401 * 1024
YLegend[cacheServerInOutKb]: Bytes/sec
ShortLegend[cacheServerInOutKb]: Bytes/s
Options[cacheServerInOutKb]: nopercent

   Осталось создать index.html:

%/usr/local/mrtg/bin/indexmaker squid.cfg > /usr/local/apache/htdocs/mrtg/squid/index.html

   Теперь ваш MRTG готов к запуску. Что должно получиться в результате его работы можно глянуть здесь.

См. также:

19.01.2002

Вадим Веремеенко Copyright © 2002-2012