Re: Методологический вопрос

От: Dmitry Akindinov <CGatePro_at_mx_ru>
Дата: Thu 24 Mar 2011 - 12:14:51 MSK

Здравствуйте,

On 2011-03-24 11:11, Benjamin Franklin wrote:
> Добрый день, коллеги.
>
> Подскажите пожалуйста, как правильно фильтровать журнал на
> нагруженном сервере? К примеру, клиент жалуется, что у него не
> производится перевод звонков при соблюдении некоторых дополнительных
> условий. Как мне отфильтровать все события, которые соответствуют
> одному конкретному входящему звонку и его перенаправлению, и только их?
> В лог ежесекундно сыплется куча сообщений, относящихся к различным
> событиям.

Для сбора лога одного SIP диалога обычно достаточно установить уровень лога Settings -> Real-Time -> SIP -> Sending -> Transport в All Info (хотя бы на время теста, когда проблема воспроизводится). Далее в логе надо найти запрос INVITE, просто по строке INVITE sip:набранныйномер

Это даст вам ID пакета SIP: SIPDATA-012345. Далее фильтруете лог по этому SIPDATA-012345, чтобы увидеть пакет целиком. Находите в пакете заголовок Call-ID и копируете его значение (можно не целиком, а иногда даже лучше до символа @, если он в значении этого заголовка есть). Теперь фильтруете лог по этому кусочку Call-ID, и получаете несколько строчек. Замечаете временную отметку первой и последней строчки и копируете их в поля временного интервала лога (отнимите пару секунд от начального значения и добавьте секунд пять конечному значению). Включите опцию Keyed в окне просмотра лога. Так вы можете получить сигнальный лог звонка полностью.

С трансфёрами немного сложнее, поскольку там обычно присутствует два диалога SIP - основной и тот, в который осуществляется этот трансфёр. В таком случае надо найти в основном диалоге запрос REFER и, если в нём есть заголовок Replaces, то он будет содержать URL-encoded значение Call-ID второго диалога. Его надо скопировать, обычно хватает небольшого кусочка до первого кодированного символа (до первой %XX последовательности). И аналогично основному получить лог этого SIP диалога. Этого достаточно в большинстве случаев. Но если надо отлаживать проблемы с потерей звука во время трансфёров, то могут понадобится и логи MEDIA и *PROXY (Settings -> Real-Time -> Media, Settings -> Network -> LAN IPs -> Media Proxy) уровня Low Level (в исключительных случаях - All Info). Номер объекта медиаканала (MEDIA-123456) или медиапрокси (MEDIAPROXY/UDPPROXY-987654), использовавшийся для конкретного диалога, обычно удаётся определить с помощью номера порта, который CGPro объявил в SDP исходящего INVITE или 200-INVITE: просто скопировав номер порта из m-атрибута SDP и отфильтровав по нему лог (лучше бы - уже ограниченный временным интервалом сигнального лога), можно получить номер объекта.

Если же логи готовятся для отправки в support, то лучше всего сохранить лог без всякой фильтрации, лишь обрезав его по времени начала и конца звонка, в виде текстового файла. Можно ужать (лучше всего - gzip/zip/bzip, rar не надо, пожалуйста) и послать в виде аттачмента. Пожалуйста, не надо вставлять лог прямо в тело письма.

Привет первому постмастеру.

-- 
Best regards,
Dmitry Akindinov -- Stalker Labs.
Получено Thu Mar 24 09:14:58 2011

Этот архив был сгенерирован hypermail 2.1.8 : Fri 24 Apr 2015 - 16:17:11 MSK