The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"В systemd journal добавлен каталог сообщений"
Отправлено opennews, 17-Ноя-12 10:26 
Разработчики 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.ru/opennews/art.shtml?num=35352

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру