Сбор статистических и информационных данных Платформы IVA MCU

Сбор статистических и информационных данных необходим для более эффективного управления Платформой IVA MCU. Сбор данных возможен через:

Сбор данных с помощью VictoriaMetrics

В Платформе IVA MCU в качестве встроенной системы мониторинга используется VictoriaMetrics, метрики из которой можно использовать и просматривать. В метриках VictoriaMetrics содержатся все данные, которые находятся в разделе Мониторинг web-панели администрирования. Для сбора метрик на внешнем сервере необходимо выполнить следующие действия:

  1. установить Prometheus и VictoriaMetrics

  2. в Prometheus: настроить хранение метрик Prometheus в VictoriaMetrics

  3. в Prometheus: настроить Federation

    В match[] можно указать следующие параметры (job) Платформы IVA MCU: victoria, node, ivcs

    Пример настройки Federation:

    - job_name: 'federate'
    scrape_interval: 15s # Интервал сбора метрик
    honor_labels: true # Сохранять оригинальные метки
    metrics_path: /federate # Путь к эндпойнту федерации
    params:
    match[]: # Фильтр для выбора метрик
    - '{job="victoria"}'
    - '{job="node"}'
    - '{job="ivcs"}'
  4. в Prometheus: чтобы всем метрикам, собираемым с серверов IVA MCU, задать один IP-адрес, необходимо настроить метки labels для целевых объектов targets, в которых указан сервер Платформы IVA MCU, и metric_relabel_configs

    Пример настройки:

    static_configs:
    - targets: ['<ip_address_IVA>:11650'] # Список targets
    labels: # Метки для всех метрик targets в этом блоке
    new_label: <label_name>
    metric_relabel_configs: # Правила перемаркировки метрик
    - source_labels: [new_label, instance]
    target_label: instance
    regex: '(.*)<label_name>(.*);(.*)localhost:(.*)'
    replacement: '<ip_address_IVA>:$4'
    action: replace

    где: <ip_address_IVA> — IP-адрес Платформы IVA MCU

    <label_name> — имя лейбла (метки), используемое для добавления метаданных к метрикам

На стороне Платформы IVA MCU доступ к метрикам VictoriaMetrics осуществляется через порт 11650 TCP, для открытия которого необходимо:

  1. открыть файл /etc/iptables-config/ipv4/filter.d/0001-custom, выполнив команду:

    sudo nano /etc/iptables-config/ipv4/filter.d/0001-custom
  2. добавить в файл /etc/iptables-config/ipv4/filter.d/0001-custom следующую запись:

    -A INPUT -p tcp -m tcp –dport 11650 –-source IP_ADDRESSES -m comment
    --comment "VictoriaMetrics" -j ACCEPT

    где IP_ADDRESSES — IP-адреса, с которых разрешен доступ до VictoriaMetrics

  3. сохранить изменения и закрыть файл /etc/iptables-config/ipv4/filter.d/0001-custom

  4. перезапустить сервис iptables-config.service, выполнив команду:

    sudo systemctl restart iptables-config.service
  5. проверить статус сервиса iptables-config.service, выполнив команду:

    sudo systemctl status iptables-config.service

    Пример вывода:

    Loaded: loaded (/lib/systemd/system/iptables-config.service; enabled; vendor preset: enabled)
    Active: active (exited) since Mon 2024-12-16 15:23:33 MSK; 56s ago
    Process: 8473 ExecStart=/usr/sbin/iptables-config start (code=exited, status=0/SUCCESS)
    Main PID: 8473 (code=exited, status=0/SUCCESS)
    CPU: 16ms
    
    Dec 16 15:23:33 ivcs-main systemd[1]: iptables-config.service: Succeeded.
    Dec 16 15:23:33 ivcs-main systemd[1]: Stopped iptables persister.
    Dec 16 15:23:33 ivcs-main systemd[1]: Starting iptables persister...
    Dec 16 15:23:33 ivcs-main systemd[1]: Finished iptables persister.
  6. убедиться, что на настраиваемом сервере присутствуют записи с портом 11650 TCP с разрешенными IP-адресами, выполнив команду:

    sudo iptables -S

    В выводе команды должны присутствовать строки с указанием порта 11650 TCP и перечнем IP-адресов, с которых разрешен доступ к VictoriaMetrics.

    Пример вывода команды:

    -A INPUT -s IP_ADDRESS -p tcp -m tcp --dport 11650 -m comment --comment "VictoriaMetrics" -j ACCEPT

    где IP_ADDRESS — IP-адрес, с которого разрешен доступ до VictoriaMetrics

  7. сохранить изменения, выполнив команду:

    Если Платформа IVA MCU установлена на сервер с ОС Astra Linux, то команду sudo iva-cli live save-changes выполнять не нужно
    sudo iva-cli live save-changes

Сбор данных с помощью syslog

Платформа IVA MCU позволяет отправлять события журналов аудита и запросов в несколько SIEM-систем. Чтобы отправлять события журналов, необходимо настроить SIEM-коннекторы в web-панели администрирования.

SIEM-коннекторы можно настраивать для разных типов коннекторов, разных уровней логирования журнала аудита и для разных типов событий.

Более подробная информация:

  • настройка SIEM-коннекторов в разделе SIEM-коннекторы

  • формат syslog-сообщений в Платформе IVA MCU — в документе Формат syslog-сообщений

Сбор данных с помощью Zabbix-агента

Zabbix-агенты разворачиваются на наблюдаемых целях для активного мониторинга локальных ресурсов и приложений (статистика жестких дисков, памяти, процессоров и т. д.). Информацию о метриках, собираемых Zabbix-агентом, можно получить в официальной документации Zabbix.

Настройка Zabbix-агента в Платформе IVA MCU описана в разделе Настройка Zabbix для мониторинга Платформы.

В Платформе IVA MCU, начиная с версии 23.0, используется Zabbix-agent 2 взамен ранее используемого Zabbix-agent, который был удален из системы

Переход на Zabbix-agent2 описан в соответствующем разделе

Рекомендуется настраивать Zabbix через web-панель администрирования

Проверка версии Zabbix приведена в соответствующем разделе

Сбор данных с помощью SNMP

Платформа IVA MCU поддерживает интеграцию с внешними системами мониторинга по протоколу SNMP (1−3 версии). По данному протоколу внешняя система может собирать часть данных мониторинга из Платформы IVA MCU, а Платформа IVA MCU может отправлять определенные события (traps) во внешнюю систему.

Информация о настройке SNMP приведена в разделе Настройка SNMP.

Перечень доступных MIB:

  • IVCS-MIB — содержит информацию, специфичную для Платформы IVA MCU. Актуальная информация о IVCS-MIB и документация расположена в файле /usr/share/snmp/mibs/IVCS-MIB. В данном MIB описываются все MIB объекты (objects) и определенные события (traps), специфичные для Платформы IVA MCU

  • IF-MIB — содержит информацию о сетевых интерфейсах

  • HOST-RESOURCES-MIB — содержит информацию о ресурсах хоста (CPU, память и т. д.)

  • информация о других MIB доступна в директории /usr/share/snmp/mibs

Описание IVCS-MIB

IO-информация о каждом дисковом устройстве

Название OID метрики со значением Описание Дополнительная информация

disksTableEntry

.1.2.643.6.46.1.1.2.1.1.2

Имя дискового устройства

-R-- String deviceName(2)

Size: 1..32

.1.2.643.6.46.1.1.2.1.1.3

Количество объединенных запросов на чтение, которые были поставлены в очередь, в секунду

-R-- Integer32 readRequestsMergedPerSecond(3) Textual Convention: Float

.1.2.643.6.46.1.1.2.1.1.4

Количество объединенных запросов на запись, которые были поставлены в очередь, в секунду

-R-- Integer32 writeRequestsMergedPerSecond(4) Textual Convention: Float

.1.2.643.6.46.1.1.2.1.1.5

Количество (после объединения) выполняемых запросов на чтение в секунду

-R-- Integer32 readRequestsCompletedPerSecond(5) Textual Convention: Float

.1.2.643.6.46.1.1.2.1.1.6

Количество (после объединения) выполняемых запросов на запись в секунду

-R-- Integer32 writeRequestsCompletedPerSecond(6) Textual Convention: Float

.1.2.643.6.46.1.1.2.1.1.7

Количество считываемых секторов в секунду

-R-- Integer32 sectorsReadPerSecond(7) Textual Convention: Float

.1.2.643.6.46.1.1.2.1.1.8

Количество записываемых секторов в секунду

-R-- Integer32 sectorsWrittenPerSecond(8) Textual Convention: Float

.1.2.643.6.46.1.1.2.1.1.9

Средний размер (в секторах) выданных запросов

-R-- Integer32 averageSizeOfRequests(9) Textual Convention: Float

.1.2.643.6.46.1.1.2.1.1.10

Средняя длина очереди выданных запросов

-R-- Integer32 averageQueueLength(10) Textual Convention: Float

.1.2.643.6.46.1.1.2.1.1.11

Среднее время (в миллисекундах) обслуживания поступающих запросов ввода-вывода.

Включает время нахождения запросов в очереди и время их обслуживания

-R-- Integer32 averageWaitTime(11) Textual Convention: Float

.1.2.643.6.46.1.1.2.1.1.12

Среднее время (в миллисекундах) обслуживания поступающих запросов на чтение.

Включает время нахождения запросов в очереди и время их обслуживания

-R-- Integer32 averageWaitTimeRead(12) Textual Convention: Float

.1.2.643.6.46.1.1.2.1.1.13

Среднее время (в миллисекундах) обслуживания поступающих запросов на запись.

Включает время нахождения запросов в очереди и время их обслуживания

-R-- Integer32 averageWaitTimeWrite(13) Textual Convention: Float

.1.2.643.6.46.1.1.2.1.1.14

Среднее время обслуживания (в миллисекундах) для запросов ввода-вывода, которые были отправлены устройству.

Внимание! Данное поле недостоверно и будет удалено в будущей версии sysstat

-R-- Integer32 averageServiceTime(14) Textual Convention: Float

.1.2.643.6.46.1.1.2.1.1.15

Процент процессорного времени, в течение которого к устройству были направлены запросы ввода-вывода (использование пропускной способности устройства).

Приближение значения к 100 %, может указывать на возможность возникновения узких мест в производительности

-R-- Integer32 utilization(15) Textual Convention: Float

Информация об основных процессах IVA MCU

Название OID метрики со значением Описание Дополнительная информация

processesTableEntry

.1.2.643.6.46.1.1.3.1.1.2

Справочный индекс для каждой группы отслеживаемых процессов (внутренний)

-R-- EnumVal processId(2) Textual Convention: IvaProcess Values: audiodecoder(1), audioencoder(2), audiomixer(3), conversion(4), coturn(5), dtmfgenerator(6), filesink(7), filesource(8), imagesource(9), imp(10), ivcsserver(11), logger(12), media(13), monitoring(14), nginx(15), nginxmedia(16), voip(17), postgres(18), registry(19), rtmpsink(20), rtmpsource(21), scvideodecoder(22), scvideoencoder(23), videocomposer(24), videoconverter(25), videoencoder(26), vncsink(27), vvoiprtpgw(28), webrtcrtpgw2(29)

.1.2.643.6.46.1.1.3.1.1.3

Имя процесса

-R-- String processName(3) Size: 1..32

.1.2.643.6.46.1.1.3.1.1.4

Текущее количество запущенных процессов с указанным именем и всеми их дочерними процессами

-R-- Gauge processesCount(4) Range: 0..65535

.1.2.643.6.46.1.1.3.1.1.5

Текущее количество потоков, принадлежащих процессу

-R-- Gauge threadsCount(5) Range: 0..65535

.1.2.643.6.46.1.1.3.1.1.6

Количество открытых файловых дескрипторов (FDs)

-R-- Gauge fds(6) Range: 0..65535

.1.2.643.6.46.1.1.3.1.1.7

Общее количество виртуальной памяти, выделенной запущенными сущностями этого процесса и всеми его дочерними процессами

-R-- Integer32 virtualMemoryUsed(7) Textual Convention: KB Range: 0..2147483647

