Для того, чтобы SNMP-клиент мог начать работать со Squid необходимо включить поддержку этого протокола в программе.
После того, как поддержка SNMP в Squid обеспечена, проверяем, отдаст ли сервер данные по запросу члена community (Squid не отдаёт список всех своих переменных на неопределённый запрос, как это делают модемы, например; нужно запрашивать именно то, что нужно, конкретный корневой OID: .1.3.6.1.4.1.3495.1):
# /usr/bin/snmpwalk -c [community] -v 2c [host]:[port] .1.3.6.1.4.1.3495.1
SNMPv2-SMI::enterprises.3495.1.1.1.0 = INTEGER: 519088
SNMPv2-SMI::enterprises.3495.1.1.2.0 = INTEGER: 4861060
SNMPv2-SMI::enterprises.3495.1.1.3.0 = Timeticks: (9211804) 1 day, 1:35:18.04
....
SNMPv2-SMI::enterprises.3495.1.2.2.0 = STRING: "squid"
....
SNMPv2-SMI::enterprises.3495.1.2.6.0 = STRING: "ordinary.proxy.local"
SNMPv2-SMI::enterprises.3495.1.3.1.1.0 = Counter32: 758
SNMPv2-SMI::enterprises.3495.1.3.1.2.0 = Counter32: 5698280
....
SNMPv2-SMI::enterprises.3495.1.1.2.0 = INTEGER: 4861060
SNMPv2-SMI::enterprises.3495.1.1.3.0 = Timeticks: (9211804) 1 day, 1:35:18.04
....
SNMPv2-SMI::enterprises.3495.1.2.2.0 = STRING: "squid"
....
SNMPv2-SMI::enterprises.3495.1.2.6.0 = STRING: "ordinary.proxy.local"
SNMPv2-SMI::enterprises.3495.1.3.1.1.0 = Counter32: 758
SNMPv2-SMI::enterprises.3495.1.3.1.2.0 = Counter32: 5698280
....
Более "человеко-понятно" SNMP-вывод Squid можно просмотреть с помощью специально приложения, MIB-браузера, сделав это так, как я описывал в этой заметке. Большинство разработчиков приложений, поддерживающих SNMP, создают свои дополнения к дереву параметров SNMP. Squid не исключение. Для того, чтобы погулять по ветвям параметров вывода необходимо применить к "браузеру" файл с описанием дополнительных параметров, который обычно прилагается к дистрибутиву:
# cp /usr/share/squid3/mib.txt /etc/squid3/misc/squid.3.1.6.mib
Копируем MIB файл в директорию "Mibs" нашего "браузера", удаляем файл ".index" и перезапускаем приложение. Получаем стандартное дерево SNMP с дополнениями от разработчиков Squid.
Побродив по дереву отображаемых параметров я нашёл несколько, данные которых вполне можно брать, анализировать и визуализировать в виде графиков или иных способов отчётности:
cacheUniqName ( Cache unique host name )
.1.3.6.1.4.1.3495.1.2.6
cacheNumObjCount ( Number of objects stored by the cache )
.1.3.6.1.4.1.3495.1.3.1.7
cacheProtoClientHttpRequests ( Number of HTTP requests received )
.1.3.6.1.4.1.3495.1.3.2.1.1
cacheHttpInKb ( Number of HTTP KB’s received )
.1.3.6.1.4.1.3495.1.3.2.1.4
cacheHttpOutKb ( Number of HTTP KB’s transmitted )
.1.3.6.1.4.1.3495.1.3.2.1.5
cacheServerRequests ( All requests from the client for the cache server )
.1.3.6.1.4.1.3495.1.3.2.1.10
cacheServerInKb ( KB’s of traffic received from servers )
.1.3.6.1.4.1.3495.1.3.2.1.12
cacheServerOutKb ( KB’s of traffic sent to servers )
.1.3.6.1.4.1.3495.1.3.2.1.13
cacheClients ( Number of clients accessing cache )
.1.3.6.1.4.1.3495.1.3.2.1.15
.1.3.6.1.4.1.3495.1.2.6
cacheNumObjCount ( Number of objects stored by the cache )
.1.3.6.1.4.1.3495.1.3.1.7
cacheProtoClientHttpRequests ( Number of HTTP requests received )
.1.3.6.1.4.1.3495.1.3.2.1.1
cacheHttpInKb ( Number of HTTP KB’s received )
.1.3.6.1.4.1.3495.1.3.2.1.4
cacheHttpOutKb ( Number of HTTP KB’s transmitted )
.1.3.6.1.4.1.3495.1.3.2.1.5
cacheServerRequests ( All requests from the client for the cache server )
.1.3.6.1.4.1.3495.1.3.2.1.10
cacheServerInKb ( KB’s of traffic received from servers )
.1.3.6.1.4.1.3495.1.3.2.1.12
cacheServerOutKb ( KB’s of traffic sent to servers )
.1.3.6.1.4.1.3495.1.3.2.1.13
cacheClients ( Number of clients accessing cache )
.1.3.6.1.4.1.3495.1.3.2.1.15
В случае с сервером мониторинга Zabbix можно создать специальный шаблон (например: t_squid) для работы с сервером Squid, параметры которого в дальнейшем использовать для непосредственного опроса и визуализации.
Основной нюанс в сборе данных счётчика загруженных килобайт. "CacheServerInKb" ( KB’s of traffic received from servers ) - это линейный счётчик загруженых килобайт. Если делать срез раз в восемь секунд, то получим показатель среднего количества килобит, прошедших в секунду, за период в восемь секунд; после этого перемножаем показатель на 1024 и получаем среднюю скорость загрузки Squid в битах за период в восемь секунд).
На практике показатели полученные от Squid3 по SNMP несколько отличаются от показателей, полученных от стоящего за ним Cisco PIX процентов на 5 (пять), причём они плавают, то вверх, то вниз. Я склонен объяснять это использованием кеша.