LINUX.ORG.RU

The Journal: жизнь после syslog

 , ,


1

2

В своей новой статье Леннарт Поттеринг (Lennart Poettering), известный разработкой звукового сервера PulseAudio и системы загрузки systemd, объяснил, чем его не устраивает syslog, и предложил свою универсальную реализацию системного журнала в Linux.

Среди всего прочего, в этой реализации syslog нет поддержки протокола передачи syslog и вообще нет поддержки сети, зато вместо текстовых логов используются бинарные форматы данных, для доступа к которым предлагается отдельная разделяемая библиотека.

Поскольку данная разработка Леннарта войдёт в Fedora 17 и далее, скорее всего, разойдётся по всем дистрибутивам, я взял на себя труд перевести и предложить вашему вниманию эту статью.

>>> Перевод статьи

★★★★★

Проверено: timur_dav ()
Последнее исправление: JB (всего исправлений: 2)

Ответ на: комментарий от myhand

> никто параллельной поддержкой разных инитов для разных портов заниматься явно не намерян.

Всё отнюдь не так однозначно.

tailgunner ★★★★★
()
Ответ на: комментарий от system-root

> начните вы уже двигаться хоть куда-то!

<poetteringMode>

[code] int main (int argc, char **argv) { return 0; } [/code]

Лови реализацию бинарных логов, звука по сети, lpt, com, adsl c losseless сжатием, обработкой на GPU, и патчем к ядру, для sysctl -w ohuitelno=yes.

И не выпендривайся, ты всё это получил бесплатно! Используй или GTFO

</poetteringMode>

Ты так себе видишь инновации, енджой!

iBliss
()
Ответ на: комментарий от AVL2

> Для приложений ничего не меняется, они как и прежде зовут syslog()

это вы где-то дополнительно почерпнули? где?

taker
()

Как я рад, что пользуюсь слакой, которую это не затронет в обозримом будущем (или и вовсе не затронет, как в случае с GRUB, PAM и прочих PulseAudio)

some-body ★★
()
Ответ на: комментарий от tailgunner

> А смысл? Какие всё же претензии к systemd, после того, как его отладят?

Случайный запуск случайных даемонов в случайном порядке же.

Использование систем-ди не решает никаких проблем, но вносит хаус и бардак

anonymous
()
Ответ на: комментарий от DRVTiny

> Не понимаю всё же, чего вы так раскудахтались-то? Ну будете вместо less использовать какой-нибудь seelog FILE | less, а вместо tail -f FILE - seelog -f FILE или даже seelog FILE | tail -f

Заместо awk что использовать? А остальные вещи из text/file utils?

Как добавить поддержку сети? использовать netcat?

anonymous
()
Ответ на: комментарий от tailgunner

костыли

> что случилось с Хромом
думаю, что всё-таки случай с Хромом - нетипичен.
мне эта тема интересна, начал копать, забавные вещи накопал,
если всё действительно так обстоит как авторы Хрома писали - закопать его надо немедленно.:)
а вообще, тебе же совет был от чела - переходи на Генту, будет тебе счастье!
а так вообще чел совершенно правильно пишет рецепты про клинические приложения и про LIBRARY_PATH и т.д. тем более что обычно Ынтерпрайз приложениям всё равно какая версия библиотеки, важнее чтобы нужные вызовы там были.
в конце концов - тебе шашечки или ехать?;)

mumpster ★★★★★
()
Ответ на: комментарий от tailgunner

> А смысл? Какие всё же претензии к systemd, после того, как его отладят?

А разве при решении высокоуровневой задачи на низкоуровневом языке не бывает искушения упростить модель в угоду удобства конкретной реализации?

Претензия: возможно навязывают (имеют право, да) не лучший (отталкиваясь от реализации) вариант, вероятно еще и прибитый.

anonymous
()
Ответ на: комментарий от tailgunner

> Расколько я понимаю, systemd просто умеет запускать по требованию службы, использующие D-Bus. Ничего позорного в этом я лично не вижу.

Насколько я понимаю, он сам — «служба, использующая dbus».

geekless ★★
()
Ответ на: комментарий от DRVTiny

event log shall not pass

> к бинарным логам хороший API
iMHO тут все венду видели и знают как оно на деле - так что в /dev/null поттерлог

mumpster ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

> зато он (возможно) зависит от всяких новых фич ядра, типа усыновления сиротских процессов юзера не инит-ом, а предназначенным для этого процессом юзера

Эм. А разве он сам не инит?

geekless ★★
()
Ответ на: комментарий от nexfwall

98

