Разработчики systemd добавили (https://plus.google.com/115547683951727699051/posts/7abGoTwV... в Journal поддержку каталога сообщений (http://www.freedesktop.org/wiki/Software/systemd/catalog) — специальной базы данных, содержащей детализированную информацию о сообщениях, записываемых в системный журнал. Данный механизм значительно упрощает формирование подробных и исчерпывающих диагностических сообщений, а также их интернационализацию (перевод на местные языки).
В Journal, каждая запись представлена структурой из набора полей. Данные, содержащиеся в этих полях, необязательно должны иметь текстовый формат (например, возможно сохранение core dump'ов непосредственно в сообщении о сбое процесса). Одним из наиболее важных полей является MESSAGE_ID — бинарный идентификатор типа сообщения, позволяющий абстрагироваться от его текста. Сопоставление идентификаторов и текстов сообщений производится по каталогу — специальной базе данных, имеющей текстовый формат. Пример записи из такой базы:<font color="#461b7e">
-- fc2e22bc6ee647b6b90729ab34a250b1
Subject: Process @COREDUMP_PID@ (@COREDUMP_COMM@) dumped core
Defined-By: systemd
Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
Documentation: man:core(5)
Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/...Process @COREDUMP_PID@ (@COREDUMP_COMM@) crashed and dumped core.
This usually indicates a programming error in the crashing program and
should be reported to its vendor as a bug.
</font>
Первая строка содержит символ разделителя (--) и идентификатор сообщения. После нее следуют поля с дополнительной информацией: Subject (краткая форма сообщения, аналог записи в классическом логе), Defined-By (принадлежность сообщения), Support (ссылка на ресурс поддержки, на котором можно получить консультацию по теме сообщения), Documentation (ссылки на man, info и web-страницы с документацией по теме сообщения). После этого следует развернутое описание сообщения, которое может состоять из нескольких абзацев и содержать подстановочные шаблоны, позволяющие вставить в текст конкретного сообщения содержимое других полей журнальной записи.
Перевод таких сообщений на местные языки (помимо основного английского) реализуется очень просто: достаточно добавить запись с таким же идентификатором, и указать после него код локали. При этом можно перевести не только текст сообщения, но и указать ссылки на документацию и поддержку на родном языке.
Каталог Journal позволяет программам определять свои собственные идентификаторы в catalog-файлах, которые при установке программы нужно поместить в /usr/lib/systemd/catalog/. Поиск и сопоставление идентификаторов сообщений по каталогу производятся внутри программы journalctl при указании ключа «-x». При этом для выбранных сообщений выводятся развернутые описания.
Абстракция сообщений от текста дает целый ряд преимуществ:
- Исправление ошибки в тексте сообщения, или изменение его формулировки, больше не ломает работу различных анализаторов лога, которые ищут в нем конкретные подстроки.
- Замена повторяющихся длинных строк коротким идентификатором позволяет сэкономить место.
- Использование поиска по индексированной БД Journal работает гораздо быстрее, чем множественное сравнение строк в syslog/grep. Этот момент особенно актуален на высоконагруженных системах с большим объемом лога: поиск по индексу происходит за время, пропорциональное O(log(n)) (n — количество записей в БД), вместо O(n) в syslog/grep (что, кстати, уже давно используется в реализации подсистемы аудита классических UNIX-систем — BSM, использующей бинарный формат лога).
- Как уже упоминалось выше, значительно упрощается перевод сообщений на местные языки.
- Сообщение больше не ограничивается краткой строкой — в него можно включить полноценное текстовое описание, с указанием всех необходимых подробностей.
- Добавление полей со ссылками на поддержку и документацию упрощает работу системного администратора. В этом плане Journal является продолжением глобальной концепции systemd — самодокументированной загрузки (http://0pointer.de/blog/projects/self-documented-boot.html), в соответствие с которым каждый юнит из штатной поставки systemd имеет свою man-страницу, в которой описаны его назначение, принцип работы и методы настройки. При этом ссылка на man-страницу содержится в метаданных юнита и выводится по команде systemctl status, что упрощает поиск документации.
Стоит отметить что, как и многие «новшества» systemd, этот механизм не является чем-то принципиально новым — аналогичный подход используется, например, в операционных системах для мейнфреймов, в частности, в z/OS (http://ru.wikipedia.org/wiki/Z/OS). А в вышеописанной идее «самодокументированной загрузки» прослеживается влияние системы инициализации Solaris — SMF, позволяющей включать в метаданные службы ссылки на документацию.URL: https://plus.google.com/115547683951727699051/posts/7abGoTwVtDb
Новость: http://www.opennet.me/opennews/art.shtml?num=35352
Все замечательно, но ребята как-то стороной обошли вопрос на тему 'А нафига вообще переводить системные (SIC!) сообщения на местные языки?'...
>Перевод таких сообщений на местные языки (помимо основного английского) реализуется очень >просто: достаточно добавить запись с таким же идентификатором, и указать после него код >локали. При этом можно перевести не только текст сообщения, но и указать ссылки на >документацию и поддержку на родном языке.Думаю для упрощения решения проблем в системе
>>Перевод таких сообщений на местные языки (помимо основного английского) реализуется очень >просто: достаточно добавить запись с таким же идентификатором, и указать после него код >локали. При этом можно перевести не только текст сообщения, но и указать ссылки на >документацию и поддержку на родном языке.
> Думаю для упрощения решения проблем в системеОни видели логи вообще?
Логов подходящих для такой индексации в системе 0.1%
Для примера попробуйте индексировать все возможные варианты логов Apache.Иначе получиться "Event Viewer" из выхлопа, которого можно понять, что ничего не понятно, в не тривиальной ситуации.
Наверняка все встречались с проблемой "Windows/Microsoft Update", когда мы имеем
ID ошибки, которая подразумевает вод собой 100500 вариантов ответов и ни одного, который работает в вашем случае.Это означает, что человек внедряющий подобную систему никогда не сталкивался с проблемами описанными выше, отсюда следует, что ОН НЕ ПОНИМАЕТ, ЧТО ТВОРИТ,
либо это делается намерянно и этот человек -- %подходящее_слово%
>Логов подходящих для такой индексации в системе 0.1%
>Для примера попробуйте индексировать все возможные варианты логов Apache.Множество вариантов ошибок любой программы конечно, так что это вопрос времени и желания. Разработчики лишь дают возможность это реализовать, а делать или нет это уже не к ним.
>Наверняка все встречались с проблемой "Windows/Microsoft Update", когда мы имеем
>ID ошибки, которая подразумевает вод собой 100500 вариантов ответов и ни одного, который работает в вашем случае.Говори за себя, не связывался и связываться не собираюсь. Если система в log не может написать в чём у НЕЁ проблема, то это проблема горе программистов Microsoft, что толку есть такой log или его нет?
хоспади, какой же ты идиот
>Наверняка все встречались с проблемой "Windows/Microsoft Update", когда мы имеемПредставь себе нет. Вендой не пользуюсь уже лет десять. А когда это было актуально, то тарифы на интернет не позволяли пользоваться автообновлениями.
>>Наверняка все встречались с проблемой "Windows/Microsoft Update", когда мы имеем
> Представь себе нет. Вендой не пользуюсь уже лет десять. А когда это
> было актуально, то тарифы на интернет не позволяли пользоваться автообновлениями.А мне вот приходиться работать с большинством OS.
Зачем внедрять не удачные решения, учитывая, что пользоваться этой системой будете "Вы"
а чинить "я"? ()
Или вы садист?
Сформулировал свой вопрос так, будто это что-то невероятное...
Я отвечу просто: а почему нет?Ну не хочешь себе функционал этот, ну вырежи его. Шо тебя все стремает свою здюльку в мэйнстрим засунуть.
> Я отвечу просто: а почему нет?Когда вам с 1й линии придет лог на китайском... удачи в бою :)
Во-во. Вчитайтесь в новость: добавляется поддержка не иностранных языков (это можно и сейчас..), а мультиязычные сообщения. Т.е. сейчас, если лог будет на китайском, делать нечего. А в новой концепции это будет сообщение, которое можно увидеть в китайском, английском и т.п. представлении (базовое всегда английское, я так понимаю). Меняем представление и китайский лог становится английским. И вам удобно, и им.
С точностью до ошибок перевода.
Сейчас лог будет на английском. По крайней мере я никогда в /var/log никаких других языков не видел.
видывал я как-то пример интернационализированных логов в русской вариации, просто неописуемо, чуваки не иначе промтом переводили, а ведь это системные сообщения, которые бывают достаточно лаконичными, и если из 5 слов переврать 3-4 то смысл уловить шансов уже нет
но в Поттеринга я верю, уверен у него только качественные переводы будут
Главное оно что? Главное прикрутить к продукту скины. Это вам любом архитектор интерпрайза скажет.
у тебя локаль какая в системе стоит? сообщения на китайском?
Вопрос не какая у него,а какая у клиента. Всё верно - вся диагностика (как и программный код и комментарии) должна быть на английском. Также как время должно указываться в полном формате с таймзоной. Делать иначе - искать себе лишние проблемы.
А упавшие ключи от дома надо искать в 50 метрах от места где выронил, потому что там под фонарем светлее.
Это к чему? Или английский читать не умеете?
Вопрос тут не столько в мультиязычности, столько как раз в абстрогировании от этого -- именно благодаря этому улучшается индексация базы (котлеты == код ошибки, который хорошо индексируется сам по себе, == отдельно, а мухи == локаль-записи, маны, плохоиндексируемые, == отдельно). В уже дальше -- в зависимости от локали -- будет более подробное описание записи лога на языке локали...
Скорость увеличится (индексы они же халявные), понимаемость ошибки достигнет невообразимых высот (я уже забыл кода последний раз LC_ALL=C выставлял) волосы станут длинными и шелковистыми. Как все без поттеринга раньше жили - ума не приложу.
Особенно хорошо будет смотреться coredump с нормального сервера в логе... Гигабайта эдак на 64... Потрясающее удобство, однозначно... Такого "удобства" даже у разработчиков Винды хватило мозгов не делать...
Вас кто-то заставляет так делать?
Поттеринг заставляет. Стоит со шмайсером за спиной и заставляет.
Нет - но ведь найдутся "умники"... Хотя, думаю, насчёт размера они всё же прикрылись как-то.
> Особенно хорошо будет смотреться coredump с нормального сервера в логе... Гигабайта эдак
> на 64... Потрясающее удобство, однозначно... Такого "удобства" даже у разработчиков Винды
> хватило мозгов не делать...Дык с индексированием БЕЗ УЧЁТА ЛОКАЛЕЙ, БЛОБОВ и ТЕКСТОВ это будет делать как раз легче!
Похоже гражданин реально посмотрел как у других логи сделаны :)
ждем мускуль в зависимостях
Не мускуль а православный sqlite. Так все щас делают (тм)
sqlite там точно не будет. Он недостаточно тяжёл и неповоротлив.
Если Поттеринга так уж переклинило на СУБД, то ему стоит взглянуть на NoSQL.Собсно, хранить логи в слабо-структурированной БД - это самая лучшая идея, ибо логи по своей сути слабо-структурированы.
Беда в том, что Поттеринг это никогда не признает, поскольку с признанием этого он неизбежно упереться в банальный факт: текстовой файл с разделителями - самый простой, надежный и экономичный вид NoSQL БД. А то, что этот вариант не самый быстрый... ну так никто и не говорил, что скорость одно из требований к проекту.)))
> Если Поттеринга так уж переклинило на СУБД, то ему стоит взглянуть на
> NoSQL.С нетерпением ждем внедрения коллэйшена!
Потттеринг сам напишет СУБД, не будет в systemd всяких поделок недоумков. Только лучшее, только от поттеринга.
> ждем мускуль в зависимостяхНизко летаешь. Ждем MS SQL в зависимостях, толерантную свадебную фотографию счастливой пары Леннарта с Мигелюшкой на фоне таблички "мы любим колбасу!" - тогда портрет Поттеринга вырисуется во всей красе ))
>> ждем мускуль в зависимостях
> Ждем .. свадебную фотографию счастливой пары Леннарта с Мигелюшкой ..Он уже женат на RHELL.
Хм. "Он женат на...". Ни разу не видел такого способа написания "он их зае.."
Бинарные логи в которые записываются коды сообщений... Где то я это уже видел.
А вспомнил!
http://www.ultrabac.com/kb6/htm/images/im000147-001.jpg
Не знаете чем занять ваши 2ГБ?Страдаете от того, что используя Linux, системный раздел часто остаётся свободным?
Завидуете пользователям M$ с их [s]"инструментами" >40см[/s] C:\Windows больше 40ГБ?
Есть решение! Системные логи в UTF-8 (а то и 16) с нашими передовыми .po и .mo решат проблемы пустых винтов в два счёта!
>Замена повторяющихся длинных строк коротким идентификатором позволяет сэкономить местоКаким образом? Т.е. все возможные сообщения уже в базе, а демон сообщает журналу ид и вуаля, новая запись? Иначе, откуда экономия берется - непонятно.
> Т.е. все возможные сообщения уже в базе,Там же так и написано, при установке софт должен положить в определенное место файл со списком всех сообщений.
>> Т.е. все возможные сообщения уже в базе,
> Там же так и написано, при установке софт должен положить в определенное
> место файл со списком всех сообщений.Загляните в свои логи, исли ваша система их ведёт, много повторяющихся сообщений?
Особенно от apache, mysql-slow-query, sqlite,... можно долго перечислять.Индексация логов не имеет смысла, так как узнать какие сообщения будут в логе можно только
после создания лога, но тогда его можно просто зажать bzip'ом.
> В этом плане Journal является продолжением глобальной концепции systemd — самодокументированной загрузкиОчень, очень тонко!
Всего нечего нужно будет дописать демоны чтобы они работали с новой фичей, но ведь это сущая ерунда, ведь кроме Linux+systemd другие системы не нужны.(сарказм)
rhel+systemd /* fixed */
В rhel, что характерно, systemd пока нет.
Ну так когда rhel 6 вышел про systemd слыхом не слыхивали.
systemd на тот момент уже был как несколько лет
Поделитесь машиной времени
systemd Initial release 30 Apr 2010
rhel 6 10 ноября 2010
таки несколько лет.
Гы, напоминает бородатый анекдот:
Сидит компания старых знакомых, давно выучивших наизусть все известные им анекдоты.
- Анекдот номер 56!
Все смеются.
- Анекдот номер 19!
Все смеются.
Новичок, чтобы не отставать от остальных:
- Анекдот номер 68!
- Вася, ну не при дамах же!
Нече вы не понимаете Поттеринг гений, посмотрите как настоящие про админы в комментах в g+ радуются.
Админам спать некогда, не то, что бы а Г+ торчать.
> Админам спать некогда, не то, что бы а Г+ торчать."специалистам" вроде тебя - некогда, у кого с мозгами получше - время есть
> Админам спать некогда, не то, что бы а Г+ торчать.Плохим разве что.
>> Админам спать некогда, не то, что бы а Г+ торчать.
> Плохим разве что.Нормальным админам, у которых несколько десятков серверов и несколько тысяч пользователей.
> Нормальным админам, у которых несколько десятков серверов и несколько тысяч пользователей.Несколько десятков - это какой-то говнохостинг рога-и-копыта? Маловато что-то. Да, поди, эти "админы" на самом деле - саппорты оного ;)
>>> Админам спать некогда, не то, что бы а Г+ торчать.
>> Плохим разве что.
> Нормальным админам, у которых несколько десятков серверов и несколько тысяч пользователей.Парни, а если несколько сотен будет - всё? Больничка - могилка?
Настоящим админам действительно спать некогда.
Lennart Poettering 3:45
Yes, the idea is not new at all, mainframes had entire books with error descriptions by ID and Windows 8 has something related in their log viewer.
Гениальный индус.
> Lennart Poettering 3:45
> Yes, the idea is not new at all, mainframes had entire books
> with error descriptions by ID and Windows 8 has something related
> in their log viewer.eventvwr?
http://nooooooooooooooo.com/
> the idea is not new at allчувствую, у когда весь этот крап распространится везде, у MS начнётся пора сбора патентного урожая.
Не мешает проверить всё это на вшивость...
> Documentation: man:core(5)Это для одминов-ламеров?
> Это для одминов-ламеров?да, для таких как ты
Есть вот только вопрос,а как быть если в сообшений в основном приводятся значения переменных.примером переменных могут бать IP,права доступа,имя модуля ядра и/или значения каких то других переменных,определющие работу программы.
Как их встроить в текст?
Перечитал новость,вопрос снят.
Гениально ящитаю, запишим логи в бинарном виде, обвяжем ссылками на специальные бд и сверху прикрутим каталог с кучей инфы в текстовом формате
Текстовый формат? Это какой из? RADIX32? KOI-7, KOI-8, UTF-8, UTF-16, UTF-32?
Учитывая, что сейчас 2012-й год, а не 95-й - забыли бы вы уже обо всём кроме utf-8...
То есть текстовый формат на самом деле не один, и там на самом деле (скрывают, гады!) бинарные цыферки а не буквы?
Я вот некоторых просто не понимаю, то кричат локализация это хорошо, мол, система должна говорить на родном языке. А теперь, мол, ну а зачем оно надо, мол, нормально это читать все на английском языке. Я считаю нормально производить все, на тех языках, где это используется.
Точно если раньше ты мог вбить в гугле по английски лог и быстренько посмотреть как решали такую же проблему, то теперь с русскими логами ты в 90% идешь решать её сам. Отличная идея.
> Точно если раньше ты мог вбить в гугле по английски лог и
> быстренько посмотреть как решали такую же проблему, то теперь с русскими
> логами ты в 90% идешь решать её сам. Отличная идея.Отличный пост. Bся суть изложена. Всем падать ниц перед величайшей англосаксонской культурой. И не сметь развиваться, ведь за проданую нефть можно купить такие классные айфоны и фордфокусы! Просто гениально. Еще бы законодательно, статью об общении в приличных местах на Ангельском, а не как простяцкое быдло - русском.
Я только за буду.(сарказм)
> Просто гениально. Еще бы законодательно, статью об
> общении в приличных местах на Ангельском, а не как простяцкое быдло
> - русском.А медики то рецепты пишут на латыни...
>А медики то рецепты пишут на латыни...Это для того, чтобы вы не знали какую отраву медик вам прописал, ровно до того момента пока вы не пришли в аптеку. А потом уже поздно! :)
Завидую вам — здоровый видать, о медиках видимо только по-наслышке знаете.
На самом деле медики пишут на понятной только им медиковской каряквописи.
> Отличный пост. Bся суть изложена. Всем падать ниц перед величайшей англосаксонской культурой.(с подозрением) 1Сник?
тю, идентификатор ошибки в гугл это даже лучше текста в гугл.
> тю, идентификатор ошибки в гугл это даже лучше текста в гугл.дадада. то-то при поиске даташитов дата - 20%, шита - 80%.
В части интерфейса для (не-айтишного) пользователя - локализация - это хорошо. Внутри системы локализация ведёт только к проблемам.Примерный аналог - время надо показывать пользователю в удобном ему формате. Но если внутри системы вы держите что-то, не привязанное к UTC - вы ищете себе неприятности. Формат, с которым имеет дело разработчки, должен быть максимально униформным, любые локализации здесь во вред.
>Использование поиска по индексированной БД Journal работает гораздо быстрее, чем множественное сравнение строк в syslog/grep. Этот момент особенно актуален на высоконагруженных системах с большим объемом лога....Мягко говоря, это только у меня сложилось впечатление что нас держат за придурков? А я то, наивный, всегда думал что высоконагруженные системы имеют выделенный сервер логов с которого можно спокойно в любой момент снять дамп и парсить его на отдельной машине до посинения. А здесь оказывается localadmin не желает включать мозги и отрывать попу, ему приспичило в аккурат попарсить логи на высоконагруженной системе, на системах с нормальной нагрузкой парсить логи уже не модно.
Когда пошла тема про бинарные логи мне почему то вспомнилась фраза которую я прочитал в одной из книг Ларри Уолла: - "Языки были изобретены людьми и для блага людей. В анналах компьютерных наук это факт случайно оказался позабытым." Лучше не скажешь.ИМХО но джентльмены откровенно создают иллюзию полезности своих творений.
Хочешь жить учись вертеться, зарплату то просто так не платят.
у вас совковый подход. зарплату платят за результат.
[Многозначительно смотрит на чиновничий аппарат]
> [Многозначительно смотрит на чиновничий аппарат]Отопление не дали?
Всё к этому идёт, в будущем.
А так - man министерство образования, man министерство обороны.
Увы так не везде, да и как ты ленарту за результат заплатишь. Он года 2-3 будет святым духом питается а потом денежку получит.
Здравствуй, виндовый Event Viewer!P.S. А потом MS предъявит на него патент, и привет.
> Здравствуй, виндовый Event Viewer!
> P.S. А потом MS предъявит на него патент, и привет.То что у systemd, придуманной людьми, онанирующими на проприетарные Юниксы и венду будут проблемы с патентами можно не сомневаться. Журнал только один частный случай.
Тем кто будет продавать устройства с systemd, придётся близко познакомиться с такими троллями 80 левела как Оракл, МС и Эппл.