LINUX.ORG.RU

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

 , ,


1

2

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

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

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

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

★★★★★

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

poettering

По мере разработки systemd ограничения syslog становились для нас все более явными. К примеру: для облегчения работы администратора мы хотели в качестве одной и важнейших возможностей добавить отображение последних 10 (или около того) строчек журнала сервиса к следующей основной информации, которая показывается командой “systemctl status foo.service”. Корректная реализация этого для классического сислога получается неэффективной, ненадежной и небезопасной: потребуется линейный поиск по всем файлам журналов (который может подразумевать расархивирование на лету) , хранимые данные журнала могут потребовать обработки и не факт, что простой (и без гонок), чтобы сопоставить их с именем сервиса и средой исполнения.

В косяках systemd виновато может быть все, что угодно, кроме systemd.

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

+1. Если таковое воткнут придется искать другую ОС

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

Хорошо, это анализатор логов. Его можно реализовать и на базе плейнтекста. Индексы тут не нужны - размер логов вряд ли будет превышать 50 метров на машинах, которыми рулит школьник Вася. Ынтерпрайз осилит сделать индексатор и парсер.

Все, что вы говорите, не оправдывает нужности бинарного лога.

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

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

А ты не знаешь, почему Oracle DB пишет свой главный AlertXXXX.log в ТЕКСТОВОМ виде?

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

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

То есть, вместо анализа логов надо сидеть и тужиться с целью выс^Wнаписать язычок. Это такое простое, бытовое дело — написание язычков.

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

Только массовые расстрелы спасут десктоп XXI века!

Oleaster ★★★
()

Что касается централизованного API для работы с логами - это супер. А вот бинарный формат имеет и минусы. Нужны тогда специальные утилиты, выводящие нужные данные по запросу в стандартную для Unix систему ввода-вывода. Что-бы можно было на выхлоп натравливать grep и прочие радости окружения unix. Поттеринг гений, у него дельные идеи. А вот реализации первое время обычно кривые до ужаса. Ну и его подделия плохо согласуются с философией unix, они ближе к миру проприетарных ОС, вроде оффтопа и яблочной оси.

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

Правильно, а потом он обнаружит, что ядро Linux несовместимо с его очередной хренью, и...

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

т.е. для каждой программы минимум 1 таблица?

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

> размер логов вряд ли будет превышать 50 метров на машинах, которыми рулит школьник Вася.

я агитирую за то, чтобы воткнуть в БД вообще Всё, а не только логи. Размер там будет, по крайней мере, в гигабайтах.

а пока такого коммунизма не настало, можно потихоньку начинать переходить: запихать в базку контакты в адресной книге, аккаунты в IMах, логи, настройки системы, итп

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

> выкинуть нафиг разнородные форматы, и загнать всю (вообще всю какая есть!) инфу в базу с поиском на чем-то вроде SQL

Унификация форма конфигов вызовет их офигенное усложнение и повышение неудобочитаемости. Пофиг где они будут храниться, в базе или файле: читать/править их руками станет невозможно, понадобятся дополнительные костыли-конфигураторы. Пример: представь себе конфиг в xml.

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

Это утопия. Не будет никогда формализованных форматов сообщения даже в рамках одного приложения. Я там уже картинку кидал на чрезмерный оверинжениринг.

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

> скорее бы уже все логи и настройки перенесли в Postgresql

А настройки postgres в mysql.

А настройки mysql в sqlite.

А настройки sqlite в gconf.

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

хорошо что вас с леннартом разделяет языковой барьер :)

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

возьми 7.1 звуковуху и включи в штекер боковых колонок наушники... о? задача получить звук и в колонки(2.0 2.1) и в наушники.

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

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

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

Оформи в виде таблицы тот кусок что я привел сверху.

Это _не_воз_мож_но. В разумных пределах.

запрос можно составить даже на естественном языке,

Ты все описывашье когда как ггде но не _что произошло. Разложи мне в реляционную базу строчку: «access denied /x/y/z»

вся писечка в том, что формат фиксированный.

Не_воз_мож_но.

Разложи:

[    0.000000] PERCPU: Embedded 18 pages/cpu @ffff8801d877d000 s42240 r8192 d23296 u73728
[    0.000000] pcpu-alloc: s42240 r8192 d23296 u73728 alloc=18*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 1939172
[    0.000000] Kernel command line: root=/dev/sda1 xencons=xvc0 console=xvc0 splash=silent showopts
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes)
[    0.000000] Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes)
[    0.000000] allocated 78725120 bytes of page_cgroup
[    0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.000000] Software IO TLB disabled
[    0.000000] Memory: 7616884k/7872512k available (3076k kernel code, 8192k absent, 247436k reserved, 2330k data, 232k init)
[    0.000000] Hierarchical RCU implementation.
[    0.000000]  RCU dyntick-idle grace-period acceleration is enabled.
[    0.000000]  RCU-based detection of stalled CPUs is disabled.
[    0.000000] NR_IRQS:144 nr_irqs:144 16
[    0.000000] Xen reported: 2266.746 MHz processor.
[

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

лицоладонь.sh

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

Извините, не могу больше это обсуждать, у меня истерика.

liksys ★★★★
()

>сложность O(log(n))
штоу? какой-то матан вспоминается с универского курса.
так и не понял, чем его штука лучше сислога.

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

Святая простота. Во-первых есть старый софт с другим форматом логов, никто не будет его менять для какого-то энтузиаста, это не карманный тетрис с аппстором.
Во-вторых эти каты, сорты, уники и грепы влезут на один лист А4. Если их не осилит школьник Вася, значит ошибка не в них, а в ДНК. Тут вся суть не в этих 3-х строчках, а в понимании того, что происходит.

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

Ага, вона идиоты из КДЕ все уже попихали в базу... даже почту.Нахрена? теперь почту поискать можно тока их г..ной тулзой. А ее за 10 лет ой скока накопилось... grep прекрасно справлялся... а не асилила ее та ср..ная тулза.

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

> можно потихоньку начинать переходить: запихать в базку контакты в адресной книге, аккаунты в IMах, логи, настройки системы, итп

Ну и зачем такой монстрюга нужен? И чем он удобнее того, что есть сейчас? Тем, что «одним инструментом» можно ВСЁ обработать? Так это не unix-way.

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

> Разложи мне в реляционную базу строчку: «access denied /x/y/z»

type: 138
param1: x
param2: y
param3: z
param4: null
...
param255: null

255 параметров — максимум («размер стека»). 255 должно хватить на всех. Оптимизацию по пустым значениям в хвосте можно впилить на уровне БД.

где-то мы это уже видели, да? ;)

