Принцип работы
Коллектор SNMP-трафика предназначен для снятия статистики о трафике с компонентов оборудования или сетевых служб посредством SNMP-запросов. При запуске коллектор получает из АСР всю необходимую информацию об оборудовании, с которым ему необходимо взаимодействовать, и сохраняет её во временный конфигурационный файл snmp-load.yml. При каждом последующем запуске коллектор повторно считывает информацию из АСР и обновляет конфигурационный файл. Если же БД АСР временно недоступна, коллектор продолжит работать с уже имеющимся конфигурационным файлом.
Пример конфигурационного файла snmp-load.yml:
operator_devices: 50966001: {collect_type_id: 2097, community: private, in_oid_template: 1.3.6.1.2.1.31.1.1.1.6.$IFINDEX, ip_address: 217.13.214.10, out_oid_template: 1.3.6.1.2.1.31.1.1.1.10.$IFINDEX, port: 161, unit_id: 2049} user_devices: - firm_id: 100 object_id: 4572678113591 operator_obj_id: 50966001 substs: {IFINDEX: '17'} user_id: 4572678110091
Режимы работы
Коллектор имеет 3 режима работы: load, save и update. Данные режимы полностью автономны и друг с другом не пересекаются.
- В режиме load коллектор занимается снятием статистики с оборудования и сохраняет информацию в специальные файлы вида snmp.dat.%DATETIME%, где
%DATETIME%
— время образования файла. Работа с файлами организована таким образом, что первоначально информация записывается в буферный файл snmp.dat, а при достижении им определенного размера (настраивается в конфигурационном файле коллектора hsnmp.conf) создается файл вида snmp.dat.%DATETIME%, который более не подлежит изменению. Также во время работы создается служебный файл snmp.dat.lock, который обеспечивает корректную работу при многопоточном обращении к файлу snmp.dat в процессе работы коллектора.
- В режиме save коллектор отправляет полученную статистику в АСР. При этом в случае, если сервер АСР недоступен, информация не теряется, а продолжает храниться в виде файлов до следующего успешного соединения с сервером. После успешной отправки файлов в АСР созданные файлы удаляются. Необходимо обязательно обеспечить их резервное копирование.
- Режим update обновляет параметр ifIndex для компонентов оборудования, у которых включен флаг «Сбор статистики по трафику через SNMP». Поскольку в отличие от ifDescr значения ifIndex периодически изменяются, желательно производить синхронизацию каждый раз перед снятием статистики. Если ifIndex обновился, а коллектор не произвел синхронизацию, статистика будет снята некорректно. Необходимо учитывать, что режим update обновляет только параметр ifIndex. Если в системе используются параметры IfIndex In/Out, то их обновление производиться не будет.
Конфигурация коллектора
Пример конфигурационного файла hsnmp.conf:
# Уровень логирования log_path: /var/log/hsnmp/hsnmp.log # Максимальный размер лог-файла до создания нового log_rotate_size: 1048576 # Количество резервируемых лог-файлов log_rotate_count: 25 # Название БД database_name: dev # Пользователь БД database_user: AIS_NET # Пароль пользователя БД database_password: password # Путь до директории с данными datadir_path: /var/spool/hydra/hsnmp # Размер буфера сбора статистики до загрузки в АСР, байты datafile_buffer_size: 51200 # 50 Кб # Размер пула потоков для снятия данных load_threads_pool_size: 5 # Таймаут SNMP-запроса snmp_request_timeout: 1 # Число попыток SNMP-запроса snmp_request_retries: 5 # Идентификатор службы АСР hydra_service: 4573437479801 # Идентификаторы услуг АСР hydra_goods: # Входящее направление in: 40213501 # Исходящее направление out: 40213701
Базовая настройка АСР
Чтобы произвести настройку АСР для работы с SNMP коллектором, необходимо выполнить несколько шагов.
Настройка номенклатуры
Добавление дополнительных параметров
В меню Справочники → Номенклатура → все ТМЦ → Активное оборудование необходимо отредактировать пункт «Дополнительные параметры». В дополнение к имеющимся там позициям введите следующие:
Код | Тип данных | Наименование | Комментарий | Справочник |
---|---|---|---|---|
| Строка | Шаблон SNMP OID для вх. трафика | Применяется для формирования SNMP OID на операторском оборудовании для сбора статистики по входящему трафику |
|
| Строка | Шаблон SNMP OID для исх. трафика | Применяется для формирования SNMP OID на операторском оборудовании для сбора статистики по исходящему трафику |
|
| Справочное значение | Единица измерения трафика | Применяется для установки единицы измерения трафика при сборе по SNMP | Единицы измерения данных |
| Справочное значение | Тип работы с SNMP-данными | Применяется для установки типа обработки данных при сборе по SNMP | Тип работы с данными из внешних источников |
Для всех этих доп. параметров необходимо выбрать маркер «Наследуется позициями».
В меню Справочники → Номенклатура → все ТМЦ → Активное оборудование → Позиции спецификации → Порт также необходимо отредактировать пункт «Дополнительные параметры» и добавить следующие позиции:
Код | Тип данных | Наименование | Комментарий | Справочник |
---|---|---|---|---|
| Строка | SNMP ifIndex | Значение ifIndex для использования в SNMP-командах |
|
Obj_SNMPTrafStat | Флаг | Сбор статистики по трафику через SNMP | Применяется для операторского оборудования, сбор статистики по трафику с которого осуществляется с помощью SNMP |
|
| Строка | SNMP ifIndex In | Значение ifIndex для использования в SNMP-командах для входящего трафика | |
| Строка | SNMP ifIndex Out | Значение ifIndex для использования в SNMP-командах для исходящего трафика |
Для данных доп. параметров следует отметить маркер «Свойство для объекта».
Примечание: дополнительные параметры IfIndex In/Out являются не обязательными. Их использование необходимо только в случае, когда IfIndex различается для входящего и исходящего трафика.
Настройка дополнительных параметров
На форме редактирования определенного типа оборудования в меню Справочники → Номенклатура → все ТМЦ → Активное оборудование рассмотрим значение появившихся дополнительных полей (в случае если маркер «Свойство для объекта» не отмечен, иначе настройка параметров выполняется на конкретном операторском оборудовании).
Тип работы с SNMP-данными
- Кумулятивное обновление
В данном режиме работы вся информация по трафику для заданного объекта хранится в БД в одном поле и перезаписывается по мере обновления поступающей информации с коллектора.
- Текущее значение
В данном режиме работы вся информация по трафику для заданного объекта хранится в БД в отдельных полях, что позволяет впоследствии произвести анализ активности за определенный период времени (используется для тарификации типа burstable).
Шаблон SNMP OID для исх. трафика
Здесь необходимо указать шаблон адреса счетчика, с которым нам необходимо работать. В качестве ifIndex можно указать подстановку $IFINDEX.
Пример заполнения данного поля:
1.3.6.1.2.1.31.1.1.1.6.$IFINDEX
В случае, когда IfIndex различается для входящего и исходящего трафика можно воспользоваться подстановкой $IFINDEX_OUT.
Пример заполнения данного поля:
1.3.6.1.2.1.31.1.1.1.6.$IFINDEX_OUT
Шаблон SNMP OID для вх. трафика
Если IfIndex одинаков для входящего и исходящего трафика, то настраивается аналогично предыдущему пункту.
Если используется дополнительный параметр Obj_SNMPIfIndexIn, то можно воспользоваться подстановкой $IFINDEX_IN.
Пример заполнения данного поля:
1.3.6.1.2.1.31.1.1.1.10.$IFINDEX_IN
Единица измерения трафика
Выбор единицы измерения трафика. Как правило, используются байты.
Настройка активного оборудования
Создание сетевой службы коллектора
Для работы SNMP-коллектора данных в АСР необходимо завести соответствующую службу. Для этого перейдите в меню Оборудование → Сетевые службы и нажмите кнопку «Добавить». В поле «Тип» выберите «Коллектор данных». На странице редактирования только что созданной сетевой службы найдите поле «Идентификатор», значением которого является некоторый код, который необходимо занести в параметр hydra_service конфигурационного файла hsnmp.conf.
При создании данной сетевой службы в системе также автоматически создается задание, которое может запускаться с определенной периодичностью и получать данные с коллектора. По умолчанию задание создается в заблокированном состоянии и его необходимо разблокировать вручную. Управление заданиями осуществляется в меню Администрирование → Задания.
Привязка компонентов абонентского оборудования к компонентам операторского оборудования
Необходимо перейти на закладку «Привязки» формы редактирования компонента абонентского оборудования (для этого сначала нужно перейти на страницу редактирования абонента и в разделе «Абонентское оборудование» кликнуть по компоненту, для которого необходимо сделать привязку).
Под прямыми привязками в системе подразумеваются привязки абонентского оборудования к операторскому, под обратными — операторского к абонентскому. Аналогичные действия также можно производить со страницы редактирования активного оборудования Справочники → Активное оборудование. Поле «Тип», как правило, имеет значение «Сетевое соединение» либо «Физическое соединение».
Установка ifIndex и ifDescr для компонентов оборудования
На вкладке «Состав» формы редактирования активного операторского оборудования необходимо выбрать компонент (порт), по которому требуется производить учет статистики, и на странице его редактирования отметить флаг «Сбор статистики по трафику через SNMP», заполнить поле «SNMP ifIndex» (или поля «SNMP ifIndex In» и «SNMP ifIndex Out»), а также в поле «Код» ввести значение ifDescr в соответствии с конфигурацией вашего оборудования.
Настройка управления активным оборудованием
Необходимо перейти на закладку «Общие данные» формы редактирования активного оборудования. В разделе «Настройка управления активным оборудованием» добавить новую строку:
Служба | Тип | Интерфейс | Порт TCP/UDP | Учетная запись | Пароль | Абонент/ISP |
---|---|---|---|---|---|---|
| SNMP v2c | <IP адрес оборудования> | Порт SNMP (обычно 161) |
| <SNMP community> | <Оператор связи> |
Запуск коллектора
Запуск коллектора должен производиться под пользователем hsnmp средствами планировщика задач (cron). При запуске обязательно указывать ключ -m и требуемый режим работы коллектора — load, save или update. Также при запуске скрипта из cron рекомендуется указывать ключ -s, который реализует «тихий» режим работы, в котором вся информация пишется в лог-файл.
Краткое описание поддерживаемых ключей запуска можно посмотреть по команде ./hsnmp.py -h, например:
hsnmp@server:~/hsnmp/lib$ ./hsnmp.py -h Usage: hsnmp.py [options] Options: -h, --help show this help message and exit -m MODE, --mode=MODE Run mode: "load", "save", "update" -f CONFIG, --config=CONFIG Config path (default: "conf/hsnmp.conf;/etc/hsnmp/hsnmp.conf") -s, --silent Silent mode
Автоматизация запуска коллектора через cron
Предварительно необходимо создать папку для хранения резервных копий файлов с данными, которые коллектор создает при работе:
root@server:~# mkdir /var/spool/hydra/hsnmp/backup && \ chown hsnmp:hsnmp /var/spool/hydra/hsnmp/backup
Настройка cron
Для редактирования конфигурационного файла cron следует использовать следующую команду:
root@server:~# crontab -e
Пример конфигурационного файла cron для коллектора:
# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. # m h dom mon dow user command */15 * * * * sudo -u hsnmp -i cp /var/spool/hydra/hsnmp/snmp.dat.* /var/spool/hydra/hsnmp/backup/ && sudo -u hsnmp -i /opt/hydra/hsnmp/lib/hsnmp.py -m save -s */5 * * * * sudo -u hsnmp -i /opt/hydra/hsnmp/lib/hsnmp.py -m update -s && sudo -u hsnmp -i /opt/hydra/hsnmp/lib/hsnmp.py -m load -s #
Дополнительно необходимо организовать периодическую очистку директории backup от устаревших файлов.
Запуск задания по тарификации трафика
При создании сетевой службы коллектора, автоматически создается задание «Получение текущей статистики коллектора данных», которое занимается тарификацией информации о трафике, полученной с коллектора. По умолчанию задание создается в состоянии «Заблокировано», поэтому для запуска механизма тарификации трафика задание необходимо разблокировать. Управление заданиями осуществляется в через меню Администрирование → Задания.