.1.2.643.6.46.1.1.3.1.1.8

Реальная память, выделенная запущенными сущностями этого процесса и всеми его дочерними процессами

-R-- Integer32 rssMemoryUsed(8) Textual Convention: KB Range: 0..2147483647

.1.2.643.6.46.1.1.3.1.1.9

Количество основных ошибок страниц

-R-- Counter pageFaults(9)

.1.2.643.6.46.1.1.3.1.1.10

Байты, считываемые процессом в секунду

-R-- Gauge readBytesPerSec(10) Range: 0..65535

.1.2.643.6.46.1.1.3.1.1.11

Байты, записываемые процессом в секунду

-R-- Gauge writeBytesPerSec(11) Range: 0..65535

.1.2.643.6.46.1.1.3.1.1.12

Общее использование процессора запущенными сущностями этого процесса и всеми его дочерними процессами. Измеряется в процентах. Одно виртуальное ядро равно 100 %

-R-- Unsigned cpuUsage(12) Textual Convention: Percent

.1.2.643.6.46.1.1.3.1.1.13

Индикатор здоровья процесса

-R-- EnumVal processErrorFlag(13) Textual Convention: ErrorFlag Values: noError(0), ProcessNotRunning(1)

Информация и метрики, специфичные для java-процессов

Название OID метрики со значением Описание Дополнительная информация

javaServicesTableEntry

.1.2.643.6.46.1.1.5.1.1.2

Ссылочный индекс для каждого отслеживаемого java-процесса

-R-- EnumVal javaServiceId(2) Textual Convention: IvaProcess Values: audiodecoder(1), audioencoder(2), audiomixer(3), conversion(4), coturn(5), dtmfgenerator(6), filesink(7), filesource(8), imagesource(9), imp(10), ivcsserver(11), logger(12), media(13), monitoring(14), nginx(15), nginxmedia(16), voip(17), postgres(18), registry(19), rtmpsink(20), rtmpsource(21), scvideodecoder(22), scvideoencoder(23), videocomposer(24), videoconverter(25), videoencoder(26), vncsink(27), vvoiprtpgw(28), webrtcrtpgw2(29)

.1.2.643.6.46.1.1.5.1.1.3

Имя java-сервиса

-R-- String javaServiceName(3) Size: 1..32

.1.2.643.6.46.1.1.5.1.1.4

Объем (в килобайтах) буферного пула в виртуальной машине Java (JVM)

-R-- Integer32 bufferPoolCapacity(4) Textual Convention: KB Range: 0..2147483647

.1.2.643.6.46.1.1.5.1.1.5

Объем (в килобайтах) используемого буферного пула в виртуальной машине Java (JVM)

-R-- Integer32 bufferPoolUsed(5) Textual Convention: KB Range: 0..2147483647

.1.2.643.6.46.1.1.5.1.1.6

Секунды, потраченные на сборку мусора в виртуальной машине Java (JVM)

-R-- Counter gcCollectionSeconds(6)

.1.2.643.6.46.1.1.5.1.1.7

Используемые килобайты данной области памяти в виртуальной машине Java (JVM)

-R-- Integer32 memoryBytesUsed(7) Textual Convention: KB Range: 0..2147483647

.1.2.643.6.46.1.1.5.1.1.8

Текущее количество потоков в виртуальной машине Java (JVM)

-R-- Gauge threadsCurrent(8) Range: 0..65535

Информация о версиях основных компонент (пакетов) Платформы IVA MCU

Название OID метрики со значением Описание Дополнительная информация

moduleVersionTableEntry

.1.2.643.6.46.1.1.6.1.1.2

Абсолютный индекс модуля

-R-- EnumVal moduleId(2) Textual Convention: IvaModule Values: conversion(1), exim(2), filestorage(3), gnugk(4), ivcs-server(5), media(6), monitoring(7), nginx(8), nginx-media(9), ntp(10), postgresql(11), registry(12), coturn(13), voip-signalling-gateway(14), system(15)

.1.2.643.6.46.1.1.6.1.1.3

Название модуля

-R-- String moduleName(3) Size: 1..32

.1.2.643.6.46.1.1.6.1.1.4

Название пакета

-R-- String packageName(4) Size: 1..32

.1.2.643.6.46.1.1.6.1.1.5

Версия пакета

-R-- String version(5) Size: 1..32

Метрики по утилизации параметров лицензии

Название OID метрики со значением Описание Дополнительная информация

ivcsServer/licenseUsage

.1.2.643.6.46.1.2.3.1

Использование универсальных соединений

-R-- Gauge

.1.2.643.6.46.1.2.3.2

Использование универсальных WebRTC-соединений

-R-- Gauge

.1.2.643.6.46.1.2.3.3

Использование универсальных соединений конференций

-R-- Gauge

.1.2.643.6.46.1.2.3.4

Использование соединений WebRTC-конференций

-R-- Gauge

.1.2.643.6.46.1.2.3.5

Использование дополнительных докладчиков WebRTC-вебинаров

-R-- Gauge

.1.2.643.6.46.1.2.3.6

Использование WebRTC-соединений вебинаров

-R-- Gauge

.1.2.643.6.46.1.2.3.7

Использование лицензированных записей

-R-- Gauge

.1.2.643.6.46.1.2.3.8

Использование соединений WebRTC-звонков

-R-- Gauge

.1.2.643.6.46.1.2.3.9

Использование соединений VoIP-звонков

-R-- Gauge

Информация о доменах

Название OID метрики со значением Описание Дополнительная информация

ivcsServerDomainTableEntry

.1.2.643.6.46.1.2.4.1.2

Имя домена

-R-- String domainName(2) Size: 1..64

.1.2.643.6.46.1.2.4.1.3

Число активных конференций в домене в данный момент

-R-- Gauge domainConferences(3) Range: 0..65535

.1.2.643.6.46.1.2.4.1.4

Число активных web-пользователей в домене в данный момент

-R-- Gauge domainWebUsers(4) Range: 0..65535

.1.2.643.6.46.1.2.4.1.5

Число активных SIP- / H.323-пользователей в домене в данный момент

