Мониторинг системы с использованием SNMP и SNMP Trap
В данном разделе описаны примеры настройки мониторинга IVA CS по протоколу SNMP и отправки уведомлений об инцидентах по SNMP Trap на основе решения Zabbix.
Zabbix располагает различными инструментами для мониторинга программного обеспечения и оборудования. Для отслеживания состояния оборудования (серверов IVA CS или хостов кластера), локальных ресурсов и приложений (статистика жестких дисков, памяти, процессоров и т. д.) используются специальные агенты Zabbix, а для мониторинга сервера телефонии IVA CS можно использовать возможность получения данных по SNMP-протоколу.
Настройка SNMP
SNMP-сервер по умолчанию выключен.
Включение SNMP-сервера выполняется через системные настройки — сервис swl_monitor.
Чтобы настроить параметры SNMP-сервера через системные настройки, необходимо:
-
перейти в раздел Настройки → вкладка Системные настройки → в строке Поиск ввести swl_monitor → будут отображены все системные настройки для сервиса swl_monitor
-
указать применяемые параметры системных настроек сервиса swl_monitor:
Пример:
Ключ настройки Значение Параметр true
Включить передачу данных по SNMP
IP-адрес и порт, через которые SNMP-сервер принимает запросы
Имя пользователя SNMPv3 для авторизации и получения данных
Протокол аутентификации SNMPv3
Пароль аутентификации SNMPv3
Протокол шифрования SNMPv3
Пароль шифрования SNMPv3
-
после изменения системных настроек SNMP необходимо перезапустить сервис swl_monitor:
Перезапуск сервиса swl_monitor необходимо выполнять на хостах кластера, на которых должны применяться актуальные настройки SNMP Обзор → Кластер → Выбрать хост → Выбрать группу сервисов logic → Выбрать сервис swl_monitor → Нажать кнопку Перезапустить сервис → Подтверждение → Подтвердить перезапуск сервиса, нажав кнопку Да
Протоколы и безопасность
SNMP-сервер работает по протоколу UDP.
В штатном режиме используется SNMPv3 с аутентификацией и шифрованием — уровень безопасности authPriv.
Поддерживаемые протоколы аутентификации:
-
NoAuth
-
MD5
-
SHA (используется по умолчанию)
-
SHA224
-
SHA256
-
SHA384
-
SHA512
Поддерживаемые протоколы шифрования:
-
NoPriv
-
DES
-
AES (используется по умолчанию)
-
AES192
-
AES256
-
AES192C
-
AES256C
Получение метрик по SNMP
Дерево OID
OID (Object Identifier) — цифровой идентификатор для получения SNMP-менеджером конкретной метрики.
Все скалярные (основные) метрики (например: версия системы, параметры хоста, статистика звонков) расположены в ветке .1 с OID: 1.3.6.1.4.1.54321.100.1. Для получения значения скалярных метрик достаточно использовать утилиту snmpget.
|
OID в таблице указаны относительно базового. Полный OID формируется следующим образом: <Базовый OID><OID метрики> Пример полного OID для загрузки CPU: |
|
1.3.6.1.4.1.54321.100 Базовый OID Тип метрики: хост / кластер Тип данных
│
├── .1 Скалярные метрики
│ ├── .1.x Версия системы
│ │ ├── .1 (OctetString) Версия IVA CS Хост текст
│ │ ├── .2 (OctetString) Патч Хост текст
│ │ └── .3 (OctetString) Дата сборки Хост текст
│ ├── .2.x Параметры хоста
│ │ ├── .1 (OctetString) Статус хоста Хост текст
│ │ ├── .2 (OctetString) Имя хоста Хост текст
│ │ ├── .3 (OctetString) IP-адрес Хост текст
│ │ ├── .4 (Counter64) Uptime (сек) Хост числовое целое
│ │ ├── .5 (OpaqueDouble) Загрузка CPU (%) Хост числовое с плавающей точкой
│ │ ├── .6 (Counter64) Используемая память (байт) Хост числовое целое
│ │ └── .7 (Counter64) Общая память (байт) Хост числовое целое
│ ├── .3.x Хранилище
│ │ └── .1 (Counter64) Размер файлов (байт) Хост числовое целое
│ ├── .4.x Статистика звонков
│ │ ├── .1 (Counter64) Количество всех RTP-пакетов Кластер числовое целое
│ │ └── .2 (Counter64) Количество потерянных RTP-пакетов Кластер числовое целое
│ ├── .5.x Активные звонки
│ │ └── .1 (Counter64) Текущее количество звонков Кластер числовое целое
│ ├── .6.x Сервисы
│ │ ├── .1 (Counter64) Количество запущенных сервисов Хост числовое целое
│ │ └── .2 (OctetString) Информация о сервисах Хост JSON
│ └── .7.x Шлюзы
│ ├── .1 (Counter64) Количество шлюзов Кластер числовое целое
│ └── .2 (OctetString) Информация о шлюзах Кластер JSON
Получение данных SNMP с помощью snmpget и snmpwalk
Для выполнения запросов необходимо использовать командную строку на хосте, где установлены утилиты snmpget и snmpwalk.
При использовании настроек по умолчанию:
-
для получения одной метрики:
snmpget -v3 \ -n public \ -u ivasw \ -l authPriv \ -a SHA256 -A 'ivaswSTrP@SSWRD' \ -x AES256 -X 'ivaswSTrP@SSWRD' \ <HOST_IVA_CS>:<PORT> \ 1.3.6.1.4.1.54321.100<OID> -
для получения всех метрик:
snmpwalk -v3 \ -n public \ -u ivasw \ -l authPriv \ -a SHA256 -A 'ivaswSTrP@SSWRD' \ -x AES256 -X 'ivaswSTrP@SSWRD' \ <HOST_IVA_CS>:<PORT> \ 1.3.6.1.4.1.54321.100
Параметры команд:
| Маркер | Значение | Описание |
|---|---|---|
|
Версия протокола SNMPv3 |
|
|
Контекстный идентификатор запроса |
|
|
|
Имя пользователя — из параметра snmp.user_name |
|
|
Используемый уровень безопасности (аутентификация + шифрование) |
|
|
Протокол аутентификации — из параметра snmp.authentication_protocol |
|
|
Пароль аутентификации — из параметра snmp.authentication_passphrase |
|
|
Протокол шифрования — из параметра snmp.privacy_protocol |
|
|
Пароль шифрования — из параметра snmp.privacy_passphrase |
|
IP-адрес хоста сервера телефонии IVA CS, на котором выполняется запрос |
|
|
Порт, на котором SNMP-сервер обрабатывает запросы — из параметра snmp.address |
|
|
|
OID метрики из дерева OID |
Примеры запросов и ответов
| При вводе некорректных данных запрос будет отклонен |
-
имя хоста
# Запрос snmpget -v3 \ -n public \ -u ivasw \ -l authPriv \ -a SHA256 -A 'ivaswSTrP@SSWRD' \ -x AES256 -X 'ivaswSTrP@SSWRD' \ 10.0.207.151:9012 \ 1.3.6.1.4.1.54321.100.1.2.2# Ответ SNMPv2-SMI::enterprises.54321.100.1.2.2 = STRING: "ivacs0" -
загрузка CPU
# Запрос snmpget -v3 \ -n public \ -u ivasw \ -l authPriv \ -a SHA256 -A 'ivaswSTrP@SSWRD' \ -x AES256 -X 'ivaswSTrP@SSWRD' \ 10.0.207.151:9012 \ 1.3.6.1.4.1.54321.100.1.2.5# Ответ SNMPv2-SMI::enterprises.54321.100.1.2.5 = Opaque: Float: 12.500000 -
количество активных звонков
# Запрос snmpget -v3 \ -n public \ -u ivasw \ -l authPriv \ -a SHA256 -A 'ivaswSTrP@SSWRD' \ -x AES256 -X 'ivaswSTrP@SSWRD' \ 10.0.207.151:9012 \ 1.3.6.1.4.1.54321.100.1.5.1# Ответ SNMPv2-SMI::enterprises.54321.100.1.5.1 = Counter64: 3
| Информация собирается не мгновенно, а периодически — раз в минуту (базовая настройка) |
Настройка и использование Zabbix
| Более подробно про работу с Zabbix — официальная документация Zabbix |
-
войти в Zabbix и авторизоваться под собственными учетными данными пользователя:
-
создать новый хост:
Перейти к разделу Мониторинг (Monitoring) → Открыть вкладку Узлы сети (Hosts) → Нажать кнопку Создать узел сети (Create host) → Новый узел сети (New host) → Вкладка Узел сети (Host) -
настроить параметры хоста:
-
поле Имя узла сети (Host name): ввести уникальное имя хоста, например, iva_cs
-
поле Группы узлов сети (Host groups): выбрать группу хостов сети, к которой будет принадлежать добавляемый хост, например, Testing
-
секция Интерфейсы: добавить используемый интерфейс — нажать кнопку Добавить → выбрать SNMP:
-
поле IP адрес: ввести IP-адрес хоста — сервера телефонии IVA CS, например,
10.0.207.51 -
поле Подключаться через: выбрать IP — подключение к хосту с использованием IP-адреса
-
поле Порт: ввести порт, на котором SNMP-сервер обрабатывает запросы, например,
9012 -
поле Версия SNMP: выбрать SNMPv3 — версия используемого SNMP
-
поле Максимальное количество повторений (Max repetition count): ввести
5— количество повторений собственных массовых запросов SNMP (по умолчанию10) -
поле Имя контекста (Context name): ввести
public -
поле Имя безопасности (Security name): ввести
ivasw -
поле Уровень безопасности (Security level): выбрать authPriv
-
поле Протокол аутентификации (Authentication protocol): выбрать SHA256
-
поле Пароль аутентификации (Authentication passphrase): ввести
ivaswSTrP@SSWRD -
поле Протокол безопасности (Privacy protocol): выбрать AES256
-
поле Ключевая фраза безопасности (Privacy passphrase): ввести
ivaswSTrP@SSWRD -
поле Использование объединенных запросов (Use combined requests): установить флаговую кнопку
-
-
поле Наблюдение через (Monitored by): выбрать Сервер
-
поле Активировано (Enabled): установить флаговую кнопку
-
нажать кнопку Добавить (Add)
-
-
проверить доступность:
Перейти к разделу Мониторинг (Monitoring) → Открыть вкладку Узлы сети (Hosts) → Название добавленного хоста: столбец Доступность / Availability → SNMP: зеленый (мониторинг хоста доступен) / красный (мониторинг хоста не доступен) -
добавить элемент данных:
Перейти к разделу Мониторинг (Monitoring) → Открыть вкладку Узлы сети (Hosts) → Нажать на название добавленного хоста → Нажать Элементы данных (Items) → Элементы данных (Items)→ Нажать кнопку Создать элемент данных (Create item) → Новый элемент данных (New item) → Вкладка Элемент данных (Item) -
настроить параметра элемента данных:
-
поле Имя (Name): ввести название элемента данных, например
test.CS.Calls -
поле Тип (Type): выбрать тип элемента данных — SNMP агент (SNMP agent)
-
поле Ключ (Key): ввести ключ элемента данных, например
test.cs.active_calls -
поле Тип информации (Type of information): выбрать тип данных, например, Числовой (с плавающей точкой) (Numeric (float)) (выбор типа зависит от типа данных выбранной метрики из дерева OID — колонка Тип)
-
поле Интерфейс узла сети (Host interface): выбрать интерфейс хоста — в формате <HOST_IVA_CS>:<PORT>
-
поле SNMP OID: ввести OID, например
1.3.6.1.4.1.54321.100.1.5.1 -
поле Интервал обновления (Update interval): ввести
1m -
секция Пользовательские интервалы (Custom intervals):
-
поле Тип (Type): выбрать Переменный (Flexible)
-
-
поле История (History): выбрать Хранить до (Store up to) и указать
1d -
поле Динамика изменений (Trends): выбрать Хранить до (Store up to) и указать
365d -
поле Активировано (Enabled): установить флаговую кнопку
-
нажать кнопку Добавить (Add)
-
Для визуализации элементов данных (построения графиков) необходимо:
Перейти к разделу Мониторинг (Monitoring) →
Открыть вкладку Узлы сети (Hosts) →
В строке добавленного хоста нажать Графики →
Настроить параметры отображения (выбрать нужные метрики и период отображения)
Пример возможной визуализации:
Настройка SNMP Trap
SNMP Trap используется для отправки из IVA CS в систему мониторинга уведомлений о возникающих инцидентах. В примере ниже получателем уведомлений является Zabbix.
| Отправка trap происходит только при создании нового инцидента. Если активный инцидент с таким ключом уже существует, повторное событие обновляет его счетчик, но новый trap не отправляется |
Настройка IVA CS
Чтобы настроить отправку уведомлений по SNMP Trap, необходимо:
-
перейти в раздел Настройки → вкладка Системные настройки → в строке Поиск ввести swl_monitor
-
указать параметры SNMP Trap для сервиса swl_monitor:
Ключ настройки Тип Пример значения Описание Текст
10.0.206.83IP-адрес или DNS-имя получателя SNMP Trap
Int 64
162UDP-порт получателя SNMP Trap
Текст
v3Версия протокола отправки уведомлений
Текст
ivaswИмя пользователя SNMPv3 Trap
Текст
8000000001020304Уникальный идентификатор Engine ID отправителя SNMPv3 в формате hex
Текст
MD5Протокол аутентификации SNMPv3 Trap
Текст
ivaswSTrP@SSWRDПароль аутентификации SNMPv3 Trap
Текст
AESПротокол шифрования SNMPv3 Trap
Текст
ivaswSTrP@SSWRDПароль шифрования SNMPv3 Trap
Bool
trueВключить отправку уведомлений по SNMP Trap
Значения в таблице приведены для примера. Параметры аутентификации и шифрования в IVA CS и на стороне получателя должны совпадать -
перезапустить сервис swl_monitor на хостах кластера, на которых должны применяться актуальные настройки SNMP Trap
|
SNMP Trap отправляется только при создании нового инцидента.
Увеличение счетчика уже существующего активного или подтвержденного
инцидента не приводит к повторной отправке уведомления. Перед повторной проверкой необходимо перевести ранее созданный инцидент в статус Решенный |
Настройка и проверка Zabbix
На стороне Zabbix должен быть установлен и настроен zabbix-snmptrap-worker. В его настройках необходимо указать значения, соответствующие параметрам IVA CS:
-
engine_id:snmp.trap_engine_id -
пароль аутентификации:
snmp.trap_auth_pass -
пароль шифрования:
snmp.trap_priv_pass
Чтобы проверить получение уведомлений по SNMP Trap, необходимо:
-
привязать к настроенному узлу сети шаблон Generic by SNMP
-
перейти в раздел Сбор данных (Data collection) → Узлы сети (Hosts) → нажать на имя настроенного узла → Элементы данных (Items)
-
найти элемент данных Generic by SNMP: SNMP traps (fallback)
-
открыть меню ⋯ слева от элемента данных → выбрать Последние данные (Latest data)
-
в таблице последних данных в столбце Информация (Info) нажать История (History)
В истории отображаются уведомления, переданные из IVA CS в Zabbix по SNMP Trap.
Перечень событий и состав уведомлений
Ниже описаны уведомления об остановке сервиса, ошибке синхронизации с IVA ID и приближении к лицензионному лимиту абонентов. Перечень не охватывает все инциденты IVA CS.
| Событие | Ключ и классификация | Передаваемые сведения |
|---|---|---|
Остановка сервиса |
Префикс |
В |
Ошибка синхронизации с IVA ID |
Префикс |
Ключ содержит идентификатор источника авторизации.
В |
Приближение к лицензионному лимиту абонентов |
|
При добавлении абонента проверяется остаток лицензионного лимита.
Инцидент создается, если остается менее 2 % от разрешенного количества абонентов.
В |
В уведомлениях об остановке сервиса и ошибке синхронизации с IVA ID используется один OID уведомления: 1.3.6.1.4.1.54321.100.2.0.1.
Он передается как значение snmpTrapOID.0.
Событие определяется по данным инцидента, прежде всего по полю key.
| OID параметра | Содержимое |
|---|---|
|
Данные инцидента в формате JSON |
|
Уровень важности инцидента в виде строки.
В приведенных событиях используются значения |
| Поле | Описание |
|---|---|
|
Ключ инцидента. Содержит обозначение события и данные, по которым различаются инциденты этого события |
|
Тип инцидента.
В приведенных событиях используются значения |
|
Уровень важности инцидента.
В приведенных событиях используются значения |
|
Краткий заголовок инцидента, например |
|
Подробное описание события. В зависимости от события содержит параметры сервиса, причину ошибки или сведения об использовании лимита |
|
Имя хоста, с которым связан инцидент. Поле отсутствует, если имя хоста не задано |
|
Имя сервиса — источника инцидента |
Значения перечисленных полей передаются строками.
В выводе snmptrapd JSON с кириллицей может отображаться как Hex-STRING — последовательность шестнадцатеричных значений байтов.
Для чтения JSON необходимо декодировать эти байты как текст в кодировке UTF-8.
{
"key": "registry.service_stopped.swl_report.LfconLrFN2.8776",
"type": "system",
"severity": "warning",
"title": "Остановлен сервис",
"message": "service stopped: service=swl_report, instance_id=LfconLrFN2, pid=8776",
"hostname": "admin_cs",
"source": "swl_registry"
}
В этом примере остановлен экземпляр сервиса swl_report на хосте admin_cs.
Идентификатор экземпляра — LfconLrFN2, идентификатор процесса — 8776.
Уровень важности warning также передается отдельным параметром 1.3.6.1.4.1.54321.100.2.1.2.











