ECSS-10 и сопутствующие сервисы (например, контакт-центр или селекторная связь) формируют различные статистические метрики.
Система работает таким образом, что ПО формирует счетчики используя модуль ecss_statistics, который хранит счетчики в ets таблицах ноды (используется exometer_core).
Модуль ecss_statistics с заданной периодичностью осуществляет выгрузку значений счетчиков в СУБД MySQL в БД ecss_statistics в таблицу realtime_statistics.
Пример - список таблиц БД статистики:
sasha@ecss1:~$ mysql -ustatistics -p -D ecss_statistics -e 'show tables;' Enter password: +---------------------------------+ | Tables_in_ecss_statistics | +---------------------------------+ | Host.Resources | | historical_daily_statistics | | historical_hour_statistics | | historical_intrahour_statistics | | historical_monthly_statistics | | historical_weekly_statistics | | realtime_statistics | | realtime_statistics_0 | | realtime_statistics_1 | | realtime_statistics_10 | | realtime_statistics_11 | | realtime_statistics_2 | | realtime_statistics_3 | | realtime_statistics_4 | | realtime_statistics_5 | | realtime_statistics_6 | | realtime_statistics_7 | | realtime_statistics_8 | | realtime_statistics_9 | | realtime_statistics_template | | stat_details | | version | +---------------------------------+ |
Счетчики могут быть разных типов (counter, gauge, histogram и др.), а так же могут быть непрерывными и с автосбросом значений после считывания (autoreset).
У счетчика есть имя и значение. Значение могут содержать несколько величин и зависит от типа счетчика.
Имя - это список термов, что позволяет формировать иерархическую (древовидную) структуру метрик.
Каждый тип интервалов хранится какое-то время:
В ECSS-10 принят следующий формат описания имени счетчика:
[SystemPrefix, Domain, SubsystemPrefix, MetricName, VariablePart1, VariablePart2, MetricType].
Ниже приведена таблица метрик реального времени генерируемых системой:
| SystemPrefix | Domain | SubsystemPrefix | MetricName | Var1 | Var2 | MetricType | Options | Описание |
|---|---|---|---|---|---|---|---|---|
| ecss10.common | .system | Домен | core | statistics_upload_time.histogram | undefined | undefined | histogram | Содержит гистограмму времени вставки статистик в MySQL | |
| ecss10.common | .system | Домен | core | cpm_resource_allocation_attempts | cp | NULL | counter | Количество попыток вызовов за период времени | |
| ecss10.common | .system | Домен | core | cpm_allocated_resources.histo | cp | NULL | histogram | Пиковое количество одновременных вызовов за период времени, значащее поле - max | |
| ecss10.common | .system | Домен | core | cpm_allocated_resources.histo | cp | NULL | histogram | Минимальное количество одновременных вызовов за период времени, значащее поле - min |
| SystemPrefix | Domain | SubsystemPrefix | MetricName | Var1 | Var2 | MetricType | Options | Описание |
|---|---|---|---|---|---|---|---|---|
| ecss10.сс | Домен | queue | incoming_seizures.counter | QueueID | undefined | counter | autoreset | Счетчик входящих занятий распределенных на очередь |
| ecss10.сс | Домен | queue | incoming_accepted_seizures.counter | QueueID | undefined | counter | autoreset | Счетчик принятых занятий распределенных на очередь (занятие поставлено в очередь или сразу распределено на агента) |
| ecss10.сс | Домен | queue | incoming_rejected_seizures.counter | QueueID | undefined | counter | autoreset | Счетчик занятий распределенных на очередь, но отклоненных по каким-либо причинам |
| ecss10.сс | Домен | queue | waiting_calls.histogram | QueueID | undefined | histogram | autoreset | Гистограмма количества вызовов ожидающих в очереди |
| ecss10.сс | Домен | queue | waiting_time.histogram | QueueID | undefined | histogram | Гистограмма времени ожидания вызовов в очереди |
| SystemPrefix | Domain | SubsystemPrefix | MetricName | Var1 | Var2 | MetricType | Options | Описание |
|---|---|---|---|---|---|---|---|---|
| ecss10.ssw | Домен | trunk_manager | incoming_seizures.counter | TrunkID | undefined | counter | autoreset | Счетчик входящих занятий на транк |
| ecss10.ssw | Домен | trunk_manager | incoming_accepted_seizures.counter | TrunkID | undefined | counter | autoreset | Счетчик принятых занятий на транке |
| ecss10.ssw | Домен | trunk_manager | incoming_rejected_seizures.counter | TrunkID | undefined | counter | autoreset | Счетчик отклоненных по каким-либо причинам занятий на транке |
| ecss10.ssw | Домен | trunk_manager | incoming_active_channels.histogram | TrunkID | undefined | histogram | Гистограмма количества входящих активных вызовов на транке | |
| ecss10.ssw | Домен | trunk_manager | outgoing_active_channels.histogram | TrunkID | undefined | histogram | Гистограмма количества исходящих активных вызовов на транке |
| SystemPrefix | Domain | SubsystemPrefix | MetricName | Var1 | Var2 | MetricType | Options | Описание |
|---|---|---|---|---|---|---|---|---|
| ecss10.ssw | Домен | direction_manager | incoming_seizures.counter | DirectionID | undefined | counter | autoreset | Счетчик входящих занятий на направление |
| ecss10.ssw | Домен | direction_manager | incoming_accepted_seizures.counter | DirectionID | undefined | counter | autoreset | Счетчик принятых занятий на направление |
| ecss10.ssw | Домен | direction_manager | incoming_rejected_seizures.counter | DirectionID | undefined | counter | autoreset | Счетчик отклоненных по каким-либо причинам занятий на направлении |
| ecss10.ssw | Домен | direction_manager | outgoing_active_channels.histogram | DirectionID | undefined | histogram | Гистограмма количества исходящих активных вызовов на направлении |
| SystemPrefix | Domain | SubsystemPrefix | MetricName | Var1 | Var2 | MetricType | Options | Описание |
|---|---|---|---|---|---|---|---|---|
| ecss10.ssw | Домен | direction_manager | incoming_seizures.counter | CPM-DialogID | undefined | counter | autoreset | Счетчик входящих занятий на cpm-dialog в домене |
| ecss10.ssw | Домен | direction_manager | incoming_accepted_seizures.counter | CPM-DialogID | undefined | counter | autoreset | Счетчик принятых занятий на cpm-dialog в домене |
| ecss10.ssw | Домен | direction_manager | incoming_rejected_seizures.counter | CPM-DialogID | undefined | counter | autoreset | Счетчик отклоненных по каким-либо причинам занятий на cpm-dialog в домене |
| ecss10.ssw | Домен | direction_manager | active_calls.histogram | CPM-DialogID | undefined | histogram | Гистограмма количества активных вызовов на cpm-dialog в домене | |
| ecss10.ssw | Домен | direction_manager | incoming_seizures.counter | undefined | undefined | counter | autoreset | Общий счетчик входящих занятий в домене |
| ecss10.ssw | Домен | direction_manager | incoming_accepted_seizures.counter | undefined | undefined | counter | autoreset | Общий счетчик принятых занятий в домене |
| ecss10.ssw | Домен | direction_manager | incoming_rejected_seizures.counter | undefined | undefined | counter | autoreset | Общий счетчик отклоненных по каким-либо причинам занятий в домене |
| SystemPrefix | Domain | SubsystemPrefix | MetricName | Var1 | Var2 | MetricType | Options | Описание |
|---|---|---|---|---|---|---|---|---|
| ecss10.common | Домен | core | all_callbacks.count | WidgetId | undefined | counter | Счетчик запущенных и завершенных callback-ов с WidgetId в домене | |
| ecss10.common | Домен | core | success_finished_callbacks.count | WidgetId | undefined | counter | Счетчик успешно завершенных callback-ов с WidgetId со статусом Cause(ISUP) в домене | |
| ecss10.common | Домен | core | unsuccess_finished_callbacks.count | WidgetId | Cause | counter | Счетчик не успешно завершенных callback-ов с WidgetId со статусом Cause(ISUP) в домене | |
| ecss10.common | Домен | core | unsuccess_finished_callbacks_by_client.count | WidgetId | Cause | counter | Счетчик не успешно завершенных из-за клиента callback-ов с WidgetId со статусом Cause(ISUP) в домене | |
| ecss10.common | Домен | core | unsuccess_finished_callbacks_by_operator.count | WidgetId | Cause | counter | Счетчик не успешно завершенных из-за оператора callback-ов с WidgetId со статусом Cause(ISUP) в домене | |
| ecss10.common | Домен | core | unsuccess_attempts_callback.count | WidgetId | Cause | cointer | Счетчик не успешных попыток callback-а с WidgetId |
В системе ECSS-10 реализована запись в БД вызывной статистики. Описание метрик приведено ниже.
У всех этих метрик система - ecss10.ssw и подсистема core. Доменные метрики имеют в поле БД имя своего домена, у системных домен - .system.
Если не написано обратного, у всех метрик значащим полем является value.
| Метрика | Имя в системе | 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.
В системе ECSS-10 разработан механизм для создания пользователем произвольных метрик/статистик на основе вызывных данных (данных, на основе которых генерируются CDR, а именно mysql таблицы ecss_calls_db.tolltickets). Каждый фильтр проверяет, если данный вызов соответствует заданным правилам rules (критериям, условиям), то в метрику с именем metric_name, переменными частями variable_part_1, variable_part_2 записывается +1 вызов. Т.е. метрика metric_name показывает сколько было вызовов, удовлетворяющих условиям описанным в правиле rules. Список правил в фильтре работает по принципу "И", т.е. чтобы фильтр сработал все правила должны вернуть true. В качестве переменных частей (variable_part_1, variable_part_2), а также сравниваемого значения, можно использовать как фиксированные названия, так и макро-переменные. В этом случае вместо макро-переменной подставится значение из CDR записи вызова. Возможные значения макро-переменных:
Отдельная категория макропеременных - динамически формируемые списки.
Каждое из правил в рамках фильтра представляет собой набор из трех полей: 1. Имя поля, на которое действует данное правило. Возможные имена полей:
2. Оператор, который применяется к полю из п.1 Возможные операторы:
3. Значение - значение для правила. Возможные значения:
|
Описание команд для работы с фильтрами произвольной вызывной статистике приведено в разделе "/domain/<DOMAIN>/core/statistics/calls/filter - Команды управления фильтрами произвольной вызывной статистики"