Что значат param1..param255 в контексте ошибки номер 138 можно прочитать в справке.

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

>Ниче за меня не решили.

В студии создатель сислога? Да ладно, не свисти. Люди сделали сислог 30 лет назад, а ты к нему привык. А теперь придется переучиваться, ты понятия не имеешь будет ли это удобно, но у тебя страх и паника что старые костыли перестанут работать, хотя не факт что они вообще понадобятся.

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

Истерика прошла. Есть такая штука - принцип KISS. Ознакомьтесь, если не знаете. Поттер вот явно не знает.

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

>можно потихоньку начинать переходить: запихать в базку контакты в адресной книге, аккаунты в IMах, логи, настройки системы, итп

Я последние 6ть лет только и делал что все из этих гребаных баз доставал - и все становилось только быстрее, надежнее, жрало меньше места и памяти.

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

>Что значат param1..param255 в контексте ошибки номер 138 можно прочитать в справке.

*рука начала шарить вокруг в поисках нагана".

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

> я агитирую за то, чтобы воткнуть в БД вообще Всё, а не только логи. Размер там будет, по крайней мере, в гигабайтах.

а пока такого коммунизма не настало, можно потихоньку начинать переходить: запихать в базку контакты в адресной книге, аккаунты в IMах, логи, настройки системы, итп

«И жили-поживали они долго и счастливо, и умерли в один день.»(c) Хорошая сказка, добрая.

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

тем, что одним инструментом, можно сделать множество операций операций(A), над регуляризованным множеством(X)... где A определяется возможностями движка базы, а X - подмножество вывода программ. вопросы только в том а нафига это и плюсы ли это вобще.

Да и к начальной теме это не относится, там до БД не дошло.

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

> 255 параметров — максимум («размер стека»). 255 должно хватить на всех

Это катастрофа. Должна быть отдельная таблица с id в первую, тогда никаких ограничений не будет. Как минимум.

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

>Люди сделали сислог 30 лет назад, а ты к нему привык.

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

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

ваааау... так нужно доводить ситуацию до финала (абсурда), а тип param1 какой будет? и какие индексы и на чём? и как определяется type в разных программах?

qnikst ★★★★★
()

Интересная статья, спасибо за перевод. :)

Опечатки:
естьдаже
универсальнымs
измениттип
UUIDы во время загрузкиe
ТАким образом, syslog
пользователей, которые использую высоконагруженые логи

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

не шибко распространён же. а распространён потому, что более узкое множество операций подвержено лучшей оптимизации ;)

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

там же в статье как всегда написано чего не может сделать сислог и прямым текстом в ЧАВО сказано нужен сислог пользуйте сислог, мне ненужен сислог, но и не мешает, но коль скоро журнал нужен для системд и может заменить сислог то пусть будет.

ЗЫ хотя блин этож лор тут тоже человеки, которые не умеют читать -_-

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

> вопросы только в том а нафига это и плюсы ли это вобще.

Про то и речь. Я и спрашиваю: нужно ли это и какие преимущества у этого решения.

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

>Операции переключения на лету и сетевая прозрачность.

Зато с вайном лажа полная. Не было, сейчас тоже пока нет, в вайновых приложениях звука, запустил для настройки графическую конфигурялку pavucontrol. А она так устроена что нужно успеть натыкать кнопки за то время что работает источник звука, да вот прикол, winecfg пищит всего ~секунду. Сколько ни пытался, натыкать за это время кнопки не получается - гуёвина медленно реагирует на клики.

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

>Скажите, пожалуйста, каким именно местом неотключаемое поделие, намертво приколоченное к другому поделию, без поддержки сети, да еще и с бинарным форматом данных, соответствует unix-way?

Этот вопрос мне подозрительно напоминает визжание по поводу сетевой прозрачности в wayland.

1. journal занимается логами. 2. journal занимается ТОЛЬКО логами 3. при старте системы логи нужны в 99,999999% случаев. ты собираешься их отключать? отлично, исходники есть, занимайся. 4. лог-демона вообще колебать такая абстракция как «сеть» не должна. Он должен просто логгировать, а куда — это другой вопрос. хоть через сеть, хоть через libastral, хоть через MyLittlePony, это лог-демона не касается. 5. формат данных не имеет никакого значения в концепции unix-way.

oguretz
()

они там чо, реестр изобретают??? расстрелять потного этого!!! куда на киллера скидываться? :) давайте рейзера освободим и на него натравим? ради линукса он бесплатно порвет

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от g1itch

к чему это?

man bzcat;

и у меня, например, less прекрасно показывает _текст_ .bz2 и .gz

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

> Что значат param1..param255 в контексте ошибки номер 138 можно прочитать в справке.

Справка в базе, база в системе, система лежит. ппц

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

anonymous
()

>зато вместо текстовых логов используются бинарные форматы данных, для доступа к которым предлагается отдельная разделяемая библиотека.

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

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