Метрики реального времени с агрегацией данных

ECSS-10 и сопутствующие сервисы (например, контакт-центр или селекторная связь) формируют различные статистические метрики.

Система работает таким образом, что ПО формирует счетчики используя модуль ecss_statistics, который хранит счетчики в ets таблицах ноды (используется exometer_core).
Модуль ecss_statistics с заданной периодичностью осуществляет выгрузку значений счетчиков в БД ecss_statistics в таблицу realtime_statistics.

Пример — список таблиц БД статистики:

ecss_storekeeper_db-# \dt statistics_*
                           List of relations
 Schema |                    Name                    | Type  |  Owner   
--------+--------------------------------------------+-------+----------
 public | statistics_day_votes                       | table | postgres
 public | statistics_five_votes                      | table | postgres
 public | statistics_historical_daily_statistics     | table | postgres
 public | statistics_historical_hour_statistics      | table | postgres
 public | statistics_historical_intrahour_statistics | table | postgres
 public | statistics_historical_monthly_statistics   | table | postgres
 public | statistics_historical_weekly_statistics    | table | postgres
 public | statistics_hour_votes                      | table | postgres
 public | statistics_month_votes                     | table | postgres
 public | statistics_realtime_statistics             | table | postgres
 public | statistics_realtime_statistics_0           | table | postgres
 public | statistics_realtime_statistics_1           | table | postgres
 public | statistics_realtime_statistics_10          | table | postgres
 public | statistics_realtime_statistics_11          | table | postgres
 public | statistics_realtime_statistics_2           | table | postgres
 public | statistics_realtime_statistics_3           | table | postgres
 public | statistics_realtime_statistics_4           | table | postgres
 public | statistics_realtime_statistics_5           | table | postgres
 public | statistics_realtime_statistics_6           | table | postgres
 public | statistics_realtime_statistics_7           | table | postgres
 public | statistics_realtime_statistics_8           | table | postgres
 public | statistics_realtime_statistics_9           | table | postgres
 public | statistics_realtime_statistics_template    | table | postgres
 public | statistics_week_votes                      | table | postgres
(24 rows)

Счетчики могут быть разных типов (counter, gauge, histogram и др.), а также могут быть непрерывными и с автосбросом значений после считывания (autoreset).

У счетчика есть имя и значение. Значение могут содержать несколько величин (value, avg, min, max, count) и зависит от типа счетчика.
Имя — это список термов, что позволяет формировать иерархическую (древовидную) структуру метрик.

Каждый тип интервалов хранится какое-то время и находится в определенной таблице БД ecss_statistics:

Размерность статистикиИмя таблицыВремя хранения
10 секундrealtime_statistics_X, где X - номер пятиминутки каждого часа от 0 до 11
(0 - период с HH:00:00 до HH:04:59, 11 - с HH:55:00 до HH:59:59)
до окончания X-й пятиминутки
5 минутhistorical_intrahour_statistics1 неделя
1 часhistorical_hour_statistics1 месяц
1 деньhistorical_daily_statistics6 месяцев
1 неделяhistorical_weekly_statistics1 год
1 месяцhistorical_monthly_statistics10 лет


В ECSS-10 принят следующий формат описания имени счетчика:
[SystemPrefix, Domain, SubsystemPrefix, MetricName, VariablePart1, VariablePart2, MetricType].

  • SystemPrefix — идентифицирует систему генерирующую метрику и может принимать следующие значения:
    • ecss10.common — метрики общие для всех систем
    • ecss10.ssw — метрики специфичные для софтсвича
    • ecss10.cc — метрики специфичные для контакт-центра
    • ecss10.tc — метрики специфичные для сервиса селекторной связи (teleconference)
  • Domain — идентификатор домена (виртуальной АТС) в рамках которого генерируется метрика
  • SubsystemPrefix — идентифицирует подсистему в рамках выбранной системы, которая генерирует метрику и может принимать следующие значения:
    • queue — очередь (специфична для контакт-центра)
    • agent — агент (специфична для контакт-центра)
    • group — группа агентов КЦ (специфична для контакт-центра)
    • ivr — меню IVR (специфичная для софтсвича)
    • core — ядро (специфичная для софтсвича)
    • sip — адаптер протокола sip (специфичная для софтсвича)
    • megaco — адаптер протокола megaco (специфичная для софтсвича)
    • sigtran — адаптер протокола sigtran (специфичная для софтсвича)
    • mediator — медиатор (специфичная для софтсвича)
    • mycelium — брокер интеграционной шины (специфичная для софтсвича)
    • trunk_manager — менеджер транков
    • direction_manager — менеджер направлений
    • ds — хранилище конфигурационной информации
    • dialer — сервис автообзвона
  • MetricName — фиксированное имя метрики, должно описывать значение которое содержится в метрике, рекомендуется, чтобы так же был указан тип метрики
  • VariablePart1 — первая дополнительная переменная часть имени метрики, специфичная для конкретной метрики (может, например, содержать имя транка, имя очереди и т.п.)
  • VariablePart2 — вторая дополнительная переменная часть имени метрики, специфичная для конкретной метрики (может, например, содержать идентификатор агента)
  • MetricType — определяет тип метрики, может принимать следующие значения:
    • counter
    • gauge
    • meter
    • histogram