-R-- Gauge domainVVoIPUsers(5) Range: 0..65535

.1.2.643.6.46.1.2.4.1.6

Число мгновенных сообщений в минуту

-R-- Gauge domainMessagesPerMinute(6) Range: 0..65535

.1.2.643.6.46.1.2.4.1.7

Число активных звонков в чате в минуту

-R-- Gauge domainChatCalls(7) Range: 0..65535

.1.2.643.6.46.1.2.4.1.8

Число зарегистрированных пользователей

-R-- Gauge domainRegisteredUsers(8) Range: 0..65535

Метрики модуля voip-signalling-gateway

Название OID метрики со значением Описание Дополнительная информация

sgwService

.1.2.643.6.46.1.8.1

Число активных B2B-звонков

-R-- Gauge sgwB2BCalls(1)

.1.2.643.6.46.1.8.2

Число активных SIP-звонков

-R-- Gauge sgwSipCalls(2)

.1.2.643.6.46.1.8.3

Число активных H323-вызовов

-R-- Gauge sgwH323Calls(3)

.1.2.643.6.46.1.8.4

Число активных MSSIP-вызовов

-R-- Gauge sgwMsSipCalls(4)

.1.2.643.6.46.1.8.5

Число активных SIP-регистраций

-R-- Gauge sgwSipRegistrations(5)

.1.2.643.6.46.1.8.6

Число активных H323-регистраций

-R-- Gauge sgwH323Registrations(6)

.1.2.643.6.46.1.8.7

Число активных SIP-диалогов

-R-- Gauge sgwSipDialogs(7)

.1.2.643.6.46.1.8.8

Число текущих активных SIP-диалогов

-R-- Gauge sgwSipEarlyDialogs(8)

.1.2.643.6.46.1.8.9

Число активных транзакций SIP-клиента

-R-- Gauge sgwSipClientTransactions(9)

.1.2.643.6.46.1.8.10

Число активных транзакций SIP-сервера

-R-- Gauge sgwSipServerTransactions(10)

