Структура логов и использование команд (tail, grep)
Мы переходим к критически важному этапу в работе администратора — умению «слышать» систему. До этого момента мы настраивали логику звонков, работали с CallerID и временными группами в графическом интерфейсе и конфигурационных файлах. Но что делать, если звонок пошел не по тому сценарию, который мы задумали? Ответ всегда кроется в логах.
Логи Asterisk — это детальный «бортовой самописец». Он фиксирует всё: от регистрации телефона до каждой строчки диалплана. Умение быстро фильтровать эти данные отличает профессионала от новичка.
Анатомия лог-файла
Основной файл для работы — /var/log/asterisk/full. В нем хранится история событий системы. Каждая строка имеет строгую структуру:
[2026-05-15 10:30:05] VERBOSE[12345][C-0000000a] pbx.conf: Executing [101@from-internal:1] Dial("PJSIP/100-00000010", "PJSIP/101") in new stack
Разберем компоненты:
- Метка времени: помогает сопоставить лог с жалобой пользователя.
- Уровень важности (VERBOSE): показывает степень детализации.
- Thread ID (12345): идентификатор процесса внутри Asterisk.
- Call-ID (C-0000000a): уникальный маркер конкретного звонка. Это ваш главный ориентир.
- Текст события: описание действия (здесь — выполнение команды
Dial).
Как показано на Схеме 1, идентификатор вызова позволяет выделить одну логическую цепочку из общего хаоса данных.
Инструменты: tail и less
Забудьте про nano или vi для чтения логов. На «боевом» сервере файл может весить несколько гигабайт — попытка открыть его целиком «повесит» систему. Используйте утилиты, которые читают данные порциями.
Мониторинг в реальном времени: tail
Команда tail выводит последние строки файла. Чтобы видеть новые события мгновенно, используйте ключ -F (follow).
- Плохо:
tail /var/log/asterisk/full(покажет 10 строк и закроется). - Правильно:
tail -F /var/log/asterisk/full. Ключ-F(заглавный) лучше строчного, так как он продолжает следить за файлом даже после его ротации (пересоздания).
Изучение истории: less
Если нужно пролистать лог назад, используйте less. Она открывает файл постранично и бережет оперативную память.
less /var/log/asterisk/full
Горячие клавиши в less:
G— прыгнуть в самый конец;g— вернуться в начало;/— начать поиск по слову или Call-ID;q— выход.
Искусство фильтрации: grep
Когда на сервере 50 одновременных звонков, лог превращается в «простыню». Чтобы не утонуть в ней, используйте grep — инструмент поиска по шаблону.
Анализ логов через grep строится по алгоритму «Золотой цепочки»:
- Находим зацепку (номер телефона или IP).
- Вычисляем Call-ID этого вызова.
- Фильтруем весь лог по этому Call-ID.
Пример поиска всех строк конкретного вызова:
grep "C-0000000a" /var/log/asterisk/full
💡 Совет: Номер телефона может быть записан как
7999...,8999...или быть частью SIP-адреса. Используйте ключ-i, чтобы игнорировать регистр при поиске.
Полезные ключи grep:
-B 3(Before) — показать 3 строки ДО найденной.-A 5(After) — показать 5 строк ПОСЛЕ найденной.-E— включить расширенные регулярные выражения.
Практический кейс: Почему сорвался звонок?
Жалоба: «Звонок на номер 101 оборвался около 10:30».
- Ищем зацепку:
grep "2026-05-15 10:30" /var/log/asterisk/full | grep "101" - Находим ID: в строке видим
[C-0000004b]. - Изолируем вызов:
grep "C-0000004b" /var/log/asterisk/full > call_debug.txt
Теперь у вас в файле call_debug.txt только история этого звонка без лишнего шума. 🛰️
Мы научились извлекать данные. Но что делать, если Asterisk «молчит» и информации в логе не хватает для диагноза? В следующей теме мы разберем уровни детализации и научим систему рассказывать о своих процессах гораздо подробнее.
Понравился урок?
Сохраните прогресс и получите персональный курс по любой теме — без форм и паролей
Продолжить в Telegram