LINUX.ORG.RU

Systemd 194, теперь с HTTP-сервером и генератором QR-кодов

 


3

3

Выход очередной версии init-демона systemd продолжает радовать пользователей новыми встроенными функциями.

В частности:

  • опция HandleSleepKey в logind.conf была разбита на HandleSuspendKey и HandleHibernateKey, старая опция более не доступна;
  • почти полностью удалена утилита multi-seat-x, минимальная обертка оставлена до тех пор, пока DM не начнут поддерживать новую логику перечисления графических устройств Xorg;
  • nspawn теперь создает символическую ссылку /etc/localtime в окружении контейнера;
  • исправлено поведение при отсутствии /etc/vconsole.conf, теперь в этом случае не будет загружаться никакой шрифт;
  • journald теперь пишет в лог максимальный размер, который файлы журнала могут занимать на диске;
  • опция параметра journalctl -n теперь необязательна и по умолчанию равна 10;
  • journalctl -f теперь реагирует на изменение размеров терминала и разбивает строки соответственно;
  • новая опция --cursor в journalctl позволяет выводить записи начиная с определенного места журнала;
  • добавлена поддержка journalctl для bash-completion.

Но две функции привлекли особое внимание. Их заметили пользователи федоры, которые при обновлении обнаружили, что systemd теперь зависит от libmicrohttpd и qrencode. Это стало причиной активно продолжающегося обсуждения в рассылке.

Оказалось, что обе функции связаны с journald — собственной заменой syslog-демона, как известно, входящей в состав systemd. Среди прочего, он отличается тем, что ведет логи в бинарном виде вместо текстового.

Зависимость от qrencode объясняется реализацией функции Forward Secure Sealing, journalctl из состава systemd использует qrencode для вывода QR-кодов в текстовой консоли.

А поскольку логи хранятся бинарно, для работы с ними нужны дополнительные программы. Зависимость от libmicrohttpd вызвана тем, что в состав systemd теперь входит встроенный http-сервер journald-gateway, умеющий отдавать логи в текстовом и json-формате. Его основное предназначение автор видит в синхронизации журнала по сети.

Так выглядит http-сервер journald-gateway в действии

>>> Леннарт про FSS и QR-код

anonymous

Проверено: JB ()
Последнее исправление: Silent (всего исправлений: 3)
Ответ на: комментарий от vasily_pupkin

в состав systemd теперь входит встроенный http-сервер journald-gateway

Кстати, я прямо жду статей: создание домашней веб-странички методами встроенного в systemd http-сервера. Типа «экономим на спичках».

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

Видимо ты никогда не видел продакта, когда нужно (1) - аудит, (2) постоянный поток жалоб от клиентов, и нужно по логам разбирать где ошибка - в кривых руках юзера или это баг в системе.

Особенно это прелестно выглядит в евентлоге. Настолько прелстно что его очень часто отрубают или вообще не смотрят. А ошибки находят, решают методом тыка. Знаем мы ваш продакшн.

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

С journald ненужное стало удобным, а нужное нереальным. Он делает лог бесполезным. Читать его теперь никто не будет — вручную это делать слишком тяжело, а управлять логом автоматически невозможно.

Не ну средство-то есть... Сбрасываешь лог в текстовый файл и пишешь парсеры, используя grep, less, cat и т.п. :)

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

Во-вторых просто греп по строке дает ложные срабатывания при появлении куска по которому мы грепаем.

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

Таким образом я могу смотреть все то, что касается конкретно взятого сервиса вне зависимости от программ.

Если я ищу баг в конкретной программе, то мне лучше смотреть лог этой конкретной программы вне зависимости от сервиса. Видимо, это дело вкуса.

Этот набор костылей работает с |

Не вижу, где? Можно ткнуть носом?

PS: Раз уж зашла речь о vpn/pptp, помню, юзер жаловался, при определённых багах у провайдера pptp, запущенный из NM, дико срал в лог, порядка мегабайта логов в секунду. Проблема была быстро решена вырезанием лога pptp в rsyslog.conf (а позже решена правильно, пересборкой пакета pptp). Хорошо, что тогда ещё не было journal-а...

anonymous
()

С такими новшевствами уже FBSD в дуалбуте... При том что она и вправду радует новостями последнее время ( в отличие от...)

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

Я плюс такой системы вижу в упрощении систем автоматизированной обработки. Как там будет по факту - увидим через некоторое время

Одна проблема - занимается всем этим создатель пульсаудио.

У меня два примера перед глазами его поделия.

1-й: старая машинка с шестиканальным звуком. Каналы прописаны в конфиге альсы. С альсой все работает нормально. Ставишь пульс - получаешь двоение звука и его замедление. Круто. Ставишь дефолтную альсу + пульс - естественно получаешь неверные каналы с тем же двоением и прочими прелестями.

