В данном разделе описаны команды, позволяющие просматривать и сохранять в файл трассировки вызовов.
Медиа трассировка - аналогичный список трассировок визуализирующий прохождения вызова внутри SSW.
Команды управления трассировками вызовов
list
Команда предназначена для просмотра списка вызовов на ECSS-10, для которых есть трассировка.
Путь команды:
/domain/<DOMAIN>/trace/list
Синтаксис:
list [--id <EndOfDialogID>] [--mode <MODE>] [--limit <LIMIT>]
Параметры:
-- id <EndOfDialogID> - идентификатора вызова в команде "list", либо шаблон идентификатора (проверяется с конца);
-- mode <MODE> - тип просматриваемого вызова, принимает значения:
- internal - внутренний, системный вызов;
- normal - обычный вызов;
- callback - вызов, порожденный сервисом "callback";
- dummy - фиктивный внутренний вызов;
- all - все вызовы.
По умолчанию используется режим "normal".
--limit <LIMIT> - количество вызовов, информацию о которых необходимо показать.
Пример:
lena@[mycelium1@ecss1]:/$ domain/test.domain/trace/list ------------------------------------------------------------------------------------------------------ |Short ID| Start |Stage |Original| Original |CgPN|CdPN|M|Duration| Release | ISUP |F| | | | | CgPN | CdPN | | | | | |release| | |--------+-------------------+------+--------+-----------+----+----+-+--------+------------+-------+-| |a50c1c97|23.01.2015 15:45:11|onhook| 906| 908| 906| 908|n| 12s| | | | |b2e015f4|23.01.2015 15:49:03|onhook| 906| 666| | |n| 1s| | | | |b4a940a2|23.01.2015 15:49:33|onhook| 906|*55*7*1550#| | |n| 2s| | | | |cfffbabd|23.01.2015 18:20:21|onhook| | 906| | 906|n| 36s| normal | 16/0 | | |e045d9d5|23.01.2015 18:24:54|onhook| | 906| | 906|n| 1m 6s| normal | 16/0 | | |e48ff6d1|23.01.2015 18:26:06|onhook| | 906| | 906|n| 1m 2s| normal | 16/0 | | |690785b3|23.01.2015 19:03:09|onhook| | 906| | 906|n| 0s| normal | 16/0 | | |690cb380|23.01.2015 19:03:09|onhook| | 906| | 906|n| 26s| normal | 16/0 | | |71366099|23.01.2015 19:05:26|onhook| | 906| | 906|n| 15s| normal | 16/0 | | |736c4146|23.01.2015 19:06:03|onhook| | 908| | 908|n| 9s| | | | |74c015a8|23.01.2015 19:06:25|onhook| | 908| | 908|n| 1s| normal | 16/0 | | |75da8e8b|23.01.2015 19:06:44|onhook| 910| 910| 910| 910|n| 0s|bPtyBusyUDUB| | | |76edbf23|23.01.2015 19:07:02|onhook| | 910| | 910|n| 53s| normal | 16/0 | | |8839e8a8|23.01.2015 19:11:52|onhook| | 910| | 910|n| 1m 0s| | | | ------------------------------------------------------------------------------------------------------ Legend: M - mode i - internal n - normal c - callback d - dummy F - flag show is call-process failed or not * - call-procss failed [empty] - call-procss active or successfullly finished Total call processes' records: 133 Selected call processes' records: 14
purge
Путь команды:
/domain/<DOMAIN>/trace/purge
Синтаксис:
purge [--Tb <TemplateBegin>] [--Te <TemplateEnd>] [--r <REASON>] [--c <COUNT>] [--t <Livetime>]
Команда trace/purge удаляет трассировки ядра вне зависимости от текущего бэкэнда. Будут удалены трассировки соответствующие условиям как в режиме ETS так и в режиме DETS (Удаляются только те детс трассировки, которые лежат по стандартным путям и имеют расширение .dets).
Открытые ETS трассировки игнорируются. Открытые Dets трассировки будут удалены т.к. по файлу слишком затратно понять, закончился разговор или файл закрыт по неактивности.
Команда не запрашивает подтверждение на удаление!
Чтобы не удалять все трассировки, существуют определенные флаги
--Tb <Template> - Template Begin - С какой последовательности должна начинаться трассировка (call_id) --Te <Template> - Tepmlate End - На какую последовательность должна заканчиваться трассировка (call_id) --t <Hours> - Live Time in Hour - Период в часах (от текущего момента), за который трассировки должны остаться --c <Count> - Count - Количество трассировок (выбираются самые новые), которые точно должны остаться --r <Reason> - Reason - Причина завершения вызова. Может быть normal и exception
При указании флагов --Te и --Tb вместе, поиск нужной трассировки осуществляется по шаблону <Template Begin>*<Template End>. Другими словами, если значения флагов пересекаются (к примеру указано полное имя трассировки в каждом флаге), то трассировка найдена не будет.
Остальные флаги полностью совместимы друг с другом. Ввод одного флага лишь включает соответствующий ему фильтр.
Значение флагов --t и --c не может быть отрицательным.
--с считает все трассировки (включая открытые) и Dets-трассировки расположенные по корректным путям (ручное сохранение трассировок, если оно не попадает под каноничный формат, игнорируется).
Для флага --t, время ETS трассировки - время её закрытия (release_time). Для Dets, если её нет в Actuals calls list - час создания (start_time)
Порядок применения флагов
Start -> --Te / --Tb -> --r -> --t -> --c -> Purge
Пример:
admin@[mycelium1@ecss1]:/$ domain/biysk.local/trace/purge --c 1000 Successfully removed records: 1375
save-trace
Команда предназначена для сохранения сигнальной трассировки вызова в файл.
Путь команды:
/domain/<DOMAIN>/trace/save-trace
Синтаксис:
save-trace [--Tb <BeginPattern>| --Te <EndPattern> | --Tl <CallNumber>] | [--text | --dets] --filename <host> <filename>
Параметры:
--Tb <TemplateBegin> - префикс, шаблон с начала, идентификаторов вызовов, которые необходимо удалить;
--Te <TemplateEnd> - суффикс, шаблон с конца, идентификаторов вызовов, которые необходимо удалить;
--Tl <CallNumber> - порядковый номер вызовов с конца списка трассировок, который необходимо сохранить. Например, 1 - последний вызов, 2 - предпоследний, и так далее;
--text - при указании команды трассировки вызовов будут сохраняться в текстовом файле;
--dets(по умолчанию) - при указании команды трассировки вызовов будут сохраняться в формате DETS файла. Файл в формате DETS можно будет использовать в команде "show";
--filename <HOST> <FILENAME> - при указании команды трассировки вызовов будут сохраняться на заданном хосте (<HOST>), в заданном файле (<FILENAME>).
Пример:
elena@[mycelium1@ecss1]:/$ domain/test.domain/trace/save-trace --Tl 1 --filename ecss1 my_trace.dets ok
save-media
Команда предназначена для сохранения медиа трассировки вызова в файл.
Путь команды:
/domain/<DOMAIN>/trace/save-media
Синтаксис:
save-media --Te <EndPattern> [--filename <host> <filename>]
Параметры:
--Te <TemplateEnd> - суффикс, шаблон с конца, идентификаторов вызовов, которые необходимо удалить;
--filename <HOST> <FILENAME> - Медиа трассировка сохранится на заданном хосте (<HOST>), в заданном файле (<FILENAME>). По умолчанию, этот параметр будет равен "mm-<TRACE ID>".
Пример:
admin@[mycelium1@ecss1]:/$ domain/eltex.local/trace/save-media --Te 72 Trace saved succesfull.
media-topology
Команда предназначена для просмотра медиа трассировок.
Путь команды:
/domain/<DOMAIN>/trace/media-topology
Синтаксис:
media-topology [<PARAMETERS>]
Параметры:
<PARAMETERS>:
--Te <TemplateEnd> - суффикс, шаблон с конца, идентификаторов вызовов, которые необходимо удалить;
--Tl <CallNumber> - порядковый номер вызовов с конца, который необходимо сохранить. Например, 1 - последний вызов, 2 - предпоследний, и так далее;
--file <Host> <Filename> - опция для загрузки трассировок с указанного хоста (<Host>) файла (<Filename>);
--all - опция для просмотра всех трассировок;
--apps - опция для просмотра сообщений между медиа-менеджером и application side;
--msr - опция для просмотра сообщений между медиа-менеджером и медиа-сервером;
--full - опция для печати диалога в полном формате;
--short - Prints dialog topology dumps;
--raw - Prints not optimized dialog topology.
show
Данной командой выполняется просмотр трассировки по вызовам на ECSS-10.
Путь команды:
/domain/<DOMAIN>/trace/show
Синтаксис:
show [--Te <TemplateEnd> | --Tl <TraceNumber> | --file <Filename>] [--amqp | --trike | --ccp <Module> | --all] [--Bid <BranchId>] [--payload | --short-payload [--show-sdp]] [--desired all | <Number>] [--condition <Condition>]
Параметры:
--Te <TemplateEnd> - суффикс, шаблон с конца, идентификаторов вызовов, которые необходимо отобразить;
--Tl <CallNumber> - порядковый номер вызовов с конца, который необходимо отобразить. Например, 1 - последний вызов, 2 - предпоследний, и так далее;
--file <Host> <Filename> - опция для загрузки трассировок с указанного хоста (<Host>) файла (<Filename>);
--amqp - опция для просмотра только AMQP-сообщений, установлено по умолчанию;
--trike - опция для просмотра только сообщений, которыми обмениваются сервисы внутри ядра системы;
--ccp <Module> - опция для просмотра трассировок только по заданному модулю ядра системы;
--all - опция для просмотра всех трассировок;
--Bid <BranchId> - опция для просмотра трассировок только по заданной цепочке вызова (обычный вызов состоит из одной цепочки, но в случае услуг, например, HOLD, 3WAY и другое, цепочек в рамках одного вызова будет более одной);
--payload - показывать только тело сообщения (без транспортной информации);
--short-payload - показывать только тип сообщения с минимальным набором информации, которое передается в сообщении;
--show-sdp - опция для просмотра SDP, если они включены в сообщение;
--desired <Number> - опция для просмотра событий с заданным номером <Number>, при указании значения "all" будут показаны все события.
Пример:
admin@[restfs1@ecss1]:/$ domain/test.domain/trace/show Current release: 3.6.0.150 Trace id: <<"sip-t:05368e4c402325ef">> First message time: 2016/07/01 13:54:36 1. 0 00:00:00:000 044099 i SetupInd 28052fa1b8ba7134 A:103,B:#161,sdp_o 2. 0 00:00:00:027 044099 o SetupIndAck 28052fa1b8ba7134 3. 0 00:00:00:158 n Notification {{zone,<<"default">>},{site,<<"local">>},{ccid,undefined}} 4. 0 00:00:00:158 n Notification {contact,<<101,116,104,48,59,49,64,49,57,50,46,49,54,56,46,50,51,46,56,48,63, 172,202,1>>} 5. 0 00:00:00:168 044099 o SetupResp 28052fa1b8ba7134 sdp_a 6. 0 00:00:00:180 044099 i CallProgressInd 28052fa1b8ba7134 noIndication,system,[answer,confirmed] 7. 0 00:00:00:409 044099 i ReleaseInd 28052fa1b8ba7134 normal,<<128,144>>,user,need_ack 8. 0 00:00:00:415 044099 o ReleaseIndAck 28052fa1b8ba7134
На экран выведено 8 сообщений (в самом простом вызове их намного больше). Это связано с тем, что команда по умолчанию выводит только ACP (Adapter Core Protocol) сообщения, которые являются внутренним протоколом сигнализации ECSS-10.
Все трассировки находятся в хранилищах трассировок. Количество хранилищ однозначно не регламентировано, и может варьироваться вместе с масштабированием ядра ESCC-10.
Команда /domain/<DOMAIN>/trace/show при выборе файла, не являющегося снятым трэйсом(dets-ом), выдает:
admin@mycelium1@ecss1:/$ domain/biysk.local/trace/show --file ecss1 dump1.pcap --all Command error: Invalid format of trace file. [exec at: 13.09.2019 14:29:24, exec time: 14ms, nodes: core1@ecss1]
Команды настройки подсистемы трассировки вызовов
Настройка трассировки
Чтобы избежать проблем с расходованием памяти, необходимо периодически удалять старые трассировки вызовов. Существует два механизма удаления старых трассировок:
- max_trace_count - максимальное количество трассировок вызовов в одном хранилище трассировок. При превышении данного количества удаляются наиболее старые трассировки. Это нормальный способ удаления старых трейсов.
- critical_max_events - максимальное количество сообщений в одном хранилище трассировок. При достижении количеством сообщений значения, равного critical_max_events, все трассировки в данном хранилище будут удалены. После трассировка продолжиться в обычном режиме. Это аварийный способ подчистки старых трейсов.
- lifetime - Время жизни файлов трассировок. Распространяется только на режим записи трассировок DETS.
Значение параметра max_trace_count необходимо выбирать в зависимости от того, какое количество вызовов мы хотим сохранить. Так как этот параметр определяет не общее количество трассировок в системе, а по отдельности в каждом хранилище трассировок, максимальное количество хранимых вызовов будет равняться max_trace_count * N, где N - количество хранилищ.
Допустим количество вызовов, к которым мы хотим гарантированно иметь доступ - 1000, а количество хранилищ трассировок - 4. Если мы укажем max_trace_count равным 250, это будет ошибкой, так как вызовы могут распределяться по хранилищам неравномерно, и часть более новых вызовов могут быть вытеснены из одного из хранилищ. Поэтому нет точного способа подсчета значения max_trace_count в системе целиком, исходя из желаемого количества хранимых трассировок и количества хранилищ. В рамках данной задачи можно просто установить значение max_trace_count равным 1000.
Количество сообщений в рамках одной трассировки чаще всего не превышает 2000. То есть в качестве значения critical_max_events подойдет max_trace_count * 2000. Если выбрать это значение слишком маленьким, то можно периодически терять часть трассировок, независимо от того новые они или старые. В случае, если такая ошибка происходит, нужно увеличить значение critical_max_events.
Непосредственно проверкой хранилищ трассировок и удалением старых трассировок занимается менеджер трассировок. Частота с которой он будет проверять таблицы трассировок определяется параметром suspend_time - время в миллисекундах, которое менеджер будет ждать перед следующей проверкой.
Режимы трассировки
Существует четыре режима трассировки, которые задаются с помощью параметра mode:
- compressed - трассировка с использованием сжатия. Уменьшает расход памяти, но снижает производительность.
- raw - данные трассировки сохраняются в сыром виде. Несколько увеличивает расход памяти, но не снижает производительность.
- full_compressed - аналогично режиму compressed, отличие в том, что трассировка содержит подробные данные.
- full_raw - аналогично режиму raw, отличие в том, что трассировка содержит подробные данные.
Значение параметра mode = disabled означает что трассировка выключена.
properties/
Таблица 1 - Описание общих свойств подсистемы трассировки вызовов
Название | Значение по умолчанию | Описание |
---|---|---|
backend | ets | Устройство хранения трассировки. ETS - оперативная память, DETS - жесткий диск |
cleanup_time | 02:15 | Время подчистки устаревших трассировок |
description_clean_lifetime | 60000 | Таймаут подчистки списка файлов, мс |
description_clean_timeout | 60000 | Интервал подчистки списка файлов, мс |
dets_autoclose_timeout | 15000 | Таймаут автозакрытия dets файла, если он не изменялся, мс |
lifetime | 7 | Время хранения трассировок на жестком диске. Задается в днях |
critical_max_events | 100000 | Максимальное количество сообщений в одном хранилище трассировок. |
max_trace_count | 1000 | максимальное количество трассировок вызовов в одном хранилище трассировок. |
mode | disabled | Режим трассировки для вызовов. |
suspend_time | 2000 | Период обновления данных в хранилище трассировок, задается в миллисекундах. |
clean
Данной командой осуществляется сброс значения указываемого свойства в значение по умолчанию.
Путь команды:
domain/<DOMAIN>/trace/properties/clean
Синтаксис:
clean [<FIELD>]
Параметры:
<FIELD> - свойство, значение которого будет установлено по умолчанию. Значения по умолчанию приведены в Таблице 1.
Пример:
admin@[restfs1@ecss1]:/$ domain/tc.domain/trace/properties/clean * critical_max_events
info
Отображение значения указанного свойства или всех свойств.
Путь команды:
domain/<DOMAIN>/trace/properties/info
Синтаксис:
info [<FIELD>]
Параметры:
<FIELD> - просматриваемое свойство. Описание свойств приведено в Таблице 1.
Пример:
hurd@[restfs1@ecss1]:/domain/eltex.local/trace/properties$ ./info ┌───────────────────┬───────────┬───────────────┐ │ Property │ Domain │ Value │ ├───────────────────┼───────────┼───────────────┤ │backend │eltex.local│ets │ │lifetime │eltex.local│7 │ │critical_max_events│eltex.local│200000 │ │max_trace_count │eltex.local│20000 │ │mode │eltex.local│full_compressed│ │suspend_time │eltex.local│2000 │ └───────────────────┴───────────┴───────────────┘ [exec at: 14.06.2016 13:19:52, exec time: 135ms, nodes: core1@ecss1]
set
Устанавливает требуемое значение для указанного свойства.
Путь команды:
domain/<DOMAIN>/trace/properties/set
Синтаксис:
set <FIELD> <VALUE>
Параметры:
<FIELD> - настраиваемое свойство, описание свойств приведено в Таблице 1.
Пример:
admin@[mycelium1@ecss1]:/$ domain/test.ssw/trace/properties/set mode full_compressed Property "mode" successfully changed from: disabled to full_compressed.