Статистика с агрегацией данных
Метрики реального времени с агрегацией данных
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_statistics | 1 неделя |
| 1 час | historical_hour_statistics | 1 месяц |
| 1 день | historical_daily_statistics | 6 месяцев |
| 1 неделя | historical_weekly_statistics | 1 год |
| 1 месяц | historical_monthly_statistics | 10 лет |
В ECSS-10 принят следующий формат описания имени счетчика:
[SystemPrefix, Domain, SubsystemPrefix, MetricName, VariablePart1, VariablePart2, MetricType].
- SystemPrefix — идентифицирует систему генерирующую метрику и может принимать следующие значения:
- 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
| SystemPrefix | Domain | SubsystemPrefix | MetricName / Имя метрики | MetricType | Описание |
|---|---|---|---|---|---|
| ecss10.common | Домен | core | all_callbacks.count | counter | Счетчик запущенных и завершенных callback с WidgetId в домене |
| ecss10.common | Домен | core | success_finished_callbacks.count | counter | Счетчик успешно завершенных callback с WidgetId со статусом Cause (ISUP) в домене |
| ecss10.common | Домен | core | unsuccess_attempts_callback.count | counter | Счетчик не успешных попыток callback с WidgetId |
| ecss10.common | Домен | core | unsuccess_finished_callbacks.count | counter | Счетчик не успешно завершенных callback с WidgetId со статусом Cause (ISUP) в домене |
| ecss10.common | Домен | core | unsuccess_finished_callbacks_by_client.count | counter | Счетчик не успешно завершенных из-за оператора callback с WidgetId со статусом Cause (ISUP) в домене |
| ecss10.common | Домен | core | unsuccess_finished_callbacks_by_operator.count | counter | Счетчик не успешно завершенных из-за клиента callback с WidgetId со статусом Cause (ISUP) в домене |
| ecss10.common | Домен | core | aliases.counter | gauge | Количество занятых и доступных алиасов в соответствии с лицензионными ограничениями |
| ecss10.common | Домен | core | cpm_allocated_resources.gauge | gauge | Количество занятых ресурсов в соответствии с лицензионными ограничениями |
| ecss10.common | Домен | core | cpm_allocated_resources_limits | gauge | Лицензионные ограничения на ресурс |
| ecss10.common | Домен | core | cpm_allocated_resources.histo | histogram | Количество занятых ресурсов в соответствии с лицензионными ограничениями |
| ecss10.common | Домен | core | statistics_upload_time.histogram | histogram | Время вставки статистик в БД |
Подсистема dialer
| SystemPrefix | Domain | SubsystemPrefix | MetricName / Имя метрики | MetricType | Описание |
|---|---|---|---|---|---|
| ecss10.ssw | Домен | dialer | failed | counter | Неудачные попытки работы системы автообзвона |
| ecss10.ssw | Домен | dialer | success | counter | Удачные попытки работы системы автообзвона |
Подсистема trunk_manager
| SystemPrefix | Domain | SubsystemPrefix | MetricName / Имя метрики | MetricType | Описание |
|---|---|---|---|---|---|
| ecss10.ssw | Домен | trunk_manager | incoming_accepted_seizures.counter | counter | Счетчик принятых занятий на транке |
| ecss10.ssw | Домен | trunk_manager | incoming_rejected_seizures.counter | counter | Счетчик отклоненных по каким-либо причинам занятий на транке |
| ecss10.ssw | Домен | trunk_manager | incoming_seizures.counter | counter | Счетчик входящих занятий на транк |
| ecss10.ssw | Домен | trunk_manager | incoming_active_channels.histogram | histogram | Гистограмма количества входящих активных вызовов на транке |
| ecss10.ssw | Домен | trunk_manager | outgoing_active_channels.histogram | histogram | Гистограмма количества исходящих активных вызовов на транке |
Подсистема direction_manager
| SystemPrefix | Domain | SubsystemPrefix | MetricName / Имя метрики | MetricType | Описание |
|---|---|---|---|---|---|
| ecss10.ssw | Домен | direction_manager | incoming_accepted_seizures.counter | counter | Счетчик принятых занятий на направлении |
| ecss10.ssw | Домен | direction_manager | incoming_rejected_seizures.counter | counter | Счетчик отклоненных по каким-либо причинам занятий на направлении |
| ecss10.ssw | Домен | direction_manager | incoming_active_channels.histogram | counter | Счетчик входящих занятий на направление |
| ecss10.ssw | Домен | direction_manager | outgoing_active_channels.histogram | histogram | Гистограмма количества входящих активных вызовов на направлении |
| ecss10.ssw | Домен | direction_manager | outgoing_active_channels.histogram | histogram | Гистограмма количества исходящих активных вызовов на направлении |
Подсистема ivr
| SystemPrefix | Domain | SubsystemPrefix | MetricName / Имя метрики | MetricType | Описание |
|---|---|---|---|---|---|
| ecss10.ssw | Домен | ivr | ivr_answered_event | counter | Абонент ответил |
| ecss10.ssw | Домен | ivr | ivr_detect_digits_event | counter | Запуск детектирования цифр |
| ecss10.ssw | Домен | ivr | ivr_detected_digits_event | counter | Детектирование цифр завершено |
| ecss10.ssw | Домен | ivr | ivr_enter_block_event | counter | Вход в блок |
| ecss10.ssw | Домен | ivr | ivr_leave_block_event | counter | Выход из блока по ветке или в скрипт |
| ecss10.ssw | Домен | ivr | ivr_play_finished_event | counter | Проигрывание плейлиста завершено |
| ecss10.ssw | Домен | ivr | ivr_play_playlist_event | counter | Запуск проигрывания плейлиста |
| ecss10.ssw | Домен | ivr | ivr_released_event | counter | Абонент или скрипт завершил вызов |
| ecss10.ssw | Домен | ivr | ivr_run_dialing_event | counter | Запуск набора номера |
| ecss10.ssw | Домен | ivr | ivr_unsuccess_call_event | counter | Неуспешный вызов |
Подсистема agent
| SystemPrefix | Domain | SubsystemPrefix | MetricName / Имя метрики | MetricType | Описание |
|---|---|---|---|---|---|
| ecss10.cc | Домен | agent | accepted_acd_c | counter | Количество acd-вызовов, на которые ответил оператор в одной очереди |
| ecss10.cc | Домен | agent | accepted_direct_in_c | counter | Количество принятых входящих вызовов |
| ecss10.cc | Домен | agent | accepted_direct_out_c | counter | Количество исходящих вызовов, на которые ответила сторона Б |
| ecss10.cc | Домен | agent | acd_alerting_c | counter | Принятые acd-вызовы |
| ecss10.cc | Домен | agent | acd_queue_wait_t | counter | Время от постановки вызова в очередь до ответа оператора |
| ecss10.cc | Домен | agent | acd_talk_t | cointer | Время, которое оператор разговаривал с абонентами, позвонившими на очередь |
Вызывные статистики
/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_1 | variable_part_2 | Примечания |
|---|---|---|---|---|
| Количество поступивших в систему вызовов без номера вызывающего абонента | empty_a_number_calls_c | NULL | NULL | |
| Количество успешных вызовов за период времени (вызовов с ответом вызываемого абонента) | success_calls_c | NULL | NULL | |
| Количество вызовов на занятых абонентов за период времени | busy_calls_c | NULL | NULL | |
| Количество вызовов без ответа вызываемого абонента за период времени | no_answer_calls_c | NULL | NULL | |
| Общее количество неуспешных исходящих вызовов за период | unsuccess_out_calls_c | NULL | NULL | |
| Отношение неуспешных вызовов ко всему количеству вызовов | - | - | - | Фиктивная метрика. Визуализируется только на grafana |
| Количество попыток внешних входящих вызовов за период времени | total_trunk_in_calls_c | NULL | NULL | |
| Общее количество неуспешных входящих вызовов | total_unsuccess_trunk_in_calls_c | NULL | NULL | |
| Количество раз набора номера вне плана набора | total_invalid_number_calls_c | NULL | NULL |
Команды просмотра вызывных статистических данных доступны из CLI и приведены в разделе "/domain/<DOMAIN>/core/statistics/ - команда просмотра статистик ядра системы".
Также есть возможность визуализировать данные с помощью отдельной системы Grafana.
Описание команд для работы с фильтрами произвольной вызывной статистике приведено в разделе "/domain/<DOMAIN>/core/statistics/calls/filter — Команды управления фильтрами произвольной вызывной статистики"