Настройка уровней логирования для детальной диагностики

Мы уже научились находить файлы логов и фильтровать их через 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 пусто.

  1. Плохой метод: Включить core set debug 10 и пытаться прочесть тысячи строк в секунду.
  2. Профессиональный метод:
    • Устанавливаете core set verbose 5.
    • Делаете тестовый звонок.
    • Находите строку: Executing [s@macro-dial:1] Dial("PJSIP/101", "PJSIP/102").
    • Видите, что переменная ${DIALSTATUS} возвращает CONGESTION (перегрузка/недоступность).
    • Возвращаете core set verbose 3.

Вы нашли причину за секунды, не нагружая сервер.

Теперь, когда вы умеете настраивать «зрение» системы через логи, перейдем к проверке статуса абонентов и транков в реальном времени. В следующей теме мы изучим ключевые команды диагностики SIP и PJSIP.

Понравился урок?

Сохраните прогресс и получите персональный курс по любой теме — без форм и паролей

Продолжить в Telegram