Ниже приведен пример нескольких таблица метрик реального времени, генерируемых ecss_statistics, которые полностью описаны в файле statistics.ods:

Подсистема core

SystemPrefixDomainSubsystemPrefixMetricName / Имя метрикиMetricTypeОписание
ecss10.commonДоменcoreall_callbacks.countcounterСчетчик запущенных и завершенных callback с WidgetId в домене
ecss10.commonДоменcoresuccess_finished_callbacks.countcounterСчетчик успешно завершенных callback с WidgetId со статусом Cause (ISUP) в домене
ecss10.commonДоменcoreunsuccess_attempts_callback.countcounterСчетчик не успешных попыток callback с WidgetId
ecss10.commonДоменcoreunsuccess_finished_callbacks.countcounterСчетчик не успешно завершенных callback с WidgetId со статусом Cause (ISUP) в домене
ecss10.commonДоменcoreunsuccess_finished_callbacks_by_client.countcounterСчетчик не успешно завершенных из-за оператора callback с WidgetId со статусом Cause (ISUP) в домене
ecss10.commonДоменcoreunsuccess_finished_callbacks_by_operator.countcounterСчетчик не успешно завершенных из-за клиента callback с WidgetId со статусом Cause (ISUP) в домене
ecss10.commonДоменcorealiases.countergaugeКоличество занятых и доступных алиасов в соответствии с лицензионными ограничениями
ecss10.commonДоменcorecpm_allocated_resources.gaugegaugeКоличество занятых ресурсов в соответствии с лицензионными ограничениями
ecss10.commonДоменcorecpm_allocated_resources_limitsgaugeЛицензионные ограничения на ресурс
ecss10.commonДоменcorecpm_allocated_resources.histohistogramКоличество занятых ресурсов в соответствии с лицензионными ограничениями
ecss10.commonДоменcorestatistics_upload_time.histogramhistogramВремя вставки статистик в БД

Подсистема dialer

SystemPrefixDomainSubsystemPrefixMetricName / Имя метрикиMetricTypeОписание
ecss10.sswДоменdialerfailedcounterНеудачные попытки работы системы автообзвона
ecss10.sswДоменdialersuccesscounterУдачные попытки работы системы автообзвона

Подсистема trunk_manager

SystemPrefixDomainSubsystemPrefixMetricName / Имя метрикиMetricTypeОписание
ecss10.sswДоменtrunk_managerincoming_accepted_seizures.countercounterСчетчик принятых занятий на транке
ecss10.sswДоменtrunk_managerincoming_rejected_seizures.countercounterСчетчик отклоненных по каким-либо причинам занятий на транке
ecss10.sswДоменtrunk_managerincoming_seizures.countercounterСчетчик входящих занятий на транк
ecss10.sswДоменtrunk_managerincoming_active_channels.histogramhistogramГистограмма количества входящих активных вызовов на транке
ecss10.sswДоменtrunk_manageroutgoing_active_channels.histogramhistogramГистограмма количества исходящих активных вызовов на транке

Подсистема direction_manager

SystemPrefixDomainSubsystemPrefixMetricName / Имя метрикиMetricTypeОписание
ecss10.sswДоменdirection_managerincoming_accepted_seizures.countercounterСчетчик принятых занятий на направлении
ecss10.sswДоменdirection_managerincoming_rejected_seizures.countercounterСчетчик отклоненных по каким-либо причинам занятий на направлении
ecss10.sswДоменdirection_managerincoming_active_channels.histogramcounterСчетчик входящих занятий на направление
ecss10.sswДоменdirection_manageroutgoing_active_channels.histogramhistogramГистограмма количества входящих активных вызовов на направлении
ecss10.sswДоменdirection_manageroutgoing_active_channels.histogramhistogramГистограмма количества исходящих активных вызовов на направлении

Подсистема ivr

SystemPrefixDomainSubsystemPrefixMetricName / Имя метрикиMetricTypeОписание
ecss10.sswДоменivrivr_answered_eventcounterАбонент ответил
ecss10.sswДоменivrivr_detect_digits_eventcounterЗапуск детектирования цифр
ecss10.sswДоменivrivr_detected_digits_eventcounterДетектирование цифр завершено
ecss10.sswДоменivrivr_enter_block_eventcounterВход в блок
ecss10.sswДоменivrivr_leave_block_eventcounterВыход из блока по ветке или в скрипт
ecss10.sswДоменivrivr_play_finished_eventcounterПроигрывание плейлиста завершено
ecss10.sswДоменivrivr_play_playlist_eventcounterЗапуск проигрывания плейлиста
ecss10.sswДоменivrivr_released_eventcounterАбонент или скрипт завершил вызов
ecss10.sswДоменivrivr_run_dialing_eventcounterЗапуск набора номера
ecss10.sswДоменivrivr_unsuccess_call_eventcounterНеуспешный вызов

