LINUX.ORG.RU
решено ФорумAdmin

Отключить логирование для сервиса

 , ,


0

3

Доброго времени суток. Имеется машинка с сурикатой. Для сурикаты имеется unit файл /etc/systemd/system/suricata.service. Суриката так и стартует как демон при старте машины, ну или systemctl start suricata если надо вручную. Суриката посылает сообщения rsyslog'у, а тот уже рассылает куда указано. Но кроме этого суриката засирает своими детектами лог journald. Собственно в этом и есть вопрос - как сделать так что-бы суриката ничего не сообщала в journald? Вообще ничего не хочу от сурикаты в journald. В unit файле добавил строку «StandardOutput=null» в секции "[Service]", но не помогло.

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

Суриката посылает сообщения rsyslog'у

А он выдавливает всё это в journald

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

У rsyslog'а тоже стоит «StandardOutput=null». Но эксперимента ради выключил rsyslog. Результата ноль - всё равно journalctl -f показывает кучу сообщений от сурикаты

Toten_Kopf ()

Почему ты не рассматриваешь >/dev/null 2>/dev/null? Особо болтливые сервисы без возможности сделать --quiet, --silent или --verbose=0 иначе не заткнуть.

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

Если это про перенаправление из самой сурикаты - то так тоже не помогло

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

из самой сурикаты

Так это же мониторинг, он и должен срать в лог. Но да, лучше бы он это делал в свой лог, а не в системный.

Я не тыкал, потому не подскажу.

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

Так в том-то и дело - что мне надо я и так от сурикаты получаю. И спрашивается нафига мне по 1000 сообщений в минуту от сурикаты в системном журнале?

Может в курсе как вообще грамотно отучать сервисы systemd от писанины в системный журнал? Я что-то ничего кроме «StandardOutput=null» нагуглить не могу

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

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

r3lgar ★★★★★ ()

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

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

journald не замена rsyslog, у него другая задача

заставить писать в отдельный лог можно перенаправлением вывода в unit-файле, а для случаев когда нужны возможности rsyslog, нужно собственно в rsyslog логи и направлять

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

Как в жорналд заставить сервис писать в отдельный лог? рсислог такое умел

<сарказм>отправить весь выхлоп journald на rsyslog, а дальше пусть он разбирается</сарказм>

А если без шуток, то - cast intelfx, может он знает

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

Давай сначала разберёмся, куда логгирует твоя суриката. Если она пишет не в stdout/stderr, а сразу в syslog — то никакими StandardOutput=null ты это не устранишь. Если она пишет в syslog, то journald сам перехватывает всё, что улетает в syslog-сокет, и это на данный момент не настраивается (т. е. либо всё, либо ничего). В этом случае проще отучить сурикату спамить в лог, но в крайнем случае можно и выключить забор логов из /dev/log.

r3lgar, см. выше.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Суриката так и делает - шлёт прямо в rsyslog. То что «StandardOutput=null» не работает - это я уже убедился. Отучить сурикату спамить в лог - а куда тогда ей спамить? Тихо детектить и молчать в тряпочку? Я для того и отдаю из сурикаты прямо в rsyslog что-бы не писать на диск, а пересылать куда мне надо из rsyslog'а. А про «выключить забор логов из /dev/log» - это ты имеешь ввиду совсем отключить логирование в журнал? Не являюсь противником systemd и Лёни, но по моему что-то не так в консерватории. Какая-то фигня за меня решает что и у кого она будет перехватывать и, так выходит, это нельзя настроить. И какие варианты если я не хочу сохранять логи локально, а хочу их отсылать на другую машину? Безотносительно сурикаты. Для любого сервиса?

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

Да, совершенно верно, journald не позволяет настраивать параметры хранения логов per-service. Это missing feature. Если тебе это нужно, то journald тебе не подходит — ты выключаешь syslog-интерфейс journald и настраиваешь rsyslog вручную.

Не являюсь противником systemd и Лёни, но по моему что-то не так в консерватории. Какая-то фигня за меня решает что и у кого она будет перехватывать и, так выходит, это нельзя настроить.

Правильно ли я понимаю, что по твоему мнению любая программа должна обязательно быть feature-complete, не иметь отсутствующих возможностей и полностью покрывать все существующие в мире юзкейсы? Я вынужден тебя разочаровать. journald покрывает определённый набор юзкейсов. Если тебе этого не хватает — ты выключаешь journald и делаешь по-своему.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от Toten_Kopf

И какие варианты если я не хочу сохранять логи локально, а хочу их отсылать на другую машину? Безотносительно сурикаты. Для любого сервиса?

Варианта ровно три: либо настраиваешь экспорт логов средствами journald (man systemd-journald-upload, man systemd-journald-remote), либо берёшь rsyslog с плагином для забора логов из journald и делаешь экспорт его средствами, либо выключаешь journald и делаешь всё полностью средствами rsyslog.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

а зачем тогда жорналд нужен? не троллинга ради, а просвещения для

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

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

В остальном - https://www.loggly.com/blog/why-journald/

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

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

syslog его процессит, раскладывает, пересылает...

Когда никакой обработки не нужно, можно локально читать всё из журнала, фильтровать и т.п. Но как только появляется необходимость в дополнительной логике - надо пользоваться соответствующими инструментам.

Unix way :)

alpha ★★★★★ ()
Последнее исправление: alpha (всего исправлений: 1)
Ответ на: комментарий от Chaser_Andrey

Спасибо за ответ, очень полезная информация!

P.S. вот бы местные евангелисты системд могли давать такие же адекватные ответы, кроме «потому что современно»

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

Ну я и не собираюсь требовать от всех программ всего на свете. Но когда программа создаётся для логирования и внедряется как системная - то ожидаешь что эта программа будет немного более гибкой чем просто вкл/выкл. Это разве не само-собой разумеющееся - отсюда сообщения брать, отсюда не брать? И позволить администратору машины самому решать откуда брать. Или это какой-то странный и не обычный юзкейс?

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

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

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

Спасибо за ответы и разъяснения.

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

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

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

Это который syslog.socket? Если можно - ссылку на мануал для тупых. Но если он один для всех - разве я не отключу точно так же для всех?

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

Я про systemd-journald-dev-log.socket. Его можно замаскировать, тогда journald не будет получать сообщения из этого сокета и на него можно будет натравить rsyslog, в котором настроить фильтрацию так, как будет удобно.

Более того, если в rsyslog есть плагин экспорта в другой syslog-сокет, то ты можешь сделать ещё забавнее: в вышеуказанном .socket-файле изменить путь (например, на /dev/log-filtered), а в rsyslog настроить экспорт отфильтрованных сообщений (всех, кроме сурикаты) в этот самый сокет.

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