2-й: на любой машине с пульсом откройте видео в какой-нить проге. Измените уровень сигнала для программы (это же так типа удобно, что все ждали, что пипец). Затем закройте прогу. Слайдер, понятное дело, пропал.

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

Интересно также наличие для intel hd опции принудительного переключения колонок на наушники. Раньше работало. Теперь - нет. Потом, помнится, уши переключались на колонки и обратно средствами драйвера. Теперь это еще и в пульс запилили. Пока все работает, но все равно страшно.

А на третьей машине пульс до сих пор через раз виснет. Почему - хз.

Есть еще машинка - ноут тошибовский. Пульс показывает изумительной длины слайдер на громкость микрофона. По факту больше двух третей выставлять нельзя - звук улетает в космос. Понятно, что косяк альсы. Но если все зависит от альсы, на кой болт нужен пульс?

Мешать потоки? Это и альса умеет. Небольшой демон с dmix и все было бы хорошо. Для музыкантов - jackd.

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

Ключевое слово «дополнительных»

Это не ключевое слово, а жирный таракан у вас в голове. Что за «основные», «дополнительные», укажите спецификацию вендора (кто у нас вендор, кстати) или общепринятый неукоснительно соблюдаемый стандарт на эту тему. А то знаете... давайте я завтра скажу, что shell не относится к основным, и вам cat будет запускать неоткуда. Вот незадача-то будет

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

Количество высеров сервиса можно радикально сократить с SyslogLevel=

 $Command = " ( $Config{'pathtocat'} $FileText | $HostStrip | $FilterText)

Итп

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

Одна проблема - занимается всем этим создатель пульсаудио.

Я тут с тобой спорить не собираюсь. Метод ведения дел Поцтерингом меня изрядно вымораживает. Тем не менее я радикально против всяких луддизмов итп )

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

Даа, существует 1001 способ чтения текстового файла без cat, представьте себе.

И что, все эти способы реализуются силой мысли или такими же ELF-executable программами, как и cat? Тот же sh разве не ELF-файл? В чём принципиальная разница между потенциально over 10^9 утилит чтения логов в бинарном формате и утилитами типа last или date?

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

Что за «основные», «дополнительные»

Общего назначения не значит основные.

Вы читать-то научитесь, нет?

Общего назначения, значит используются для широкого спектра задач.

Так же как текстовый формат файла может использоваться для широкого спектра задач - хоть книжку туда вставляй, хоть html или xml.

И, кстати, перестаньте спорить сами с собой. Это я про shell.

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

Они есть? Нет. Спеки есть? Нет.

Сознаюсь, не смотрел. Но предполагаю, что если бы на бинарный формат нового агрегатора логов не было спеков, Поттеринга уже давно порвали бы на тряпки. Так что, видимо, Google вам в помощь (мне оно не слишком интересно, честно).

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

Жгите дальше вы, не удосужившись почитать дальнейшее обсуждение.

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

Метод ведения дел Поцтерингом меня изрядно вымораживает.

Вот-вот.

Я бы понял, если бы он сказал, что есть такие-то и такие-то проблемы. И он собирается их решать так-то и так-то. А существующие системы не подходят потому-то и потому-то и допиливать их не получится по такой-то и такой-то причине.

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

А уж документация настолько отвратительная и отстает от реального положения вещей, что непонятно вообще кому удобно-то он делает. Админам? Сомнительно. Программистам? Тоже мимо.

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

Замечу, кстати, что он пилит аж несколько велосипедов. Т.е. некую базу данных, некий аналог grep, некую систему загрузки и некий логгер. Я полагаю, что со временем он все же напишет свой http-сервер - сторонняя либа это же не по его части.

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

Умри уже. или хотя бы заткнись

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

Он делает свою нужность и ЗП. Все подсядут, а потом слезть не смогут без него. Короче подсадили дистрибутивы на игл^w поттеринга

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

Так же как текстовый формат файла может использоваться для широкого спектра задач - хоть книжку туда вставляй, хоть html или xml.

Текст - это не формат, это именно что текст. Единственное отличие от бинарных данных - в наличии знакомых буковок. Это уже текст сам по себе может быть структурирован каким-либо образом, чтобы его могла читать и анализировать машина. И вот как раз для последнего никаких less'ов недостаточно. less позволяет вам увидеть текст глазами, но он ничего не знает, например, о том, что груда символов в начале каждой строки - это timestamp. Так что по сути при машинном анализе логов вам каждый раз самому приходится задавать критерии, по которым будут выделены поля. И когда эти ваши утилиты общего назначения по регэкспам, объединяясь в конвейер (по сути в результате получается мини-программа, написанная вами на скорую руку), обрабатывают логи, они работают на порядки медленнее, нежели обработчик бинарного формата. На логах почтового сервера по 4-6Gb в день попробуйте поупражняться, например. Приплюсуем к этому само время на составление конвейера - вот вам и «целесообразность». Не стану уж говорить о том, что чистка раздела /var от логов с помощью logrotate или вручную - тоже требует времени, которое можно было бы потратить на решение более полезных с т.з. бизнеса задач. Надеюсь, вы не будете спорить с тем, что бинарные логи покомпактнее выс*ров syslog'а будут? Программа узкого плана, ориентированная на выполнение специфичной для неё задачи всегда экономит время=деньги. Вам ни то, ни другое не нужно?

