LINUX.ORG.RU

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

 , ,


1

2

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

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

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

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

★★★★★

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

Ответ на: winprinter от mumpster

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

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

# cat /etc/logrotate.d/apache2
/var/log/apache2/*.log {
size 500k
missingok
rotate 52
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null
endscript
}
# mv /etc/cron.daily/logrotate /etc/cron.hourly

Так устроит?

sergv
()
Ответ на: foonterprize от mumpster

>> relocatable packag

угу. ну там есть варианты на самом деле.

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

если это наш собственный foonterprize-1.2.3 - может оказаться проще пересобрать, если стороннее

Стороннее. С его авторами ты сделать ничего не можешь.

в общем случаи, не хочу разбираться со сферическими ынтерпрайзами, можно поконкретнее?

Какие детали тебе нужны? ЕМНИП, это ситуация с Chrome и libevent.

tailgunner ★★★★★
()
Ответ на: size от mumpster

Чем обзываться, лучше бы вникал в то, что говорят.

Никакая опция в конфиге не заставить logrotate подняться посреди дня и свернуть распухший лог

У меня сервак глох только потому, что за пару часов самба набрасывала 10 гигов логов и полностью забивала партицию /var/log.

Разница вовсе не в опциях конфига, а в том, что logrotate запускается по часам:

ls /etc/cron.daily/log*

/etc/cron.daily/logrotate

А журнал висит демоном и сворачивает логи по мере их переполнения.

ps -A | grep log

577 ? 00:00:00 systemd-logger

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

оптимизация

> оптимизация графики
бггг. маркетологов только здесь не хватало. насмотрелся я на эти «оптимизации» принтеров и модемов.
да и потом, требую объяснений насчёт «рудиментарности» поддержки например двухсторонней печати в CUPS! ты хоть знаешь смысл этого слова?;) абырвалг типичный

mumpster ★★★★★
()

>вместо текстовых логов используются бинарные форматы данных
Доверьте программисту дизайн программы и вы получите бинарный конфиги.
Классика жанра, <sensored>!

fractaler ★★★★★
()

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

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

> logrotate запускается по часам

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

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

при аудите или, не дай бог, разборе полетов. Никакие keepalive тут не помогут.

Если некто добрался до того, что может править текстовый аудит, он также исправит и бинарный аудит. _Единственная_ возможность это обойти - логи на другой хост. Чего логгер имени поттеринга не умеет. Упс!

Сделать rm -rf /var/log/journal/* ничуть не сложне чем rm -rf /var/log/*, также как и hash_calc /var/log/journal ничуть не сложнее чем vi /var/log/something

Понимаешь ли, никакие ухищрения на локалхосте не помогут. А IDS срабатывающая на отстутствие отклика (keepalive) или при приходе «дырке» в сиквенсах как раз вполне себе реализуема.

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

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

no-dashi ★★★★★
()
Ответ на: комментарий от fractaler

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

а у меня они почти всегда почему-то получаются почти кодом самой же программы ))

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

У меня сервак глох только потому, что за пару часов самба набрасывала 10 гигов логов и полностью забивала партицию /var/log.

И это есть правильно. Потому как безаудитная система работать не должна. И как тут поможет поттерлог? И чем он лучше чем классический (или слегка модифицированный класический) syslog, в который можно дописать проверку доступного места на разделе для логов?

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

Тысяча клиентов и без домена? Понятно почему линуксоиды так не любят винду :)

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

>а он не может подниматься сам?

Это вопрос. я поднимал ipip,gre, ipsec - на мой взгляд они недостаточно просты и надежны. Я бы предпочел шифровать отдельные сообщения, снабжать их подписями, хешем предшественника и т.д. и кидать по старинке по tcp/udp. Это надежно и будет работать в любой сети, где хотя бы пинги ходят.

А если логгер будет глючить из за транспорта, то ну его нах, такую систему.

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

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

> а в том, что logrotate запускается по часам:

# mv /etc/cron.daily/logrotate /etc/cron.hourly

Не пробовали? Должно помочь.

А журнал висит демоном и сворачивает логи по мере их переполнения.

Типа как у bind ротация?

Та еще кривь будет... Уж лучше ротацию сторонним софтом, который умеет это делать ХОРОШО.

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

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

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

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

Ага, в man 5 crontab, так сказано как написать «* */5 * * * appname» :-)

no-dashi ★★★★★
()
Ответ на: комментарий от Rastafarra

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

по часам, это значит, по таймеру, а не с точностью до часа. В стандарте он запускается раз в сутки.

Запускать logrotate каждую минуту - самоубийство.

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

а улучшать - серьезная задача

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

no-dashi ★★★★★
()
Ответ на: комментарий от AVL2

Запускать logrotate каждую минуту - самоубийство.

Запускай logrotate раз в сутки, и раз в 5 минут запускай проверку свободного пространства, и если его мало - запускай logrotate принудительно. Это так сложно?

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

> Ты не мне это пиши, а дебиановцам.

А зачем? Каждый настраивает систему под себя. А это - всего-то мелкая подстройка.

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

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

> я поднимал ipip,gre, ipsec - на мой взгляд они недостаточно просты и надежны.

хм. я вот тоже поднимал. все просто, достаточно надежно... что не так?

А если логгер будет глючить из за транспорта, то ну его нах, такую систему.

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

Rastafarra ★★★★
()
Ответ на: оптимизация от mumpster

