LINUX.ORG.RU
 

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


1

3

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

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

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

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

НАУЧИ КОМПЬЮТЕР ВАРИТЬ КОФЕ

управление электрическими цепями с помощью компьютера
лучший подарок для техногика; только открытые программы
http://www.unicontrollers.com/products/unc01x

[#] Ответ на: комментарий от r 22.11.2011 0:03:22  

> Не смеши меня. В наших системах логи считает ETL-кластер, никакая базка и близко не справится.

У тебя какие-то совсем Тру Энтерпрайз задачи, видимо. Я пока с такими не сталкивался. Но мне интересно, почему ты считаешь нормальным такой зазор - три с половиной задачи в текстовый файл, а затем сразу какой-то датамайнинг на кластере? Леннарт-то как раз и говорит, что посередине этого есть куча задач, которые не влазят в стандарт syslog.

> А он не думал что его нету именно по той причине что невозможно придумать стандарт лога на все случаи жизни?

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

*** ()
[#] Ответ на: комментарий от Gorthauer 21.11.2011 23:50:50  
curufinwe

Да я в принципе не против сетевой прозрачности звуковой подсистемы, если бы PulseAudio работало без проблем. А то уже сколько лет прошло, а пользоваться этой штукой все как-то стремно. Если хорошие идеи внедрять, но не доводить до ума на протяжении длительного времени - то лучше бы таких идей и не было. А то наобещают преимуществ с три короба - а потом оно даже базовых функций своих не выполняет, и то что раньше работало без проблем - теперь глючит безбожно. Как бы и с этим Journal такой петрушки не получилось. Рано или поздно все это допилят, но до этого оно успеет изнасиловать все дистрибутивы, включая debian stable.

* ()
[#] Ответ на: комментарий от Gorthauer 21.11.2011 23:50:50  
fat_angel

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

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

***# ()
[#] Ответ на: комментарий от tailgunner 22.11.2011 0:06:37  

> Как минимум rsyslog умеет хранить логи в БД. А поделка Потцринга - нет. Дальше что?

Там неправильно хранятся. Суть-то в том, что ты все-равно манипулируешь текстом в свободном формате.

*** ()
[#] Ответ на: комментарий от OldFatMan 21.11.2011 23:45:33  

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

хехехе

** ()
[#] Ответ на: комментарий от plm 21.11.2011 23:47:09  

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

()
[#] Ответ на: комментарий от plm 22.11.2011 0:05:45  
OldFatMan

> Ну вот, наконец-то - ты спрашиваешь вопросы, вместо нытья и детских подколок (типа "я не надеюсь на ответ, но все-таки").

Вообще-то я всё время вопросы задаю здесь (кроме первого коммента), так что уж ерунду-то не городи.

> Грепать в файле, если он большой - очень долго

tail уже отменили?

> затем вырабатывать какие-то скрипты, чтоб вытащить нужную инфу

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

> выгоднее предварительно рассовать запись по базе

"Выгоднее" - это как? Записи в логе ещё нет, а данные о ней уже "рассовываются"? :)

> насколько сложно записать, это не так и важно.

А чуть раньше ты, вроде, говорил, что это важно...

# ()
[#] Ответ на: комментарий от plm 22.11.2011 0:12:21  

>> Как минимум rsyslog умеет хранить логи в БД. А поделка Потцринга - нет. Дальше что?

> Там неправильно хранятся.

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

> Суть-то в том, что ты все-равно манипулируешь текстом в свободном формате.

Ты уже готов определять стандартные форматы лог-мессаг? Всё сообщество уже готово следовать за тобой?

***** ()
[#]  

Дать дарованию в бубен и лишить талонов на Интернет пожизненно. Развелось, понимаешь, "улучшателей" классических *NIX'ов, как собак.

* ()
[#] Ответ на: комментарий от Gorthauer 21.11.2011 23:50:50  

За что я люблю лор, так это за отборный и разнообразный бред.

** ()
[#] Ответ на: комментарий от Oleaster 22.11.2011 0:13:06  

> Как человек, закончивший сов. школу с побрякушкой, я хотел бы распечатать мнение этого неуча на рулоне туалетной бумаги.

+1

anonymous ()
[#]  

Вроде, ещё классик сказал:

>>-----Цитата---->>

Store data in flat text files.

<<-----Цитата----<<

Каждый раз убеждаюсь в правильности этого принципа. А идея сделать лог бинарным чтобы злоумышленник не смог бы его редактировать - бредовая. Злоумышленник будет точно так же его редактировать, но только с помощью этого API, а пользователю/админу будет лишний геморрой. Это как с запретом на свободную продажу оружия: бандит в любом случае вооружён, а страдать будет законопослушный гражданин :) Если уж так нужно защитить лог, шифруй его на лету под отдельным паролем, а потом расшифровывай одной командой и никаких API-костылей городить не надо.

anonymous ()
[#] Ответ на: комментарий от r 22.11.2011 0:10:15  
oguretz

>Я винимательно жду от тебя предложения по форматированию следующих сообщений в принципиально более правильный формат.

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

>Меня пугает не схожесть с вендой а рак мозга которое называется виндовое администрирование. Ах да rdp обязателен, как же как же.

Концепция journal полностью соответствует unix-way, проблемы?

>А в возможности все это построить так как я хочу а не так как Леттарт задумал.

И именно поэтому ты хлопаешь крыльями и кудахтаешь с самого начала топика. Потому что не осилишь сделать по-своему, ты просто не заметил как за тебя уже решили эту проблему первый раз, правда во времена создания syslog. А теперь всего лишь решат во второй. Можешь кричать "Не бывать этому!", но паровоз поедет, и ему насрать будешь ли ты в вагоне.

* ()
[#] Ответ на: комментарий от r 22.11.2011 0:10:15  
stevejobs

глянь скрины логгера шиндовс -)

по сабжу, таблица с полями вроде:

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

итп

а для больших данных можно будет вынести лог на отдельный сервер или даже на несколько отдельных серверов

** ()
[#] Ответ на: комментарий от timur_dav 22.11.2011 0:08:21  
vasily_pupkin

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

**** ()
[#] Ответ на: комментарий от oguretz 22.11.2011 0:10:50  
Tark

>Вообще структура логов как таковых полностью соответствует законам реляционной алгебры
Пруф? Тебя не смущает то, что логи зачастую нужны для тех случаев, когда целостность нарушена?

* ()
[#] Ответ на: комментарий от oguretz 22.11.2011 0:10:50  
OldFatMan

А вот хамить не следует.

Над твоим комментом тебе задали вопрос на ту же тему. Жду ответа.

# ()
[#] Ответ на: комментарий от liksys 22.11.2011 0:13:37  
stevejobs

> и написать нормальный поиск

зачем писать всякие индексы, SQL и репликацию самому, когда всё это уже изобретено в базках?

** ()
[#] Ответ на: комментарий от OldFatMan 22.11.2011 0:18:03  
oguretz

>Над твоим комментом тебе задали вопрос на ту же тему. Жду ответа.

Слив защитан. Следующий.

* ()
[#] Ответ на: комментарий от Oleaster 22.11.2011 0:13:06  
OldFatMan

Я советскую школу без троек (совсем!) закончил, но это к теме спора не относится. :)

Пусть высказывает своё мнение, интересно же. Правда, он так и не нашёл весомых аргументов в пользу применения БД в логах. Пока неубедительно.

# ()
[#] Ответ на: комментарий от oguretz 22.11.2011 0:04:22  

> И, кстати, да, иерархическое хранилище конфигов — это нормально

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

Чудила, бинарные форматы глазами не почитаешь, грепом не попарсишь. Я посмотрю, как ты будешь читать бинарный лог сдохшей системы без чудо-библиотечки поттера.

()
[#] Ответ на: комментарий от oguretz 22.11.2011 0:20:49  
OldFatMan

И тебе "до свидания"! Хами дальше - у тебя это здорово получается.

# ()
[#]  

Так и надо. Нет поддержки сети, нет читабельных логов... Вообще нихрена нет. Здравая идея. Может тогда вообще нафиг логи - вон в венде народ просто систему переставляет.

** ()
[#] Ответ на: комментарий от stevejobs 22.11.2011 0:20:34  
qnikst

вставка логов O(ln(N)), обновление индексов, лишнее занимаемое место, головная боль с созданием разделов таблиц, чтобы поиск был адекватный, требование иметь базу в почти любой системе. Офигенный набор... Необходимость иметь инструмент для поиска по базе, необходимость создания новых инструментов для преобразования данных..

** ()
[#] Ответ на: комментарий от stevejobs 22.11.2011 0:20:34  

> зачем писать всякие индексы, SQL и репликацию самому, когда всё это уже изобретено в базках?

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

anonymous ()
[#] Ответ на: комментарий от stevejobs 22.11.2011 0:08:21  
OldFatMan

> man индексы, man B-tree

man здравый смысл

# ()
[#] Ответ на: комментарий от qnikst 22.11.2011 0:25:10  
vasily_pupkin

У него будет не база, а Бинарный Формат (ц)(тм)(р). Который будет как текстовый лог, только другой. Enjoy!

**** ()
[#] Ответ на: комментарий от OldFatMan 21.11.2011 23:35:32  

Та никуда... просто на ноуте оно как-то с линухом веселее, а BSD у меня кургом на серваках лет так-эдак двести... И музыка, опять же... rosegarden, ardour ... Вот почему я поттеринга ненавижу больше всех! :)

()
[#] Ответ на: комментарий от qnikst 22.11.2011 0:25:10  

> обновление индексов

индексы могут и нае*нуться.

anonymous ()
[#]  

Достаточно было не писать имя автора, и все согласились бы, что там куча здравых идей, как и в systemd (чего, увы, нельзя сказать о пульсе).

** ()
[#] Ответ на: комментарий от alukin 22.11.2011 0:28:03  
OldFatMan

Ага, понятно.

Ну не во всех же дистрах эту поттеровскую фигню внедрят. Будет из чего выбрать. :)

# ()
[#] Ответ на: комментарий от vasily_pupkin 22.11.2011 0:27:08  
qnikst

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

** ()
[#]  
exception13

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

закопать вместе с systemd и пппппульшшшшшшшааааудиииио

*** ()
[#] Ответ на: комментарий от stevejobs 22.11.2011 0:20:34  

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

Для логов не нужна транзакционность (только в редких случаях). Из лога не надо считать инфу через секунду после записи. Ау, лог - это ассиметричная система хранения информации, по большей части write-only.

На счет базы - ты можешь структурировать по пиду, юзеру, правам доступа, как угодно. Сделаешь стопицот колоночек. Но в конечном итоге у тебя все равно будет поле для хранения блоба - либо двоичных данных, специфичных для системы, либо текстового описания. Так вот, все это можно засунуть и в plain-text. При том на запись скорость будет выше. А базовый индекс на чтение уже есть - это время записи, в каждом логе оно есть.

()
[#] Ответ на: комментарий от Divius 22.11.2011 0:29:03  

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

Скорее дурнопахнущая кучка больного самолюбия. Оставьте текстовые логи в покое, гады!

anonymous ()
[#] Ответ на: комментарий от Divius 22.11.2011 0:29:03  

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

Здравая идея там ровно одна - атрибуты. Никакие бинарные файлы для этого не нужны.

***** ()
[#] Ответ на: комментарий от oguretz 22.11.2011 0:20:49  
bk_

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

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

Так вот, я считаю, что plain text - самый лучший вариант. И патриарх подтвердил бы это! Вы - закоренелый виндузятник, которому нужно дать readonly доступ к святому святых - ЛОРу.

P.S. Обращаю внимание - я совершенно не ставил целью Вас оскорбить, любезный. Я просто выразил свое скромное мнение. За сим удаляюсь.

* ()
[#] Ответ на: комментарий от Divius 22.11.2011 0:29:03  

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

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

** ()
[#] Ответ на: комментарий от timur_dav 21.11.2011 22:36:38  
mv

> Боюсь, что многие будут со мной не согласны, но pulseaudio таки win.

Я с тобой полностью согласен, ибо ещё в 2006 году плакал кровавыми слезами из-за этой корявой алсы и вопрошал небо, почему на m$ вындовс уже 6 лет никаких проблем нет, чтобы пучёк разнообразного софта с одной самой примитивной звуковухой играл без проблем, а в "продвинутом" линуксе - это дикая попоболь. Вместо делания нормальной работы я потерял недели, ковыряясь в нескольких чужих библиотеках, чтобы заставить их выводить звук с разной частотой дискретизации и уровнем квантования через одно устройство. И запись ещё при этом чтобы работала, и два писателя могли звук захватывать.

***** ()
[#] Ответ на: комментарий от qnikst 22.11.2011 0:25:10  
stevejobs

> Необходимость иметь инструмент для поиска по базе,

он называется SQL. Всё уже придумано.

> вставка логов со сложностью...


ну ты можешь отключить индексы, сложность на вставку резко упадет.

Но тогда потом ты ВНЕЗАПНО решишь в этой базе что-то найти, поиск займет времени как раз до пенсии (60 лет для мужчин?).

И когда ты таки вручную создашь индексы, добавление индексов займет как раз до 100-летнего юбилея.

> обновление индексов, головная боль с созданием разделов таблиц,


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

> лишнее занимаемое место


лишнее занимаемое место на что? На индексы что ли? :) Ну разрастется на треть, кто это заметит?

> требование иметь базу в почти любой системе.


apt-get install postgresql. Воистину сложно.

** ()
[#] Ответ на: комментарий от stevejobs 22.11.2011 0:20:34  
Tark

Посыпалась база + логи в базе = весело-весело встретим новый год.

* ()
[#] Ответ на: комментарий от stevejobs 22.11.2011 0:34:41  

>> требование иметь базу в почти любой системе.

> apt-get install postgresql. Воистину сложно.

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

***** ()
[#] Ответ на: комментарий от plm 22.11.2011 0:05:45  
r

>Грепать в файле, если он большой - очень долго,

Правда?

> du -sh 2011_11_1*  
51M     2011_11_1
20M     2011_11_10
20M     2011_11_11
20M     2011_11_12
20M     2011_11_13
21M     2011_11_14
21M     2011_11_15
11M     2011_11_16
19M     2011_11_17
15M     2011_11_18
15M     2011_11_19

> cat 2011_11_1*/* | wc -l
1464293

> time cat 2011_11_1*/* | cut -f 1 | sort | uniq -c | grep -e "^[ ]\{4\}[^ ]" | cut -b 5,6,7 | (tr "\012" "+"; echo 0)  | bc
163652

real    0m6.279s
user    0m4.824s
sys     0m1.456s

Я внимательно слушаю тебя сколько у тебя займет ресурсов сделать подобный подвиг на sql базе. Не забудь сюда добавтить ее работу развертывание индексирование и т.д.

>Главное - быстро получить результат, а насколько сложно записать, это не так и важно.

Мне правда смешно с ващих объемов. Чем больше индексов - тем дороже insert.

***** ()
[#] Ответ на: комментарий от Tark 22.11.2011 0:36:59  
stevejobs

Чем это отличается от посыпавшегося текстовика?

** ()
[#] Ответ на: комментарий от terminator 21.11.2011 23:23:48  

> aRts ещё хуже.

aRts is dead.

***** ()
[#] Ответ на: комментарий от vasily_pupkin 22.11.2011 0:36:13  
XVilka

Лучше Oracle. Ынтерпрайзно же! И сделать туда вывод early_printk/dmesg!

** ()
[#] Ответ на: комментарий от r 22.11.2011 0:37:35  
stevejobs

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

** ()