P.S. непонятно только одно: почему не SQLite, почему нужно было какой-то свой формат придумывать?

DRVTiny ★★★★★
()
Последнее исправление: DRVTiny (всего исправлений: 1)
Ответ на: комментарий от DRVTiny

И что, все эти способы реализуются силой мысли или такими же ELF-executable программами, как и cat? Тот же sh разве не ELF-файл?

А почему они должны реализовываться силой мысли и что вы имеете против ELF? Поясните.

В чём принципиальная разница между потенциально over 10^9 утилит чтения логов в бинарном формате и утилитами типа last или date?

Покажите эти 10^9 утилит чтения поцтерингологов, имеющихся на любом рабочем компьютере. Да хотя бы и одну, только не потенциальную.

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

Я бы понял, если бы он сказал, что есть такие-то и такие-то проблемы. И он собирается их решать так-то и так-то. А существующие системы не подходят потому-то и потому-то и допиливать их не получится по такой-то и такой-то причине.

Он всё давно, подробно и аргументированно разъяснил. То, что ты дурак, не способный понять несколько абзацев английского - не его проблема.

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

Одна проблема - занимается всем этим создатель пульсаудио.

Занимается этим РедХат. Другие поделки Поттеринга их не интересовали. Система инициализации, которую они планируют включить в свой энтерпрайз это явно не тот случай.

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

На логах почтового сервера по 4-6Gb в день попробуйте поупражняться, например. Приплюсуем к этому само время на составление конвейера - вот вам и «целесообразность». Не стану уж говорить о том, что чистка раздела /var от логов с помощью logrotate или вручную - тоже требует времени, которое можно было бы потратить на решение более полезных с т.з. бизнеса задач. Надеюсь, вы не будете спорить с тем, что бинарные логи покомпактнее выс*ров syslog'а будут? Программа узкого плана, ориентированная на выполнение специфичной для неё задачи всегда экономит время=деньги. Вам ни то, ни другое не нужно?

P.S. непонятно только одно: почему не SQLite, почему нужно было какой-то свой формат придумывать?

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

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

А уж документация настолько отвратительная и отстает от реального положения вещей, что непонятно вообще кому удобно-то он делает. Админам? Сомнительно. Программистам? Тоже мимо.

В случае с systemd документация большей частью полна и актуальна.

Программистам

Делает удобнее

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

Надеюсь, вы не будете спорить с тем, что бинарные логи покомпактнее выс*ров syslog'а будут?

Это не совсем так :]

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

В случае с systemd документация большей частью полна и актуальна.

Где-нибудь есть описание формата журнала? Вопрос не риторический, интересно посмотреть как сделано индексирование.

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

Нету описания формата журнала. Поцтеринг мотивировал это тем, что еще не совсем понятно какой он будет, так что нате вам API, а журнал доколбасим по ходу дела

vasily_pupkin ★★★★★
()

Лично для меня, FSS и быстрый старт системы - реальные плюсы, чтоб перейти на systemd, и FSS - просто killer feature. А вот бинарные логи - это конечно, странновато.

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

Ты видимо действительно никогда не видел систем больше локалхоста. Даже минимальный линукс-набор - прокси и почта. У кого сайт не открывается, у кого письмо не доходит. Когда число клиентов доходит до сотни, поток действительно бесконечный.

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

Что такого в этом FSS? Что помешает мне после получения шела и рута, скопировать весь лог какой он есть, выкусить оттуда часть со взломом и пересоздать лог с новым ключом?

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

Что за «основные», «дополнительные», укажите спецификацию вендора (кто у нас вендор, кстати) или общепринятый неукоснительно соблюдаемый стандарт на эту тему.

Которые не нужно скачивать и специально устанавливать. Примитивный текстовый редактор есть везде.

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

Каноническое определение виндоус-вея.

будто это что-то плохое

Зависит от преследуемых целей и временного промежутка жизни системы.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от farafonoff

невозможно, но нужно.

У меня когда сессия ювера завершалась раньше чем начиналась время сессии приближалось к максимальному значению uint. С соответствующим выставлением счетов. Неделю ДБА-шники разбирались ;)

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

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