Ну оптимизация графики в принтере реально экономит тонер при (почти) незаметной потере качества. Наше МФУ Canon с двухсторонней печатью кое-как печатало и с одной стороны. Да, canon кривые железки, но в виндах они хоть работают благодаря драйверам производителя.

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

>Индекс не надо пересоздавать

Да правда что ли? Расскажи это клипперобогам!

Малышам объясняю: при сбое велика вероятность получить битый индекс.

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

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

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

monit & newsyslog

> сервак глох...самба набрасывала 10 гигов
ну так а я при чём? просто тебе лично logrotate - не подошёл
но на нём свет клином не сошёлся.
тем более что есть тема с monit например с готовым примером.
BTW как бы ещё во 2ом фришнике был newsyslog который это всё умел
(раз в 1 час он по умолчанию пускался ЕМНИП)
или религия не позволяет взять из фришки?8)

журнал висит демоном и сворачивает логи

не вижу никаких проблем такое изготовить
к тмоу же готового такого навалом еслифчо

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

cнабжать их подписями, хешем предшественника

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

no-dashi ★★★★★
()
Ответ на: комментарий от AVL2

> Запускать logrotate каждую минуту - самоубийство.

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

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

> По минутам, потом по секундам... Это костыли, не находишь?

если у тебя логи растут по 200(00...?) гигов в час, то проблема должна решаться аппаратно, не?

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

Такая простая штука должна работать из коробки. Логгер _не_должен_ забивать весь диск если может этого не делать.

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

Логи свои апач пишет сам (почему интересно не через сислог?)

Потому, что апач длжен работать не только на системе где есть openlog()/syslog()/closelog(). И будет продолжать делать это сам. Потому, как его (апача) надо пускать и на фре, и на винде, и на ХЗ чем еще.

no-dashi ★★★★★
()
Ответ на: комментарий от KDE41user

> О, брат по проблемам: с 12.1 можно без последствий выпилить systemd? Стоит обновлять систему?

http://ru.opensuse.org/Обзор_нововведений#systemd_and_other_system-wide_changes

Если кратко: выпилить systemd-sysvinit (zypper rm systemd-sysvinit), при этом согласиться на установку sysvinit-init. Возможно в загрузчике прийдётся добавить init=/sbin/init. По крайней мере так написано по ссылке. Правда, удалить пакет systemd нельзя - при его удалении у меня захотело по зависимостям удалиться ещё более 50 пакетов. Т.е. можно загружаться с помощью sysvinit, а вот выпилить сам systemd я не пробовал далее.

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

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

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

Тогда уж надо делать ssl и ключи, и керберос для авторизации.

Overkill. А кто будет мониторить керберос? :-)

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

Поломаные сервисы могут высирать одну строчку много раз в секунду.

Не зря в логах можно встретить «last message repeated N times in last M seconds»...

no-dashi ★★★★★
()
Ответ на: комментарий от tailgunner

Итак, приложению foonterprize-1.2.3 нужна библиотека libbar 1.2, а в системе установленпа libbar 1.1, и общесистемное обновление до libbar 1.2 ломает кучу софта. Твои действия?

Использовать наконец генту! :D

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

> Поломаные сервисы могут высирать одну строчку много раз в секунду.

пардон, и что из этого следует?

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

Текущий сислог надежен просто потому, что

Так давайте перепишем ЛОГГЕР. Который ЖИЛ отдельным процессом, справлясь со своими задачами, а не будем собирать всё-что-можно-и-нельзя в кривой systemd просто потому, что поттерингу так захотелось!

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

Просто у syslog'а обнаружился фатальный недостаток - у systemd с ним проблемы.

«и тут поттеринг заметил фатальный недостаток в syslog - его написал не он» пофиксено =)

dhampire ★★★
()
Ответ на: комментарий от no-dashi

>Сделать rm -rf /var/log/journal/* ничуть не сложне чем rm -rf /var/log/*, также как и hash_calc /var/log/journal ничуть не сложнее чем vi /var/log/something

для этого есть selinux со своими контекстами.

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

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

> Итак, приложению foonterprize-1.2.3 нужна библиотека libbar 1.2, а в системе установленпа libbar 1.1, и общесистемное обновление до libbar 1.2 ломает кучу софта. Твои действия?

Закинуть libbar 1.2 в /usr/local/ ?

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

Не понимаю, почему бы всю службу не пихнуть в отдельную бутылку

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

не overkill, а нормальное решение для мониторинга например через интернет :)

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

Debian? Lolz. В дебиане уже есть systemd, как минимум в unstable, точно не следил. Скорее будет Slackware vs RedHat.

anonymous
()

Тред не читай @ сразу отвечай:
бинарный формат - FUUUUUU
и вообще, что за тенденция писать кучу демонических велосипедов (и прочей низкоуровневой фигни)?
Простому юзеру плевать на внутренности, ему софт нужен нормальный - чтобы Open/Libre Office нормально открывали Word'овские файлы, чтобы в Gimp'е интерфейс и производительность были номальные и тд.

kovrik ★★★★★
()
Ответ на: комментарий от no-dashi

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

Важный момент, на самом деле. Напишите Поттерингу об этом, может он разупорится наконец. %)

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

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

Если я взломал сервис, который работает под nobody и пишет логи через syslog, НИЧЕГО Я НЕ СМОГУ ПОЧИСТИТЬ. Потому как общение между syslog и приложением идет через сокет. Или через pipe.

Опять мимо кассы, опять необходимость поттерлога не доказана :-)

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