LXF158:The Journal? Что за штука…
|
|
|
The Journal? Что за штука?
Джонатан Робертс изучает новый инструмент для записи системных логов.
В Разве мы не говорили о журналах совсем недавно?
О Верно, говорили, в связи с Zeitgeist. Но это была настольная программа для записи ваших посещений файлов, чтобы потом легче найти эти файлы.
В А чем этот новый Journal отличается от старого?
О The Journal – это системный журнал. Он не ищет файлы, а записывает информацию о работе системы: данные об использовании ресурсов, сведения о безопасности и ошибках – все это хранится в системных журналах.
В Но Linux же и так записывает эту информацию. Затем и нужны все эти .log файлы в /var/log/messages, верно?
О Да, это так. Когда системным процессам есть что записать, они в фоновом режиме посылают сообщение в соответствующую программу. Происходит это по протоколу, известному как syslog, а само приложение называется syslog daemon.
В Да, точно, многие фоновые процессы называются демонами. Так этот syslog daemon пишет в журналы?
О Пишет, в некоторые. У других приложений бывают и собственные системы журналирования, и собственные форматы файлов. Логи, составленные syslog, обычно пишутся в форме обычных человеко-читаемых текстовых файлов.
В Хорошо, сколько бы их ни было, зачем вообще нужна новая система журналирования? Ведь Linux сейчас себя проявляет очень хорошо, даже в сферах очень ответственных; ведь не может же нынешняя система логирования по умолчанию быть плохой?
О Она и не плоха, и действительно многим впечатляет, но ей, как-никак, 30 лет. За это время были выявлены уязвимости, несоответствия разрослись в отдельные решения, и появились новые программы, способные использовать журналы так, как не догадались бы прежние создатели syslog.
В Это все общие слова, а вы не могли бы привести реальный пример?
О Конечно. На самом деле, разработчики The Journal сумели привести порядка 14 таких примеров.
В Аж целых 14! Вы вроде говорили, что syslog был не так уж плох.
О Вот именно, и разработчики syslog всерьез усомнились в том, что все 14 реально правомерны. Но в итоге с несколькими они согласились. В том числе – с проблемой отсутствия правил, определяющих формат записываемого лог-файла, и проблемой индексации, возникающей из-за того, что эти файлы неотличимы от обычных текстовых.
В А что тут плохого, ведь в Linux столько приложений, что не обойтись без разных требований к журналированию. Использование одного формата может ограничить свободу их работы.
О Действительно, малое количество требований к формату сообщения делает систему более гибкой и мощной, но в то же время усложняет чтение журналов. Пусть вам нужно написать программу для просмотра журналов ядра, Х-сервера и почты: придется иметь дело с тремя разными форматами. Это отнимет время и увеличит объем кода, а вместе с ним и вероятность ошибок.
В Да, это и правда проблема. Но я не вполне убежден, что текстовый формат неудобен — ведь его можно читать при помощи простого текстового редактора, и вы никогда не забудете, как это делается. Это в стиле Unix!
О И да, и нет. Открытый текст действительно обладает названными вами преимуществами, но такие файлы нельзя проиндексировать, и их долго искать. Например, чтобы найти в журнале все HTTP-запросы с конкретного IP-адреса, придется использовать линейный поиск, а в вычислительной среде – это очень медленно.
В Линейный поиск? А вы не поясните, что это такое?
О Проще всего представить себе новогоднюю гирлянду, в которой не работает всего одна лампочка, но из-за нее не горит и вся гирлянда в целом. Чтобы найти неисправную, вам придется перепробовать все по отдельности! А теперь прикиньте, что значит проделать такое с десятками тысяч единиц данных.
В Так, суть проблемы ясна. Но, подозреваю, The Journal с этим справится?
О Именно. Первая проблема снимается за счет унификации формата журналов. Каждая запись состоит из ряда полей ключ/значение. Поэтому каждая программа, обращаясь к журналам, будет искать нужный ключ в любой записи, таким образом находя искомое значение.
В То есть формат файла работает по принципу словаря? Ключ — это нужное слово, а значение — это определение?
О Да, так и есть. Сравните это с текстовыми файлами syslog, где тип данных, сами данные и другая информация перемешаны в кучу – причем в каждом файле по-своему!
А такой подход не только облегчает доступ к файлам, но и достаточно гибок. Запись может состоять из множества разных полей, но они всегда будут записаны интуитивно понятным и доступным способом.
В Хм.... интересно. Но как это связано со скоростью нахождения информации?
О Напрямую – никак. Но здесь поможет еще одна важная функция The Journal. Каждому лог-файлу теперь присваивается собственный длинный номер, называемый UUID. Он будет уникальным не для каждого файла в отдельности, а для конкретного типа журналов. А значит, можно создать инструментарий для распознавания типа журнала, чтобы затем просматривать поля только в них и находить необходимую информацию.
В Многообещающее начало, но для полностью новой системы новых функций как-то маловато.
О На самом деле, их множество. Из того, что мы еще не упомянули, The Journal ведь является компонентом systemd – это новейший диспетчер служб и система загрузки, используемая многими дистрибутивами Linux.
В О да, об этом вы уже говорили. При включении компьютера стартуют разнообразные «процессы» — фоновые программы, поддерживающие работу компьютера. Systemd контролирует эти службы, заставляя их запускаться быстрее и давая возможность перезапуска и остановки.
О Браво, приятно видеть, что собеседник тебя действительно слушает. Поскольку systemd управляет службами, многие из которых являются программами, записывающими информацию, systemd много о них знает. А поскольку The Journal находится в составе systemd, он также может пользоваться этой информацией. К примеру, он может собирать и, что еще важнее, проверять подлинность массы контекстной информации, полезной для отладки программ: ID процессов, места хранения исполняемых файлов, и т. д.
В Проверять подлинность? Похоже, это насчет безопасности.
О Да. Ведь по сути, любая служба может отправить сообщение в syslog и записать туда любую информацию, а syslog никак не проверяет ее истинность. А злонамеренные программы могут воспользоваться этим для эмуляции законных программ и маскировки своих действий в журнале, чтобы вредить незаметно. Есть и много других функций. Читайте о них в подробном анонсе выхода The Journal (http://tinyurl.com/853f73n).
В Непременно. Еще вопрос: каковы у The Journal шансы на выживаемость? Никто не любит перемен, особенно если есть действующая альтернатива.
О Очень хороший вопрос. Поскольку The Journal интегрирован в systemd, уже входящего в состав многих дистрибутивов, есть все шансы на то, что он обретет популярность. Тем не менее, существует некое предубеждение против самой идеи The Journal. Одни сомневаются в его безопасности, другим жалко расставаться с текстовыми файлами, третьи считают, что лучше было бы подправить syslog, чем изобретать велосипед. Не говоря уж о том, что разработчикам многих других проектов придется переписать свои программы, чтобы воспользоваться новыми функциями The Journal.
В Так значит, следует ожидать грядущих боев?
О Можно и так сказать. Но не забудем о том, что на счету разработчиков The Journal как минимум еще несколько весьма противоречивых решений для Linux, включая небезызвестный PulseAudio. И тем не менее все они вошли в состав большинства дистрибутивов, так что, похоже, эти ребята знают, что делают. |
«The Journal – это компонент systemd, новый диспетчер служб и система загрузки.»