Черное поле в эфире
Инженеры Известий сообщили, что в 04:40 эфир свалился в черное поле. При подключении через Anydesk было установлено, что все мастер шаблоны выключены. Их загрузка помогла решить проблему, но остался вопрос – из-за чего это произошло?
Установить причину возникновения данной проблемы нам помогут логи, они находятся внутри БД, в папке Logs:
Каждый модуль Кэррота ведёт свои логи в отдельных файлах. Файлы делятся на три типа – sys, user и log
Sys – системные логи, здесь логируется информация о том, что происходит в системе в целом.
User – пользовательские логи. Здесь хранится информация о действиях пользователя.
Log – системные логи в формате xml, мы постепенно от них уходим. Здесь хранится всё тоже самое, что и в файле sys
В названии файла так же содержится дата и время начала логирования, новый файл создаётся при перезапуске приложения.
Если проблема возникла с выдачей графики, то в первую очередь нужно смотреть логи движка. В тракте Известий движок находится на отдельной машине, соответственно, сначала нам потребуются логи именно с неё.
Открываем папку Logs и ищем файлы движка, которые подходят нам по времени (мы знаем, что инцидент произошел в 04:40):
Видим два файла, которые были изменены 14.04 в 5:47, а начали логироваться 11.03 в 00:24. Наше время находится именно в этом промежутке.
Вы спросите – почему файла два? Потому что в тракте Известий на одной машине запускаются сразу два движка. Мы не знаем в каком именно возникла проблема, так что будем смотреть оба.
Откроем первый файл и найдём наше время:
Ничего подозрительного в этом промежутке не видно, поэтому переходим ко второму файлу:
Во втором файле в 04:40 тоже всё чисто, но есть событие в 04:27. Учитывая, что других вариантов нет – делаем вывод, что это оно.
Проблемное место мы нашли, теперь давайте посмотрим, что тут есть:
«Instance_OnSetTemplateStateWithDelay» говорит нам о том, что событие было запущено по команде от Скайларка. Если бы ивент был запущен через наш плейлист, тут было бы написано «SetTemplateState»
Здесь мы видим название ивента. Проблемный ивент называется OUT
А тут видим название шаблона, к которому он относится и его стейт. В нашем случае шаблон – Iz_Poly_SL, стейт – OUT
Мы знаем, что «Iz_Poly_SL» это мастер шаблон, отвечающий за стейт-логику. Если его отключить – движок покажет черное поле. Так что теперь мы знаем, что проблема возникла из-за того, что Скайларк прислал команду на выключение шаблона Iz_Poly_SL.
Возникает новый вопрос: такого ивента существовать не должно, откуда он тогда появился?
Разобраться в этом нам помогут логи серверной машины. К сожалению, мы не знаем время создания файла, поэтому воспользуемся поиском и будем перебирать файлы:
Нам нужны пользовательские логи с сервера, поэтому введем в поиске «server_user» и начнем перебирать файлы.
Нам нужно найти информацию о том, когда и кем был создан данный ивент. Для этого нам потребуется ExternalID шаблона, его можно найти в Веб-плейлисте:
Откроем первый файл, нажмём CTR+F и введём в поиск ExtID шаблона:
В первом файле ничего нет, переходим к следующему:
Вот и оно! Ивент был создан через Generate Events, теперь осталось узнать кем и когда:
Вывод
10 марта, в 23:52 пользователь «Administrator» создал ивент «OUT», который отвечает за выключение мастер-шаблона «Iz_Poly_SL». Спустя четыре дня, оператор Скайларка по ошибке включил в его в очередь для автоматического воспроизведения. В 04:29 14 марта ивент отработал и выключил мастер-шаблон. Именно это и привело к появлению черного поля.
Соответственно, наша система отработала корректно – ошибка была вызвана человеческим фактором.