То, что ты не знаешь элементарной математики? То, что ты не можешь понять 3 абзаца из вики?

Для подобного состояния как правило используется термин «дурак», но многие на него почему-то обижаются :)

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

Ну всё! Теперь осталось только встроить emacs в systemd! После этого для полноценной системы будет достаточно только установить загрузчик, ядро и systemd. Но текстового редактора в ней не будет...

Будет в GRUB2.

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

И обязательно с QR-кодами. Иначе какой же ты хакер без веб-странички с qr-кодами на systemd.

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

Не думаю что FSS может иметь хоть какое-то реальное применение без внешнего IDS

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

А хоть что-нибудь посуществу можешь сказать? Ссылку на «3 абзаца» и пример твоей «элементарной математики» опровергающей мои слова.

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

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

Самое смешное, что они работают быстрее. Во-первых, системы нынче многоядерные, и у нас не винда, программы в конвейере работают параллельно, а «обработчик бинарного формата» — последовательно. Во-вторых, все «эти ваши утилиты» за несколько десятков лет оптимизировали до предела. И работают они на скорости чтения диска. А самописные велосипеды только-только наезжают на те же грабли.

На логах почтового сервера по 4-6Gb в день попробуйте поупражняться, например.

Упражнялись на логах проприетарного демона, порядка 100ГБ в день. lzop+awk жгут.

Приплюсуем к этому само время на составление конвейера - вот вам и «целесообразность».

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

Не стану уж говорить о том, что чистка раздела /var от логов с помощью logrotate или вручную - тоже требует времени, которое можно было бы потратить на решение более полезных с т.з. бизнеса задач.

А вот тут верно подмечено. Но есть одна деталь. Чистка логов journald требует человеческого времени. А чистка логов средствами logrotate требует разовой настройки и затем только машинного времени. Что дешевле, человеческое время или машинное?

Надеюсь, вы не будете спорить с тем, что бинарные логи покомпактнее выс*ров syslog'а будут?

Будем. Они занимают больше места, чем выс*ры syslog-а. В упакованном виде они тоже занимают больше места, чем упакованный вывод сислога.

Программа узкого плана, ориентированная на выполнение специфичной для неё задачи всегда экономит время=деньги.

Опять верно. А systemd/journald, сволочь такая, пытается быть универсальной затычкой во все дыры, в результате толком не умеет ничего и отнимает время/деньги на дописывание к нему костылей (типа, прикручивания сислога), а затем поиск в нём ошибок (типа, почему не все сообщения доходят этого до сислога — этот баг, кажется, так и не починили).

P.S. непонятно только одно: почему не SQLite, почему нужно было какой-то свой формат придумывать?

Нет, непонятно другое. Почему было не стандартизировать текстовый формат сислога, либо стандартизировать библиотеку для его чтения, вместо того, чтобы придумывать свой бинарный велосипед?

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

Лично для меня, FSS и быстрый старт системы - реальные плюсы, чтоб перейти на systemd, и FSS - просто killer feature.

Это ведь сарказм, правда? Мне тоже понравилась идея обходить с мобилкой все машины каждый раз, когда ротейтится ключ (а ротейтится, судя по словам автора, он каждые 15 минут).

Да и сама защита какая-то дурацкая. Ну да, если я взломал сервер, то теперь я не могу изменить несколько байт в логах, потому что сумма не сойдётся, ну и что? Я ведь могу просто стопнуть журнал, откусить хвост лога, где лежат компрометирующие меня записи, и запустить журнал снова. Могу ещё и затроянить libjournal, чтобы когда я в следующий раз зайду на машину, в лог ничего не записалось.

Вот теперь и объясните, зачем было городить все эти хеши и QR-коды?

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

и запустить журнал снова

Если просто продолжить лог, то хеши не сойдутся. Ключа у тебя нет -> валидный лог родить не выйдет

QR-коды

Поцтеринг увидел QR код, он захотел себе такой же. Что непонятного? (%

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

Ты видимо действительно никогда не видел систем больше локалхоста. Даже минимальный линукс-набор - прокси и почта. У кого сайт не открывается, у кого письмо не доходит. Когда число клиентов доходит до сотни, поток действительно бесконечный.

Ну вот и нашёлся админ локалхоста. Если у тебя однотипные инциденты валят непрерывно то ты альтернативно одарённый, а не админ. Таких выгонять надо с волчьим билетом.

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

Если просто продолжить лог, то хеши не сойдутся.

Почему не сойдутся? Они не сойдутся, только если пока я буду логинится и стопать журнал, админ успеет прибежать и сфоткать новый QR-код, так? Но ведь шанс этого примерно равен нулю...

Ключа у тебя нет -> валидный лог родить не выйдет

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

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