Полезные команды

  1. чтобы просмотреть MIB в виде дерева:

    • для IVCS-MIB выполнить команду:

      snmptranslate -Tp IVCS-MIB::ivcs

      Пример вывода команды:

      +--ivcs(46)
         |
         +--services(1)
         |  |
         |  +--systemService(1)
         |  |  |
         |  |  +--systemEvents(1)
         |  |  |  |
         |  |  |  +--generalNotifications(0)
         |  |  |     +--processDownEvent(1)
         |  |  |
         |  |  +--iostat(2)
         |  |  |  |
         |  |  |  +--disksTable(1)
         |  |  |     |
         |  |  |     +--disksTableEntry(1)
         |  |  |        |  Index: deviceIndex
         |  |  |        |
         |  |  |        +-- ---- Unsigned  deviceIndex(1)
         |  |  |        |        Range: 1..65535
         |  |  |        +-- -R-- String    deviceName(2)
         |  |  |        |        Size: 1..32
         |  |  |        +-- -R-- Integer32 readRequestsMergedPerSecond(3)
         |  |  |        |        Textual Convention: Float
         |  |  |        +-- -R-- Integer32 writeRequestsMergedPerSecond(4)
         |  |  |        |        Textual Convention: Float
         |  |  |        +-- -R-- Integer32 readRequestsCompletedPerSecond(5)
         |  |  |        |        Textual Convention: Float
         |  |  |        +-- -R-- Integer32 writeRequestsCompletedPerSecond(6)
         |  |  |        |        Textual Convention: Float
         |  |  |        +-- -R-- Integer32 sectorsReadPerSecond(7)
         |  |  |        |        Textual Convention: Float
         |  |  |        +-- -R-- Integer32 sectorsWrittenPerSecond(8)
         |  |  |        |        Textual Convention: Float
         |  |  |        +-- -R-- Integer32 averageSizeOfRequests(9)
         |  |  |        |        Textual Convention: Float
         |  |  |        +-- -R-- Integer32 averageQueueLength(10)
         |  |  |        |        Textual Convention: Float
         |  |  |        +-- -R-- Integer32 averageWaitTime(11)
         |  |  |        |        Textual Convention: Float
         |  |  |        +-- -R-- Integer32 averageWaitTimeRead(12)
         |  |  |        |        Textual Convention: Float
         |  |  |        +-- -R-- Integer32 averageWaitTimeWrite(13)
         |  |  |        |        Textual Convention: Float
         |  |  |        +-- -R-- Integer32 averageServiceTime(14)
         |  |  |        |        Textual Convention: Float
         |  |  |        +-- -R-- Integer32 utilization(15)
         |  |  |                 Textual Convention: Float
         |  |  |
         |  |  +--processes(3)
         |  |  |  |
         |  |  |  +--processesTable(1)
         |  |  |     |
         |  |  |     +--processesTableEntry(1)
         |  |  |        |  Index: processIndex
         |  |  |        |
         |  |  |        +-- ---- Unsigned  processIndex(1)
         |  |  |        |        Range: 0..65535
         |  |  |        +-- -R-- EnumVal   processId(2)
         |  |  |        |        Textual Convention: IvaProcess
         |  |  |        |        Values: audiodecoder(1), audioencoder(2), audiomixer(3), conversion(4), coturn(5), dtmfgenerator(6), filesink(7), filesource(8), imagesource(9), imp(10), ivcsserver(11), logger(12), media(13), monitoring(14), nginx(15), nginxmedia(16), voip(17), postgres(18), registry(19), rtmpsink(20), rtmpsource(21), scvideodecoder(22), scvideoencoder(23), videocomposer(24), videoconverter(25), videoencoder(26), vncsink(27), vvoiprtpgw(28), webrtcrtpgw2(29)
         |  |  |        +-- -R-- String    processName(3)
         |  |  |        |        Size: 1..32
         |  |  |        +-- -R-- Gauge     processesCount(4)
         |  |  |        |        Range: 0..65535
         |  |  |        +-- -R-- Gauge     threadsCount(5)
         |  |  |        |        Range: 0..65535
         |  |  |        +-- -R-- Gauge     fds(6)
         |  |  |        |        Range: 0..65535
         |  |  |        +-- -R-- Integer32 virtualMemoryUsed(7)
         |  |  |        |        Textual Convention: KB
         |  |  |        |        Range: 0..2147483647
         |  |  |        +-- -R-- Integer32 rssMemoryUsed(8)
         |  |  |        |        Textual Convention: KB
         |  |  |        |        Range: 0..2147483647
         |  |  |        +-- -R-- Counter   pageFaults(9)
         |  |  |        +-- -R-- Gauge     readBytesPerSec(10)
         |  |  |        |        Range: 0..65535
         |  |  |        +-- -R-- Gauge     writeBytesPerSec(11)
         |  |  |        |        Range: 0..65535
         |  |  |        +-- -R-- Unsigned  cpuUsage(12)
         |  |  |        |        Textual Convention: Percent
         |  |  |        +-- -R-- EnumVal   processErrorFlag(13)
         |  |  |                 Textual Convention: ErrorFlag
         |  |  |                 Values: noError(0), ProcessNotRunning(1)
         |  |  |
         |  |  +--javaServices(5)
         |  |  |  |
         |  |  |  +--javaServicesTable(1)
         |  |  |     |
         |  |  |     +--javaServicesTableEntry(1)
         |  |  |        |  Index: javaServiceIndex
         |  |  |        |
         |  |  |        +-- ---- Unsigned  javaServiceIndex(1)
         |  |  |        |        Range: 0..65535
         |  |  |        +-- -R-- EnumVal   javaServiceId(2)
         |  |  |        |        Textual Convention: IvaProcess
         |  |  |        |        Values: audiodecoder(1), audioencoder(2), audiomixer(3), conversion(4), coturn(5), dtmfgenerator(6), filesink(7), filesource(8), imagesource(9), imp(10), ivcsserver(11), logger(12), media(13), monitoring(14), nginx(15), nginxmedia(16), voip(17), postgres(18), registry(19), rtmpsink(20), rtmpsource(21), scvideodecoder(22), scvideoencoder(23), videocomposer(24), videoconverter(25), videoencoder(26), vncsink(27), vvoiprtpgw(28), webrtcrtpgw2(29)
         |  |  |        +-- -R-- String    javaServiceName(3)
         |  |  |        |        Size: 1..32
         |  |  |        +-- -R-- Integer32 bufferPoolCapacity(4)
         |  |  |        |        Textual Convention: KB
         |  |  |        |        Range: 0..2147483647
         |  |  |        +-- -R-- Integer32 bufferPoolUsed(5)
         |  |  |        |        Textual Convention: KB
         |  |  |        |        Range: 0..2147483647
         |  |  |        +-- -R-- Counter   gcCollectionSeconds(6)
         |  |  |        +-- -R-- Integer32 memoryBytesUsed(7)
         |  |  |        |        Textual Convention: KB
         |  |  |        |        Range: 0..2147483647
         |  |  |        +-- -R-- Gauge     threadsCurrent(8)
         |  |  |                 Range: 0..65535
         |  |  |
         |  |  +--moduleVersion(6)
         |  |     |
         |  |     +--moduleVersionTable(1)
         |  |        |
         |  |        +--moduleVersionTableEntry(1)
         |  |           |  Index: moduleVersionIndex
         |  |           |
         |  |           +-- ---- Unsigned  moduleVersionIndex(1)
         |  |           |        Range: 0..65535
         |  |           +-- -R-- EnumVal   moduleId(2)
         |  |           |        Textual Convention: IvaModule
         |  |           |        Values: conversion(1), exim(2), filestorage(3), gnugk(4), ivcs-server(5), media(6), monitoring(7), nginx(8), nginx-media(9), ntp(10), postgresql(11), registry(12), coturn(13), voip-signalling-gateway(14), system(15)
         |  |           +-- -R-- String    moduleName(3)
         |  |           |        Size: 1..32
         |  |           +-- -R-- String    packageName(4)
         |  |           |        Size: 1..32
         |  |           +-- -R-- String    version(5)
         |  |                    Size: 1..32
         |  |
         |  +--ivcsServerService(2)
         |  |  |
         |  |  +--ivcsServerEvents(1)
         |  |  |  |
         |  |  |  +--ivcsServerNotifications(0)
         |  |  |
         |  |  +--ivcsServerStatistics(2)
         |  |  |
         |  |  +--ivcsServerDomainTable(4)
         |  |     |
         |  |     +--ivcsServerDomainTableEntry(1)
         |  |        |  Index: domainIndex
         |  |        |
         |  |        +-- ---- Unsigned  domainIndex(1)
         |  |        |        Range: 1..65535
         |  |        +-- -R-- String    domainName(2)
         |  |        |        Size: 1..64
         |  |        +-- -R-- Gauge     domainConferences(3)
         |  |        |        Range: 0..65535
         |  |        +-- -R-- Gauge     domainWebUsers(4)
         |  |        |        Range: 0..65535
         |  |        +-- -R-- Gauge     domainVVoIPUsers(5)
         |  |        |        Range: 0..65535
         |  |        +-- -R-- Gauge     domainMessagesPerMinute(6)
         |  |        |        Range: 0..65535
         |  |        +-- -R-- Gauge     domainChatCalls(7)
         |  |        |        Range: 0..65535
         |  |        +-- -R-- Gauge     domainRegisteredUsers(8)
         |  |                 Range: 0..65535
         |  |
         |  +--registryService(4)
         |  |
         |  +--impService(5)
         |  |
         |  +--postgresqlService(6)
         |  |
         |  +--nginxService(7)
         |  |
         |  +--sgwService(8)
         |     |
         |     +-- -R-- Gauge     sgwB2BCalls(1)
         |     +-- -R-- Gauge     sgwSipCalls(2)
         |     +-- -R-- Gauge     sgwH323Calls(3)
         |     +-- -R-- Gauge     sgwMsSipCalls(4)
         |     +-- -R-- Gauge     sgwSipRegistrations(5)
         |     +-- -R-- Gauge     sgwH323Registrations(6)
         |     +-- -R-- Gauge     sgwSipDialogs(7)
         |     +-- -R-- Gauge     sgwSipEarlyDialogs(8)
         |     +-- -R-- Gauge     sgwSipClientTransactions(9)
         |     +-- -R-- Gauge     sgwSipServerTransactions(10)
         |
         +--ivcsMIBAdminInfo(2)
            |
            +--ivcsMIBCompliances(2)
            |  |
            |  +--ivcsMIBCompliance(1)
            |
            +--ivcsMIBGroups(3)
               |
               +--generalNotificationsGroup(1)
               +--iostatGroup(2)
               +--processesGroup(3)
               +--ivcsServerDomainGroup(4)
               +--javaServicesGroup(5)
               +--moduleVersionGroup(6)
    • для IF-MIB выполнить команды:

      snmptranslate -Tp IF-MIB::ifMIBObjects
      snmptranslate -Tp IF-MIB::interfaces
    • для HOST-RESOURCES-MIB выполнить команду:

      snmptranslate -Tp HOST-RESOURCES-MIB::host
      Для других MIB также можно использовать команду snmptranslate
  1. для получения текущих значений метрик:

    • для SNMPv2 выполнить команду:

      snmpwalk -v 2c -c <community> <host> <oid>
      Если после выполнения команды snmpwalk отображается предупреждение No Such Object available on this agent at this OID, это значит, что данного OID не существует. Например, потому что он не был реализован
      Для получения значений метрик в виде таблицы вместо snmpwalk необходимо указать snmptable

      где: <community> — имя сообщества

      Чтобы задать имя сообщества для приема запросов SNMPv2, необходимо: Перейти в раздел Системные настройкиСекция Настройки SNMPПоле Имя сообществаВвести имя сообществаНажать кнопку Сохранить

      Чтобы задать имя сообщества для отправки SNMPv2 нотификаций, необходимо: Перейти в раздел Системные настройкиСекция Настройки SNMPv2 нотификацийПоле Имя сообществаВвести имя сообществаНажать кнопку Сохранить

      <host> — IP-адрес или доменное имя сервера Платформы IVA MCU

      <oid> — номер идентификатора объекта в дереве MIB

      Чтобы вывести все метрики, необходимо указать .1

      Чтобы вывести метрики только для IVCS-MIB, необходимо указать .1.2.643.6.46.1

      Также можно указать запись вида: <название_MIB>::<название_OID>, например IVCS-MIB::disksTableEntry — для вывода информации о дисковых устройствах

    • для SNMPv3 выполнить команду:

      snmpwalk -v 3 -u <username> -a <auth_protocol> -A <auth_pass_phrase> -x <privacy_protocol> -X <privacy_pass_phrase> -l authPriv -c <community> <host> <oid>
      Если после выполнения команды snmpwalk отображается предупреждение No Such Object available on this agent at this OID, это значит, что данного OID не существует. Например, потому что он не был реализован
      Для получения значений метрик в виде таблицы вместо snmpwalk необходимо указать snmptable

      где: <auth_protocol> — тип аутентификации для учетной записи SNMPv3 (MD5/SHA). Чтобы задать тип аутентификации, необходимо: Перейти в раздел Системные настройкиСекция Настройки SNMPv3 нотификацийПоле Тип аутентификацииВыбрать тип аутентификации (MD5/SHA) → Нажать кнопку Сохранить

      <auth_pass_phrase> — пароль аутентификации для учетной записи SNMPv3. Чтобы задать пароль аутентификации, необходимо: Перейти в раздел Системные настройкиСекция Настройки SNMPv3 нотификацийПоле Пароль аутентификацииВвести пароль аутентификацииНажать кнопку Сохранить

      <privacy_protocol> — тип конфиденциальности для учетной записи SNMPv3 (DES/AES). Чтобы задать тип конфиденциальности, необходимо: Перейти в раздел Системные настройкиСекция Настройки SNMPv3 нотификацийПоле Тип конфиденциальностиВыбрать тип конфиденциальности (DES/AES) → Нажать кнопку Сохранить

      <privacy_pass_phrase> — пароль конфиденциальности для учетной записи SNMPv3. Чтобы задать пароль конфиденциальности, необходимо: Перейти в раздел Системные настройкиСекция Настройки SNMPv3 нотификацийПоле Пароль конфиденциальностиВвести пароль конфиденциальностиНажать кнопку Сохранить

      <community> — имя сообщества для приема SNMPv3 запросов. Чтобы задать имя сообщества, необходимо: Перейти в раздел Системные настройкиСекция Настройки SNMPПоле Имя сообществаВвести имя сообществаНажать кнопку Сохранить

      <host> — IP-адрес или доменное имя сервера Платформы IVA MCU

      <oid> — номер идентификатора объекта в дереве MIB

      Чтобы вывести все метрики, необходимо указать .1

      Чтобы вывести метрики только для IVCS-MIB, необходимо указать .1.2.643.6.46.1

      Также можно указать запись вида: <название_MIB>::<название_OID>, например IVCS-MIB::disksTableEntry — для вывода информации о дисковых устройствах

      <username> — имя пользователя для учетной записи SNMPv3. Чтобы задать имя пользователя:

      • для приема запросов SNMPv3, необходимо: Перейти в раздел Системные настройкиСекция Настройки SNMPПоле Имя пользователяВвести имя пользователяНажать кнопку Сохранить

      • для отправки SNMPv3 нотификаций, необходимо: Перейти в раздел Системные настройкиСекция Настройки SNMPv3 нотификацийПоле Имя пользователяВвести имя пользователяНажать кнопку Сохранить

  2. отключить использование текущих настроек SNMP (из файла /etc/monitoring/application-override.properties): Перейти в раздел Системные настройкиСекция Настройки SNMPПоле Использовать текущие настройки SNMPВыключить флаговую кнопкуНажать кнопку Сохранить

  3. включить поддержку обработки SNMP-запросов от внешних систем: Перейти в раздел Системные настройкиСекция Настройки SNMPПоле ВключеноСнять флаговую кнопкуНажать кнопку Сохранить

