Сбор статистики по протоколу SNMP
Начиная с версии NeTAMS 3.4.0 (build 3018) появилась возможность учета трафика путем опроса счетчиков SNMP удаленных устройств. Данная схема работает при наличии:
- Коммутатора или маршрутизатора, имеющего работающий SNMP-агент и поддерживающий MIB-II (фактически, любое устройство поддерживает этот MIB).
- Сервера UNIX, на котором установлены:
- NeTAMS нужной версии
- Пакет net-snmp версии 5
- Perl-модули к net-snmp
- Perl-модуль Net::Telnet
- Настроенного скрипта addon/snmp2netams.pl
- Настроенного data-source ... type raw
Принципы работы

Скрипт
addon/snmp2netams.pl опрашивает перечисленные в его заголовке SNMP-устройства, используя
заданное значение community. Запрашиваются имена интерфейсов и значения 64-битных счетчиков байт, прошедших через интерфейс:
ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifName =
= 1.3.6.1.2.1.31.1.1.1.1
ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifHCInOctets =
= 1.3.6.1.2.1.31.1.1.1.6
ifMIB.ifMIBObjects.ifXTable.ifXEntry.ifHCOutOctets =
= 1.3.6.1.2.1.31.1.1.1.10
Полученная таблица преобразуется в формат, приемлемый для команды rawdata сервиса data-source. При этом имя юнита составляется из имени устройства, дефиса и имени интерфейса:
rawdata unit name catalyst1-fa0/1 policy ip
in 1234567 out 7654321 incremental
Название политики учета также задается в скрипте.
При помощи модуля Net::Telnet осуществляется подключение к демону netams, которому
передаются команды rawdata. Использование параметра incremental приводит к корректному
увеличению счетчиков учета netams (show lift full name catalyst1-fa0/1) при постоянном росте значений SNMP-счетчиков устройства.
Настройка
- В заголовке скрипта addon/snmp2netams.pl необходимо:
@devices=("catalyst");
Перечислить через запятую заключенные в кавычки имена (hostname) устройств, откуда вы хотите собирать статистику.
$community="public";
Коммьюнити для чтения.
$netams_host="localhost";
$netams_port=20001;
$netams_login="admin";
$netams_password="aaa";
Параметры подключения к демону NeTAMS.
$policy_name="ip";
Имя политики учета, которая будет использоваться для счетчиков.
- Настроить NeTAMS на новый источник данных:
service data-source 2
type raw
- Настроить SNMP-устройство для того, чтобы оно могда отдавать статистику по протоколу SNMP.
Допустим, что на сервере с адресом 192.168.0.1 работают snmp2netams.pl и сам демон NeTAMS.
Для коммутатора Cisco Catalyst его настройки выглядят так:
access-list 1 permit 192.168.0.1
snmp-server community public RO 1
snmp-server ifindex persist
- Протестировать скрипт и прописать его периодический запуск (раз в 5...15) минут в cron.
- Вы можете включить режим вывода отладочной информации сервисом data-source...raw этой командой:
debug ds_raw
В ответ можно будет наблюдать следующее:
|ds_raw: unit catalyst-fa0/01(004FE6) policy ip(023CAA)
in=1234567, out 7654321,
time=1147365439, type=2, ds=data-source:3
Подробнее об использовании data-source...raw смотрите тут.
Примечания
Дополнительные сведения о настройке протокола SNMP на коммутаторах Cisco Catalyst можно
почитать
тут. Часто задаваемые вопросы о поддержке SNMP на Cisco собраны
тут.
Значения счетчиков SNMP снимаются по длине пакетов на 2 уровне OSI. Это значит, что в суммарную
длину входят заголовки IP пакета, и Ethernet-кадра. Также будут учтены все IP и Ethernet броадкасты и
мультикасты, коих может быть много. На практике расхождения показателей IP-счетчиков и SNMP-счетчиков могут
достигать 30%.