> старую добрую Windows 98
на современном желез она просто не взлетит
ладно бы LFS предложил!

mumpster ★★★★★
()
Ответ на: костыли от mumpster

> если всё действительно так обстоит как авторы Хрома писали - закопать его надо немедленно.:)

А что там было?

geekless ★★
()
Ответ на: комментарий от www_linux_org_ru

индексы

> сложности реализации «индексации на лету»
да нет никаких особых сложностей.
тема избитая, многократно обкатанная и разработанная.
есть способы достраивания индексов, особенно хорошо это работает в разрезе индексов к текстам. и да, «сразу по всему датасетуЭ - записать невозможно, обычно это совсем не 1 сектор, =>те же яйца только в профиль

mumpster ★★★★★
()
Ответ на: комментарий от anonymous

> наклепать враппер с экспортом LD_PRELOAD
это мне чоле? у меян с этим проблем нет.
пиши хвостострелу, у него жеж проблемки с этим ;)

mumpster ★★★★★
()
Ответ на: комментарий от vold

journal

> появится journal программы пропатчат
уже смешно

mumpster ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

свекла

> UUID-ы должны быть уникальны
свекла, ну мозгами пораскинь хот немного - зачем нам ещё один мёртворождённый COM/DCOM?

mumpster ★★★★★
()
Ответ на: Хром от mumpster

Загугливается только баг с перерасходом памяти в libevent. Поэтому и не ясно, что ты имел ввиду, говоря про закопать.

geekless ★★
()

Давайте скинемся и пристрелим этого троля?

То ему alsa не понравилось и 3 года отлаживали его поделку, а самым популярным how-to по решению проблем приложения с pulseaudio - было отключить нафик. Потому systemd - который променял гибкость шеловых скриптов - на сомнительную скорость загрузки. Потом заявы что другие операционные системы дескать тормозят развитие Linux, так как заставляют писать переносимый код. Теперь эта хрень - к которой по мимо журнала - потребуется еще аналог fsck и тп, ибо не дай бог при записи произойдет сбой.

Убейте кто нить этого троля, а лучше с родителями - ибо такие жить не должны.

anonymous
()
Ответ на: индексы от mumpster

> сложности реализации «индексации на лету»

да нет никаких особых сложностей.
тема избитая, многократно обкатанная и разработанная.

И во сколько возрастает время вставки в такой индекс с ростом количества записей и возможности возникновения колизии из-за недостаточной длины хэша ?

anonymous
()
Ответ на: комментарий от taker

>это вы где-то дополнительно почерпнули? где?

В статье. Раз уж я ее переводил, то заодно и прочитал ;).

В конце статьи рассказывается, как будет выглядеть система с работаюим журналом и сислогом. Нативный вызов журнала используется только в том случае, если надо поместить свои особые поля или бинарные даные в журнале.

Если вам достаточно текстовой строки для сообщения, то используйте старый syslog(). При этом сообщение появится как в обычном файле сислога, так и в дополненом защищеными полями и бинарными индексами виде в журнале.

Хотите, грепайте его после этого в сислоге, а хотите, ищите в реальном времени в журнале.

AVL2 ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

>90% логов хранятся в прокрученном и сжатом виде. Не просто бинарном, который могла бы прочитать любая программа на BASIC'е, а в формате архива, который изначально представляет собой хаотическое нагромождение байт, а открывается довольно сложным алгоритмом. Почему же десятилетиями никто не кричал «караул, проклятый logrotate превращает мои любимые текстовые логи в мусор!» ?

Следует различать актуальные логи и неактуальные. Неактуальные для экономии места архивируются, актуальные - текстовые.

alex-w ★★★★★
()
Ответ на: комментарий от tailgunner

>Ты вообще читал этот топик?

Читал.

В отличие от пульсы, он не зависит от железа, так что с отладкой гораздо проще.

Вот не вижу я никакой разницы в легкости отладки между пульсом и systemd. И поэтому не верю, что Леннарт в состоянии довести их вместе или оотдельности до ума.

AVL2 ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Просто Красношапка из Гнома делает Винду #2.

А все перечисленное (+ свалить бинари в один каталог) - следствие.

Все-бы ничего, только:

1) Красношапка (в лице гномеров) активно участвует во внесении всего этого дерьма в код Xorg, тем самым временами превращая установку и настройку иксов в «здесь читать, здесь не читать, здесь рыбу заворачивали».

2) Гномогвоздеприбитые дистрибутивы ВЫНУЖДЕНЫ портировать все это уродство к себе.

3) Подход при этом выбран «Не нравится - уёб.йте!»

