LXF158:The Journal? Что за штука…
Olkol (обсуждение | вклад) |
Olkol (обсуждение | вклад) |
||
(не показаны 4 промежуточные версии 1 участника) | |||
Строка 4: | Строка 4: | ||
<span style="color:blue"><span style="font-size: 400%">The Journal? Что за штука?</span></span> | <span style="color:blue"><span style="font-size: 400%">The Journal? Что за штука?</span></span> | ||
− | Джонатан Робертс изучает новый инструмент для записи системных логов. | + | ''Джонатан Робертс изучает новый инструмент для записи системных логов.'' |
− | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>Разве мы не говорили о журналах совсем недавно? | |
− | <span style="color: | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span> |
− | + | ||
− | + | ||
Верно, говорили, в связи с Zeitgeist. Но это была настольная программа для записи ваших посещений файлов, чтобы потом легче найти эти файлы. | Верно, говорили, в связи с Zeitgeist. Но это была настольная программа для записи ваших посещений файлов, чтобы потом легче найти эти файлы. | ||
− | А чем этот новый Journal отличается | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>А чем этот новый Journal отличается от старого? |
− | от старого? | + | |
− | + | ||
− | + | ||
+ | <span style="color:blue"><span style="font-size: 200%"> О </span></span> | ||
The Journal – это системный журнал. Он не ищет файлы, а записывает информацию о работе системы: данные об использовании ресурсов, сведения о безопасности и ошибках – все это хранится в системных журналах. | The Journal – это системный журнал. Он не ищет файлы, а записывает информацию о работе системы: данные об использовании ресурсов, сведения о безопасности и ошибках – все это хранится в системных журналах. | ||
− | В | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>Но Linux же и так записывает эту информацию. Затем и нужны все эти .log файлы в /var/log/messages, верно? |
− | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span>Да, это так. Когда системным процессам есть что записать, они в фоновом режиме посылают сообщение в соответствующую программу. Происходит это по протоколу, известному как syslog, а само приложение называется syslog daemon. | |
− | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>Да, точно, многие фоновые процессы называются демонами. Так этот syslog daemon пишет в журналы? | |
− | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span>Пишет, в некоторые. У других приложений бывают и собственные системы журналирования, и собственные форматы файлов. Логи, составленные syslog, обычно пишутся в форме обычных человеко-читаемых текстовых файлов. | |
− | В | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>Хорошо, сколько бы их ни было, зачем вообще нужна новая система журналирования? Ведь Linux сейчас себя проявляет очень хорошо, даже в сферах очень ответственных; ведь не может же нынешняя система логирования по умолчанию быть плохой? |
− | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span>Она и не плоха, и действительно многим впечатляет, но ей, как-никак, 30 лет. За это время были выявлены уязвимости, несоответствия разрослись в отдельные решения, и появились новые программы, способные использовать журналы так, как не догадались бы прежние создатели syslog. | |
− | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>Это все общие слова, а вы не могли бы привести реальный пример? | |
− | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span>Конечно. На самом деле, разработчики The Journal сумели привести порядка 14 таких примеров. | |
− | В | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>Аж целых 14! Вы вроде говорили, что syslog был не так уж плох. |
− | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span>Вот именно, и разработчики syslog всерьез усомнились в том, что все 14 реально правомерны. Но в итоге с несколькими они согласились. В том числе – с проблемой отсутствия правил, определяющих формат записываемого лог-файла, и проблемой индексации, возникающей из-за того, что эти файлы неотличимы от обычных текстовых. | |
− | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>А что тут плохого, ведь в Linux столько приложений, что не обойтись без разных требований к журналированию. Использование одного формата может ограничить свободу их работы. | |
− | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span>Действительно, малое количество требований к формату сообщения делает систему более гибкой и мощной, но в то же время усложняет чтение журналов. Пусть вам нужно написать программу для просмотра журналов ядра, Х-сервера и почты: придется иметь дело с тремя разными форматами. Это отнимет время и увеличит объем кода, а вместе с ним и вероятность ошибок. | |
− | В | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>Да, это и правда проблема. Но я не вполне убежден, что текстовый формат неудобен — ведь его можно читать при помощи простого текстового редактора, и вы никогда не забудете, как это делается. Это в стиле Unix! |
− | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span>И да, и нет. Открытый текст действительно обладает названными вами преимуществами, но такие файлы нельзя проиндексировать, и их долго искать. Например, чтобы найти в журнале все HTTP-запросы с конкретного IP-адреса, придется использовать линейный поиск, а в вычислительной среде – это очень медленно. | |
− | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>Линейный поиск? А вы не поясните, | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | В | + | |
− | + | ||
− | Линейный поиск? А вы не поясните, | + | |
что это такое? | что это такое? | ||
− | О | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span>Проще всего представить себе новогоднюю гирлянду, в которой не работает всего одна лампочка, но из-за нее не горит и вся гирлянда в целом. Чтобы найти неисправную, вам придется перепробовать все по отдельности! А теперь прикиньте, что значит проделать такое с десятками тысяч единиц данных. |
− | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>Так, суть проблемы ясна. Но, подозреваю, The Journal с этим справится? | |
− | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span>Именно. Первая проблема снимается за счет унификации формата журналов. Каждая запись состоит из ряда полей ключ/значение. Поэтому каждая программа, обращаясь к журналам, будет искать нужный ключ в любой записи, таким образом находя искомое значение. | |
− | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>То есть формат файла работает по принципу словаря? Ключ — это нужное слово, а значение — это определение? | |
− | О | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span>Да, так и есть. Сравните это с текстовыми файлами syslog, где тип данных, сами данные и другая информация перемешаны в кучу – причем в каждом файле по-своему! |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | Да, так и есть. Сравните это с текстовыми файлами syslog, где тип данных, сами данные и другая информация перемешаны в кучу – причем в каждом файле по-своему! | + | |
А такой подход не только облегчает доступ к файлам, но и достаточно гибок. Запись может состоять из множества разных полей, но они всегда будут записаны интуитивно понятным и доступным способом. | А такой подход не только облегчает доступ к файлам, но и достаточно гибок. Запись может состоять из множества разных полей, но они всегда будут записаны интуитивно понятным и доступным способом. | ||
− | В | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>Хм.... интересно. Но как это связано со скоростью нахождения информации? |
− | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span>Напрямую – никак. Но здесь поможет еще одна важная функция The Journal. Каждому лог-файлу теперь присваивается собственный длинный номер, называемый UUID. Он будет уникальным не для каждого файла в отдельности, а для конкретного типа журналов. А значит, можно создать инструментарий для распознавания типа журнала, чтобы затем просматривать поля только в них и находить необходимую информацию. | |
− | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>Многообещающее начало, но для полностью новой системы новых функций как-то маловато. | |
− | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span>На самом деле, их множество. Из того, что мы еще не упомянули, The Journal ведь является компонентом systemd – это новейший диспетчер служб и система загрузки, используемая многими дистрибутивами Linux. | |
− | В | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>О да, об этом вы уже говорили. При включении компьютера стартуют разнообразные «процессы» — фоновые программы, поддерживающие работу компьютера. Systemd контролирует эти службы, заставляя их запускаться быстрее и давая возможность перезапуска и остановки. |
− | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span>Браво, приятно видеть, что собеседник тебя действительно слушает. Поскольку systemd управляет службами, многие из которых являются программами, записывающими информацию, systemd много о них знает. А поскольку The Journal находится в составе systemd, он также может пользоваться этой информацией. К примеру, он может собирать и, что еще важнее, проверять подлинность массы контекстной информации, полезной для отладки программ: ID процессов, места хранения исполняемых файлов, и т. д. | |
− | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>Проверять подлинность? Похоже, это насчет безопасности. | |
− | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span>Да. Ведь по сути, любая служба может отправить сообщение в syslog и записать туда любую информацию, а syslog никак не проверяет ее истинность. А злонамеренные программы могут воспользоваться этим для эмуляции законных программ и маскировки своих действий в журнале, чтобы вредить незаметно. Есть и много других функций. Читайте о них в подробном анонсе выхода The Journal (http://tinyurl.com/853f73n). | |
− | В | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>Непременно. Еще вопрос: каковы у The Journal шансы на выживаемость? Никто не любит перемен, особенно если есть действующая альтернатива. |
− | О | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span>Очень хороший вопрос. Поскольку The Journal интегрирован в systemd, уже входящего в состав многих дистрибутивов, есть все шансы на то, что он обретет популярность. Тем не менее, существует некое предубеждение против самой идеи The Journal. Одни сомневаются в его безопасности, другим жалко расставаться с текстовыми файлами, третьи считают, что лучше было бы подправить syslog, чем изобретать велосипед. Не говоря уж о том, что разработчикам многих других проектов придется переписать свои программы, чтобы воспользоваться новыми функциями The Journal. |
− | + | <span style="color:blue"><span style="font-size: 200%"> В </span></span>Так значит, следует ожидать грядущих | |
− | + | ||
− | + | ||
− | + | ||
− | В | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | Так значит, следует ожидать грядущих | + | |
боев? | боев? | ||
− | О | + | <span style="color:blue"><span style="font-size: 200%"> О </span></span>Можно и так сказать. Но не забудем о том, что на счету разработчиков The Journal как минимум еще несколько весьма противоречивых решений для Linux, включая небезызвестный PulseAudio. И тем не менее все они вошли в состав большинства дистрибутивов, так что, похоже, эти ребята знают, что делают. | |
− | + | ||
− | Можно и так сказать. Но не забудем о том, что на счету разработчиков The Journal как минимум еще несколько весьма противоречивых решений для Linux, включая небезызвестный PulseAudio. И тем не менее все они вошли в состав большинства дистрибутивов, так что, похоже, эти ребята знают, что делают. | | + | |
− | «The Journal – это компонент | + | «The Journal – это компонент systemd, новый диспетчер служб и система загрузки.» |
− | systemd, новый диспетчер служб | + | |
− | и система загрузки.» | + |
Текущая версия на 05:41, 15 сентября 2018
|
|
|
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, новый диспетчер служб и система загрузки.»