Настройка уровней логирования для детальной диагностики
Мы уже научились находить файлы логов и фильтровать их через grep, но в стандартном режиме Asterisk скрывает детали. Чтобы разобраться в причинах сбоя, нужно настроить уровни логирования. Это позволит переключаться между общим обзором звонков и детальным анализом работы кода, не перегружая диск сервера.
Иерархия и типы сообщений
В Asterisk потоки информации разделены. Если включить всё сразу, вы получите «шум», в котором невозможно найти нужную транзакцию. Ориентируйтесь на четыре основных типа событий:
- Verbose (детализация диалплана) — главный инструмент администратора. Показывает прохождение вызова через контексты, выполнение приоритетов и значения переменных.
- Debug (отладка кода) — сообщает о внутренней работе модулей и драйверов. Нужен, когда логика диалплана верна, но технология (например, PJSIP) ведет себя странно.
- Security — фиксирует попытки входа, отказы в авторизации и подозрительную активность.
- Notice, Warning, Error — системные уведомления о штатных изменениях, ошибках в конфигах или критических сбоях.
Соотношение детализации и нагрузки на систему можно увидеть на Схеме 1.
Настройка через logger.conf
Файл logger.conf определяет, куда и что записывает Asterisk. В FreePBX ручные правки этого файла требуют осторожности, но понимание его структуры необходимо для работы «под капотом».
В секции [logfiles] задаются назначения потоков. Пример настройки для разделения диагностики и глубокой отладки:
[logfiles]
; Формат: имя_файла => уровни,через,запятую
console => notice,warning,error
messages => notice,warning,error
full => notice,warning,error,debug,verbose,dtmf,fax
security_log => security
💡 После правки конфига обязательно выполните
logger reloadв консоли Asterisk, иначе изменения не вступят в силу.
Динамическое управление уровнями (CLI)
На высоконагруженных АТС нельзя держать максимальный лог включенным постоянно — это «съест» место на диске и замедлит обработку вызовов. Используйте команды CLI для включения отладки «на лету»:
Управление Verbose
core set verbose 3— базовый уровень (видим основные шаги диалплана).core set verbose 5— высокая детализация (видим функции и переменные).core set verbose 0— тихий режим.
Управление Debug
core set debug 5— глубокая отладка ядра.- ⚠️ Внимание: Никогда не оставляйте этот уровень включенным на рабочем сервере дольше, чем нужно для теста.
Селективное и детальное логирование
Иногда проблема кроется не в логике Asterisk, а в протоколе. Для PJSIP существует детальное логирование конкретного модуля. Это позволяет видеть «чистые» SIP-пакеты без лишнего системного мусора:
# Показать все SIP-сообщения в консоли
pjsip set logger on
# Отследить пакеты только для конкретного IP (например, шлюза или телефона)
pjsip set logger host 192.168.1.100
Практика: Поиск «тишины» в диалплане
Ситуация: вызов обрывается, но в логах error пусто.
- Плохой метод: Включить
core set debug 10и пытаться прочесть тысячи строк в секунду. - Профессиональный метод:
- Устанавливаете
core set verbose 5. - Делаете тестовый звонок.
- Находите строку:
Executing [s@macro-dial:1] Dial("PJSIP/101", "PJSIP/102"). - Видите, что переменная
${DIALSTATUS}возвращаетCONGESTION(перегрузка/недоступность). - Возвращаете
core set verbose 3.
- Устанавливаете
Вы нашли причину за секунды, не нагружая сервер.
Теперь, когда вы умеете настраивать «зрение» системы через логи, перейдем к проверке статуса абонентов и транков в реальном времени. В следующей теме мы изучим ключевые команды диагностики SIP и PJSIP.
Понравился урок?
Сохраните прогресс и получите персональный курс по любой теме — без форм и паролей
Продолжить в Telegram