sergv
()
Ответ на: комментарий от aptyp

> Пользование линуксом это религия что ли для тебя???

У вас талант обращать внимание на несущественную часть, или просто так удобнее?

anonymous
()
Ответ на: комментарий от anonymous

Это мой недостаток, просто остальную часть я не понял.

aptyp ★★★★
()
Ответ на: комментарий от sergv

GNU/Linux архитектурно скатится в винду, и придётся разумным людям в какой-то момент собраться с силами и пилить с нуля новую систему. На это уйдёт еще лет 20, после чего она тоже скатится в винду.

geekless ★★
()
Ответ на: комментарий от farafonoff

Нет проблем. В Linux это делается через UNIX-сокет,

man unix

искать SCM_CREDENTIALS

Я уверен, что в некоторых реализациях syslog имеется не по одному патчу, реализующему данный функционал, но он всегда опциональный и в mainstream by default его нигде нет. Вот не смотрел, не проверял, просто уверен. И я знаю почему, есть определённые причины, почему так делать не стоит, но самое главное - это не надо. В Linux есть audit log, там пишется всё, что вы хотите и PID и название программы и UID и UID, начавший сессию (на случай, если вы использовали sudo или su), и все об этом знают, кроме поттеринга. И пожалуйста, допиливайте auditd до полного совершенства. Подключайте к нему авторотацию логов, бинарные форматы, потом уговаривайте всех программистов, что им надо использовать не syslog, а audit. То, что предлагает поттеринг, предполагает изменение исходного кода каждой программы, использующей syslog, если Вам это не понятно.

Для этого городить велосипед с бинарными квадратными колёсами? Вместо работающей системы?

Поттеринг мальчик впечатлительный, это понятно. Он увидел, как взламываются системы, это сильное впечатление. Но решать его он задумал, не будучи в курсе существования того же SELinux, даже его аналогов. При включенном SELinux система аудита работает вполне соответственно специфическим требованиям специфических товарищей. УЖЕ. СЕГОДНЯ. Уже несколько лет как. Его решение не решит его проблемы, не защитит логи от злонамеренной модификации. Не добавит в мир добра и света. Только даст ему психологическую разрядку. Оно не нужно. Нам. Проблема не в этом.

Проблема в том, что плоды его душевных травм имеют тенденцию внедряться на каждый компьютер ВОПРЕКИ мнению неангажированных экспертов.

anonymous
()
Ответ на: комментарий от alex-w

>Следует различать актуальные логи и неактуальные

«Неактуальные» нужны ничуть не менее часто, чем актуальные. Логи вообще довольно часто бывают нужны, когда уже что-то произошло, а это «уже» могло быть и день назад, и неделю назад.
При этом использование компактных бинарных логов вообще избавляет во многом от активного logrotate'а, что явно облегчает задачу автоматизации анализа логов в тех же BASH-скриптах.

DRVTiny ★★★★★
()
Ответ на: комментарий от DRVTiny

> ... использование компактных бинарных логов ...

С какого перепугу они «закомпактятся»-то???

Данные в текстовой области с хорошей точностью можно считать случайными.