Подсистема agent

SystemPrefixDomainSubsystemPrefixMetricName / Имя метрикиMetricTypeОписание
ecss10.ccДоменagentaccepted_acd_ccounterКоличество acd-вызовов, на которые ответил оператор в одной очереди
ecss10.ccДоменagentaccepted_direct_in_ccounterКоличество принятых входящих вызовов
ecss10.ccДоменagentaccepted_direct_out_ccounterКоличество исходящих вызовов, на которые ответила сторона Б
ecss10.ccДоменagentacd_alerting_ccounterПринятые acd-вызовы
ecss10.ccДоменagentacd_queue_wait_tcounterВремя от постановки вызова в очередь до ответа оператора
ecss10.ccДоменagentacd_talk_tcointerВремя, которое оператор разговаривал с абонентами, позвонившими на очередь

Вызывные статистики

пример команды просмотра
/domain/test_domain/core/statistics/show last 8 hour  ecss10.ssw _ _ success_calls_c
┌───────────┬──────────┬─────────┬───────────────┬───────┬────┬────┬───────┬───────────────────┬─────┬─────┬───┬───┬───┐
│  Domain   │  System  │Subsystem│  Statistics   │ Type  │Var1│Var2│Measure│       Time        │Value│Count│Min│Max│AVG│
│           │          │         │     Name      │       │    │    │       │                   │     │     │   │   │   │
├───────────┼──────────┼─────────┼───────────────┼───────┼────┼────┼───────┼───────────────────┼─────┼─────┼───┼───┼───┤
│test_domain│ecss10.ssw│core     │success_calls_c│counter│    │    │hour   │2025/02/19 06:59:59│1    │     │   │   │   │
│           │          │         │               │       │    │    │       │2025/02/19 07:59:59│4    │     │   │   │   │
│           │          │         │               │       │    │    │       │2025/02/19 08:59:59│143  │     │   │   │   │
│           │          │         │               │       │    │    │       │2025/02/19 09:59:59│2    │     │   │   │   │
│           │          │         │               │       │    │    │       │2025/02/19 10:59:59│57   │     │   │   │   │
│           │          │         │               │       │    │    │       │2025/02/19 11:59:59│3    │     │   │   │   │
│           │          │         │               │       │    │    │       │2025/02/19 12:59:59│35   │     │   │   │   │
│           │          │         │               │       │    │    │       │2025/02/19 13:59:59│25   │     │   │   │   │
└───────────┴──────────┴─────────┴───────────────┴───────┴────┴────┴───────┴───────────────────┴─────┴─────┴───┴───┴───┘

В системе ECSS-10 реализована запись в БД вызывной статистики. Описание метрик приведено ниже.

У всех этих метрик система — ecss10.ssw и подсистема core. Доменные метрики имеют в поле БД имя своего домена, у системных домен — .system.

Если не написано обратного, у всех метрик значащим полем является value.

МетрикаMetricName / Имя метрикиvariable_part_1variable_part_2Примечания
Количество поступивших в систему вызовов без номера вызывающего абонентаempty_a_number_calls_cNULLNULL
Количество успешных вызовов за период времени (вызовов с ответом вызываемого абонента)success_calls_cNULLNULL
Количество вызовов на занятых абонентов за период времениbusy_calls_cNULLNULL
Количество вызовов без ответа вызываемого абонента за период времениno_answer_calls_cNULLNULL
Общее количество неуспешных исходящих вызовов за периодunsuccess_out_calls_cNULLNULL
Отношение неуспешных вызовов ко всему количеству вызовов---Фиктивная метрика. Визуализируется только на grafana
Количество попыток внешних входящих вызовов за период времениtotal_trunk_in_calls_cNULLNULL
Общее количество неуспешных входящих вызововtotal_unsuccess_trunk_in_calls_cNULLNULL
Количество раз набора номера вне плана набораtotal_invalid_number_calls_cNULLNULL

Команды просмотра вызывных статистических данных доступны из CLI и приведены в разделе "/domain/<DOMAIN>/core/statistics/ - команда просмотра статистик ядра системы".

Также есть возможность визуализировать данные с помощью отдельной системы Grafana.

Описание команд для работы с фильтрами произвольной вызывной статистике приведено в разделе "/domain/<DOMAIN>/core/statistics/calls/filter — Команды управления фильтрами произвольной вызывной статистики"