Включение флаговых кнопок Включено в секциях Настройки SNMPv2 нотификаций и Настройки SNMPv3 нотификаций активирует отправку SNMPv2 и SNMPv3 нотификаций на адреса, указанные в поле Адрес

Сбор данных с помощью API

С помощью интеграционного REST API можно получать информацию о системе, профилях пользователей, мероприятиях и т. д. С более подробным описанием интеграционного REST API можно ознакомиться в web-панели администрирования: Перейти в раздел Интеграционные приложенияПерейти по ссылке Интеграционное REST API

Документация по интеграционному REST API изменяется автоматически и зависит от версии Платформы IVA MCU.

Сбор данных через обращение к базе данных

С помощью запросов к базе данных можно получить информацию о настройках системы, пользователях, мероприятиях и т. д.

Перед подключением к базе данных необходимо убедиться, что на сервере настроены разрешения для доступа к базе данных:

  1. убедиться, что открыт порт для доступа к базе данных

  2. проверить корректность настроек pg_hba.conf. В случае, если база данных установлена с помощью ПО IVA Technologies, не рекомендуется вносить изменения в pg_hba.conf

При наличии реплики базы данных рекомендуется выполнять запросы к реплике базы данных, если это возможно, для снижения нагрузки на мастера базы данных

Открытие порта для доступа к базе данных