Или придется для КАЖДОЙ программы кидать куда-нить в /usr/share/logger/* перевод кодов в простое человеческое текстовое описание. Но тогда опять будет куча вопросов типа: «pppoed вернул ошибку #345678»

sergv
()
Ответ на: комментарий от anonymous

> недостаточной длины хэша
а я где-то вообще сказал что надо использовать именно hash?
тем более для текстовых строк с потенциально совпадающим содержанием
думай дальше

mumpster ★★★★★
()
Ответ на: комментарий от anonymous

>а самым популярным how-to по решению проблем приложения с pulseaudio - было отключить нафик

Это справедливо, не спорю, но следует всё же различать собственно логику приложения и качество реализации этой логики. Вполне возможно, что вместо PulseAudio можно использовать другой аудио-сервер, более грамотно написанный. В этом плане, безусловно, задумка с логгером вызывает некоторые беспокойства. С другой стороны, работает же systemd - вроде никаких особых нареканий к нему нет.

DRVTiny ★★★★★
()
Ответ на: комментарий от sergv

рубрикация

> перевод кодов в простое человеческое текстовое описание
это называется рубрикация
и это работает но только когда есть либо единое руководство либо слаженная координация
=> rh хочет стать новый корпорацией добра

mumpster ★★★★★
()
Ответ на: рубрикация от mumpster

> rh хочет стать новый корпорацией добра

Да уже практически стала! Раньше им хоть санки срать кирпичами не давали в плане совместимости Xorg и Gnome и с Solaris ТОЖЕ.

Теперь - тормозов нет. А кому не нравится - пусть уё..

sergv
()
Ответ на: комментарий от DRVTiny

рычаг

> компактных бинарных логов вообще избавляет во многом от logrotate
уже смешно. будут пассивный и противный logrotate
и ага, добавляет невдолбенный секас с ротацией бинарных блобов
по типу archivelogs в оракакеле.
это просто размен времени и места и не факт что удобный и полезный
Здесь я лично предпочитаю рычаг подлиннее

mumpster ★★★★★
()
Ответ на: комментарий от DRVTiny

> работает же systemd - вроде никаких особых нареканий к нему нет.

Ага. А типа на некорректно перезагруженной системе, где файлухи в разное время создавались? Там - как?

И плюс к этому - systemd ПРАВОЦИРУЕТ писать непереносимый софт.

sergv
()
Ответ на: комментарий от sergv

Бинарные логи разбираются программно, вы же не пытаетесь понять, что там поназаписал bzip2! И да, вполне возможно, что софт для вывода бинарного лога на stdout или куда там, будет считывать сообщения из /usr/share/logger (статью пока не читал :) Впрочем, абсолютное большинство ЛОРовцев тоже). Только это скорее всего будет /usr/share/locale - поскольку теоретически даже логи подпадают под возможность локализации gettext'ом - другое дело, что использовать локаль, отличную от en_US, в данном случае просто не принято.

DRVTiny ★★★★★
()
Ответ на: комментарий от stevejobs

>> entrprise решения

при чем тут вообще enterprise? Я говорю о home media desktop.

Enterprise тут при том, что большая часть возражений идёт от разработчиков и админов из этого самого enterprise. В home media desktop ты можешь делать всё, что твоей писечке угодно, никто слова не скажет, зато Леннарт предлагает ВСЕМ дружно перескочить на его поделие. Это при том, что его работодатель Red Hat специализируется именно на серверных решениях.

Вот претензия от r:

[plm] Бинарные логи, это крафне важная штука для Тру Энтерпрайза, т.к. копаться в 50 гигах логов за несколько часов в виде текстового файла не так прикольно, как делать запросы к базе.

[r] Как человек который каждый день имеет с системаи приращивающими приблизительно 20G/день логов я тебе скажу что ты чуть более чем полностью неправ.

Вот от liksys:

У меня на некоторых продакшн-машинах генерируется два гига логов в час. Текстовых. Прекрасно анализируются. Осилить надо только логротейт и написать нормальный поиск. Илитарию без троек это не должно составлять труда.

И ещё куча других. Чего ты лезешь в калашный ряд со свиным рылом?

В ынтерпрайзе можно ковыряться хоть с баш-скриптами и напильником, говноынтепрайз всё выдюжит на нефтебаксах.

А теперь слезь со своей колокольни и попробуй подумать своей размягчённой костью: откуда в «говноынтепрайзе» взялись «нефтебаксы»? Я говорю не о совкобюджетэнтерпрайзе из РФ, а о бизнесах ИТ в странах с рынками, не завязанными на экспорт ископаемых. Ответ для тупых: он эти нефтебаксы зарабатывает! Зарабатывает с помощью башскриптов, потому что ничего лучше и гибче нет. И вот на Россинанте к нам является Дон Леннарт со своим верным слугой Санчо stevejobs и заявляет, что все мудаки, а он Д'Артаньян. леннарта может сравниваться с огромым нефритовым стержнем сислога?

anonymous
()
Ответ на: комментарий от stevejobs

> Леннарт — крутой чел. Все его разработки пока что были epic win'ом здравого смысла.

И полной импотенцией в плане реализации. У пульсы уже пустая багзилла? Сотни хомячков из «home media desktop» уже не плачут кровавыми слезами? Systemd уже поддерживает *подавляющее большинство* железок? Нет, бля, наш «крутой чел» только генерирует «здравый смысл». А когда дело доходит до реализации, то исполнять он не будет, он лучше пойдёт ещё нагенерирует идей. Долбаный архитектурный космонавт.

я говорю с позиции практики использования анализа строго структурированной базы в условиях жесткого прессинга со стороны обстоятельств.

Где ты, шут гороховый, увидел «условиях жесткого прессинга» на «home media desktop», а? Всё что нужно на десктопе это кнопка «Отправить сообщение об ошибке», которая пошлёт архив с предсмертным логом и коркой, тебе на почту.

О жёстком прессинге говорит r и другие серьёзные люди, которые работают с гигабайтными логами и приложениями, не допускающими остановки. И этим людям в условиях прессинга из лога чаще всего надо найти имя функции и номер строки, которая привела к отказу, плюс два экрана лога ввеерх для понимания контекста. Никакого структурного анализа и сбора статистики с графиками через Crystal Reports не требуется.

В обсуждении уже несколько раз успели разжевать: если нужна статистика и структурный анализ, тогда используются специальные средства и БД, но эти сущности полностью ортогональны логам. Журнал никто не читает, пока всё нормально, он становится нужен в ситуации когда что-то пошло наперекос, и требуется локализовать проблему. Ты ещё предложи в БД хранить журнал чёрного ящика самолёта для последующего структурного анализа и сбора статистики, недоумок.

более того, у меня такой лог уже есть. А у тебя?

В текущих проектах за глаза хватает текстовых файлов и сислога. А когда в одном проекте нужны были большие и *очень быстрые* логи, там использовалось своё решение заточенное под конкретную задачу: лог в виде кольцевого буффера со сжатием (да, бинарный) и отображением файла в память, сжатый лог занимал 200-500 Мб, распакованный больше гигабайта. Для выдёргивания кусков лога по временной метке была написана специальная утилита, весь остальной анализ делался с помощью грепа, всё летало. Поделка леннарта сможет выполнить поставленные условия?

О каком, к чертям свинячьим, структурном анализе логов systemd вообще может идти речь? Если Леннарту нужен был специальный лог для systemd гарантирующий сбор информации на граничных условиях, когда сислог ещё не запущен/уже убит, он мог писать во временный файл (/run/systemd.solid.log) и при успешном старте сислога отправлять ему содержимое файла. Можно прикрутить к сислогу плагин, который аутентифицирует сообщения по токенам, фильтрует, сжимает и раскладывает по файлам в /var/log/verified/ или таблицам в БД согласно любой схеме, описанной в файлах конфигурации. Но нельзя из журнала леннарта получить runtime анализ потока сообщений, по регулярному выражению, которого в большинстве случаев достаточно.

Получается, что сислог можно допилить, чтобы удовлетворить требованиям леннарта и systemd в частности. Но *невозможно* сделать поддержку _огромного_ количества конфигураций сислога, стабильно работающих хрен знает сколько лет. В каком воспалённом мозгу писечка

anonymous
()
Ответ на: комментарий от anonymous

В каком воспалённом мозгу писечка леннарта может сравниваться с огромым нефритовым стержнем сислога?

// пофикшено

anonymous
()
Ответ на: комментарий от DRVTiny

блоб

> будет считывать сообщения из /usr/share/logger

статью пока не читал

так ты теоретик?
а если у тебя /usr пока ещё нет?
сейчас нет особой разницы куда попадает вывод - stderr||syslog
а вот с блобами можно лососнуть непадецки

mumpster ★★★★★
()
Ответ на: рубрикация от mumpster

>и это работает но только когда есть либо единое руководство либо слаженная координация

+1. Ну так и для того, чтобы писать в syslog нужно... кхм... волевое решение программистов туда писать или хотя бы сакральное знание о том, что syslog вообще существует в nix-системах и что он, если думать головой, а не Ж-й, не мешает написанию кроссплатформенного ПО. Большинство даже серьёзных приложений не пишут в syslog. Ситуация с новым логгером будет явно ещё хуже: даже те, кто раньше писал в syslog, перестанут туда писать. По-моему, проблема как раз в этом, а не в том, что бинарный формат чем-то объективно плох.

DRVTiny ★★★★★
()
Ответ на: блоб от mumpster

>а если у тебя /usr пока ещё нет?

Так многоуважаемый автор PulseAudio об этом уже позаботился, тут даже кусок его сишного кода на эту тему приводили :D

DRVTiny ★★★★★
()
Ответ на: комментарий от anonymous

syslog

> за глаза хватает текстовых файлов
добавь ещё что почему-то Оракл свой alert log держит в тексте
хотя легко бы мог сделать для этого базку

mumpster ★★★★★
()
Ответ на: комментарий от DRVTiny

Чтобы вы долго не искали по треду, код Петтеринга проверяет, а не вынесена ли /usr на отдельную ФС (что как по мне, так более, чем логично и естественно) и если она вопреки заветам Партии всё-таки вынесена, грязно ругается «Пошли вы на ..., у вас /usr не на корневой ФС, ничего у вас теперь работать не будет, я это гарантирую!» Вот такой вот умный код!

DRVTiny ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.