Для серверов Платформы IVA MCU, где в качестве базы данных используется ПО IVA Technologies необходимо выполнить следующие действия:

  1. на сервере базы данных проверить, открыт ли порт для доступа к базе данных, выполнив команду:

    sudo iptables -S

    Пример вывода команды:

    -A INPUT -s <IP_ADDRESS>/32 -p tcp -m tcp --dport 5432 -m comment
    --comment "[postgresql] DB access" -j ACCEPT

    где <IP_ADDRESS> — IP-адреса, с которых разрешен доступ к серверу базы данных

  2. при наличии записи с нужными IP-адресами необходимо сохранить изменения на сервере базы данных, выполнив команду:

    Если Платформа IVA MCU установлена на сервер с ОС Astra Linux, то команду sudo iva-cli live save-changes выполнять не нужно
    sudo iva-cli live save-changes
  3. если запись отсутствует или в ней нет нужных адресов, с которых разрешен доступ к базе данных, то необходимо выполнить следующие действия на сервере базы данных:

    • открыть файл /etc/iptables-config/ipv4/filter.d/0001-custom, выполнив команду:

      sudo nano /etc/iptables-config/ipv4/filter.d/0001-custom
    • в файле /etc/iptables-config/ipv4/filter.d/0001-custom выполнить команду:

      -A INPUT -p tcp -m tcp –dport 5432 –-source IP_ADDRESS_1,IP_ADDRESS_2,IP_ADDRESS_3 -m comment –comment "DB" -j ACCEPT

      где IP_ADDRESS_1, IP_ADDRESS_2, IP_ADDRESS_3 — IP-адреса, с которых разрешен доступ к базе данных

    • сохранить изменения и закрыть файл /etc/iptables-config/ipv4/filter.d/0001-custom

    • на сервере базы данных перезапустить сервис iptables-config.service, выполнив команду:

      sudo systemctl restart iptables-config.service
    • проверить статус сервиса iptables-config.service, выполнив команду:

      sudo systemctl status iptables-config.service

      Пример вывода команды:

      Loaded: loaded (/lib/systemd/system/iptables-config.service; enabled; vendor preset: enabled)
      Active: active (exited) since Mon 2024-12-16 15:23:33 MSK; 56s ago
      
      Process: 8473 ExecStart=/usr/sbin/iptables-config start (code=exited, status=0/SUCCESS)
      Main PID: 8473 (code=exited, status=0/SUCCESS)
      CPU: 16ms
      
      Dec 16 15:23:33 ivcs-main systemd[1]: iptables-config.service: Succeeded.
      Dec 16 15:23:33 ivcs-main systemd[1]: Stopped iptables persister.
      Dec 16 15:23:33 ivcs-main systemd[1]: Starting iptables persister...
      Dec 16 15:23:33 ivcs-main systemd[1]: Finished iptables persister.
    • убедиться, что на сервере базы данных присутствуют записи с нужными IP-адресами, выполнив команду:

      sudo iptables -S

      Пример вывода команды:

      -A INPUT -s IP_ADDRESS_1/32 -p tcp -m tcp --dport 5432 -m comment --comment "[postgresql] DB access" -j ACCEPT
      -A INPUT -s IP_ADDRESS_2/32 -p tcp -m tcp --dport 5432 -m comment --comment "[postgresql] DB access" -j ACCEPT
      -A INPUT -s IP_ADDRESS_3/32 -p tcp -m tcp --dport 5432 -m comment --comment "[postgresql] DB access" -j ACCEPT

      где IP_ADDRESS_1, IP_ADDRESS_2, IP_ADDRESS_3 — IP-адреса, с которых разрешен доступ к базе данных

    • сохранить изменения, выполнив команду:

      Если для базы данных используется ПО IVA Technologies, которое установлено на сервер с ОС Astra Linux, то команду sudo iva-cli live save-changes выполнять не нужно
      sudo iva-cli live save-changes

Увеличение квоты на подключение к базе данных

По умолчанию в Платформе IVA MCU существует один пользователь (ivcs_readonly) с правами только на чтение базы данных (по умолчанию название базы данных: ivcs). С помощью этого пользователя можно подключиться к базе данных и выполнять SQL-запросы с SELECT для получения информационных данных о настройках системы, пользователях, мероприятиях и т. д., но по умолчанию он имеет всего одну квоту на соединение, которая уже занята.

Для подключения этим пользователем к базе данных, например, из какой-нибудь системы мониторинга, необходимо увеличить квоту на количество соединений.

Чтобы увеличить квоту на количество соединений для пользователя с правами только на чтение базы данных, необходимо на сервере, где расположена база данных, выполнить команду:

sudo -u postgres -- psql -c "ALTER USER ivcs_readonly WITH CONNECTION LIMIT <limit_connections>;"

где <limit_connections> — максимальное количество подключений

Описание наиболее часто используемых таблиц баз данных

  1. Мероприятия и комнаты

    Таблица Conference — данные о мероприятиях и комнатах

    Имя поля Тип Описание

    conference_id

    uuid

    Уникальный идентификатор мероприятия

    duration

    int8

    Длительность мероприятия

    start_date

    timestamp

    Время начала

    deleted

    boolean

    Признак удаления

    description

    character varying(2048)

    Описание мероприятия

    name

    character varying(1024)

    Наименование мероприятия

    periodical

    boolean

    Признак периодичности

    conference_type

    integer

    Тип мероприятия:
    0 — конференция (встреча, лекция, селектор)
    1 — вебинар (RTMP, WebRTC)

    update_date

    timestamp

    Дата обновления

    owner_id

    uuid

    ID пользователя, создателя мероприятия

    conference_number

    integer

    Номер мероприятия (ID мероприятия)

    blocked

    boolean

    Признак блокирования

    security_level

    integer

    Уровень секретности:
    0 — несекретно
    1 — конфиденциально
    2 — секретно
    3 — совершенно секретно

    previous_conference_number

    integer

    Предыдущий номер мероприятия при изменении номера

    create_date

    timestamp

    Дата создания

    Таблица Conference_session — данные о сессиях мероприятий и комнат

    Имя поля Тип Описание

    Id

    uuid

    ID сессии мероприятия

    duration

    Integer

    Длительность

    start_date

    timestamp

    Время начала мероприятия (запланированное)

    actual_start_date

    timestamp

    Время начала мероприятия (фактическое)

    Deleted

    boolean

    Признак удаления

    description

    character varying(2048)

    Описание мероприятия

    name

    character varying(1024)

    Наименование мероприятия

    session_number

    Integer

    Номер сессии мероприятия

    conference_type

    integer

    Тип мероприятия:
    0 – конференция (встреча, лекция, селектор)
    1 – вебинар (RTMP, WebRTC)

    state

    character varying(255)

    Статус мероприятия

    update_date

    timestamp

    Время обновления данных мероприятия

    parent_id

    uuid

    ID родительского мероприятия

    owner_id

    uuid

    ID пользователя, создателя мероприятия

    create_date

    timestamp

    Дата создания

    actual_end_date

    timestamp

    Фактическая дата окончания

    Таблица Conference_session_participant — данные пользователей сессий мероприятий и комнат

    Имя поля Тип Описание

    Id

    uuid

    uuid сессии участника мероприятия

    deleted

    boolean

    Признак удаления

    was_on_conference

    boolean

    Признак присутствия в мероприятии

    profile_id

    uuid

    ID пользователя

    conference_session_id

    uuid

    ID сессии мероприятия

    role

    Integer

    Роли:
    0 — рядовой участник
    1 — переводчик
    2 — докладчик
    3 — модератор

    Таблица Сonference_session_period_statistic — данные статистики сессии мероприятий и комнат

    Имя поля Тип Описание

    active_speaker

    Boolean

    Признак активности докладчика

    end_date

    timestamp

    Дата окончания сессии мероприятия

    start_date

    timestamp

    Дата начала сессии мероприятия

    conference_session_id

    uuid

    ID сессии мероприятия

    max_users

    Integer

    Максимальное количество пользователей в сессии мероприятия

    max_speakers

    integer

    Максимальное количество докладчиков в сессии мероприятия

    max_frame

    integer

    Максимальное количество frame-пользователей в сессии мероприятия

  2. информация о пользователях

    Таблица Profile — данные профилей пользователей

    Имя поля Тип Описание

    profile_type

    character varying(3)

    Тип профиля:
    USR — зарегистрированный пользователь
    INV — незарегистрированный пользователь, приглашенный в мероприятие
    GST — незарегистрированный пользователь, вошедший в мероприятие по гостевой ссылке

    Id

    uuid

    ID пользователя

    name

    character varying(255)

    Наименование пользователя

    note

    character varying(2048)

    Информация о себе

    blocked

    integer

    Признак блокирования

    user_type

    character varying(255)

    Тип пользователя:
    USER — Пользователь
    OPERATOR — Оператор
    SECURITY_SERVICE — Служба безопасности
    CHIEF_OPERATOR — Главный оператор
    DOMAIN_ADMIN — Администратор домена
    ADMIN_IVCS — Администратор системы
    CHIEF_SYSTEM_ADMINISTRATOR — Главный администратор системы

    additional_contact

    character varying(255)

    Дополнительный контакт

    primary_email

    character varying(255)

    Email пользователя

    primary_phone

    character varying(512)

    Телефон / адрес VVoIP-устройства

    ldap_login

    boolean

    Признак, является ли пользователь LDAP

    deleted

    boolean

    Признак удаления пользователя

    vvoip_login

    character varying(64)

    VVoIP-логин

    domain_id

    uuid

    ID домена

    login

    character varying(255)

    Логин пользователя

    security_level

    integer

    Уровень секретности:
    0 — несекретно
    1 — конфиденциально
    2 — секретно
    3 — совершенно секретно

    internal_phone

    character varying(64)

    Номер на УАТС

  3. чаты мероприятий и комнат

    Таблица Сhat_message — данные чатов мероприятий и комнат

    Имя поля Тип Описание

    Id

    uuid

    ID сообщения

    message

    character varying(2048)

    Текст сообщения

    send_date

    timestamp

    Дата отправки сообщения

    author_participant_id

    uuid

    ID пользователя, автора сообщения

    conference_session_id

    uuid

    ID сессии мероприятия

    target_participant_id

    uuid

    ID пользователя, получателя персонального сообщения

    deleted

    boolean

    Признак удаления сообщения

    moderated_by_profile_id

    uuid

    ID пользователя, модерировавшего сообщение

    deleted_by_profile_id

    uuid

    ID пользователя, удалившего сообщение

    moderated_at

    timestamp

    Дата модерации

    updated_at

    timestamp

    Дата обновления

    edited

    boolean

    Признак изменения сообщения

    moderation_status

    character varying(32)

    Статус модерации:
    APPROVED — сообщение одобрено
    NOT_MODERATED — сообщение еще не прошло модерацию
    REJECTED — сообщение отклонено

Структуру базы данных можно изучить более подробно после подключения к ней с помощью пользователя с правами только на чтение базы данных