Bug 31819 - Зависимость от syslog-common
: Зависимость от syslog-common
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/rsyslog)
: unstable
: all Linux
: P3 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2016-02-18 20:19 by
Modified: 2016-03-01 13:48 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2016-02-18 20:19:12
Уже пробовал продвинуть аналогичную мысль для syslog-ng -
https://bugzilla.altlinux.org/show_bug.cgi?id=31799 - но видимо пока успеха не
имел.

Существует как минимум два сценария для rsyslog / syslog-ng, в которых
зависимость от syslog-common (для удобства раскладывания логов по локальным
файлам) является избыточной:

1) получение локальных логов от journald
2) сбор сетевых логов

Может стоит каким-нибудь способом сделать эту зависисимость необязательной?
------- Comment #1 From 2016-02-19 08:27:29 -------
Предложите патч.
------- Comment #2 From 2016-02-19 15:12:56 -------
(В ответ на комментарий №1)
> Предложите патч.

Хотелось бы для начала знать мнение майнтейнера, вдруг он такой патч не примет
------- Comment #3 From 2016-02-19 21:15:45 -------
Я попробую описать как бы я это сделал:

1) Исключил бы из основного пакета зависимость на syslog-common и файл
/etc/syslog.conf и ссылку на него в /etc/rsyslog.conf

2) Сделал бы пакет rsyslog-classic с зависимостью на сам rsyslog,
syslog-common, и с файлами /etc/syslog.conf и  /etc/rsyslog.d/00_classic.conf
(последний со ссылкой на первый)

3) в /etc/rsyslog.d/00_common.conf закомментировал бы imuxsock и imklog, т.к.
при наличии journald первый должен читать из /run/systemd/journal/socket, а
второй совсем не нужен, и от Requires=syslog.socket в
/lib/systemd/system/rsyslog.service при живом journald тоже один вред, как я
понял

А еще я совсем не уловил смысла
ExecStartPre=/lib/systemd/altlinux-rsyslog-extrasockets в
/lib/systemd/system/rsyslog.service: зачем слушать каждый файл в /etc/rsyslog.d
как будто это симлинк на сокет (тем более что в дефолтной конфигурации таких
симлинков нет)?

И зачем нужен симлинк /lib/systemd/system/rsyslogd.service - это атавизм такой?
------- Comment #4 From 2016-02-19 21:24:29 -------
Вообще судя по комментариям в /lib/systemd/system/syslog.socket зависимость на
него более чем нужна, однако при ее наличии rsyslog как правило (не всегда)
стартует с такой ошибкой:

systemd[1]: syslog.socket: Socket service syslog.service not loaded, refusing.
systemd[1]: Failed to listen on Syslog Socket.
systemd[1]: Dependency failed for System Logging Service.
systemd[1]: rsyslog.service: Job rsyslog.service/start failed with result
'dependency'.

И при этом:

# systemctl status syslog.socket
● syslog.socket - Syslog Socket
   Loaded: loaded (/lib/systemd/system/syslog.socket; static; vendor preset:
disabled)
   Active: inactive (dead)
     Docs: man:systemd.special(7)
           http://www.freedesktop.org/wiki/Software/systemd/syslog
   Listen: /run/systemd/journal/syslog (Datagram)

Что бы это значило при живом journald?
------- Comment #5 From 2016-02-19 21:48:50 -------
(В ответ на комментарий №3)
> Я попробую описать как бы я это сделал:
теперь более понятно, что требуется :)
В общем и целом поддерживаю, но надо еще все обдумать.

> А еще я совсем не уловил смысла
> ExecStartPre=/lib/systemd/altlinux-rsyslog-extrasockets в
> /lib/systemd/system/rsyslog.service: зачем слушать каждый файл в /etc/rsyslog.d
> как будто это симлинк на сокет (тем более что в дефолтной конфигурации таких
> симлинков нет)?

Если точнее, то в /etc/syslog.d(без r). И ты не поверишь, но он для этого и
предназначен :)
в /etc/syslog.d собираются симлинки на отличные от /dev/log сокеты. А не
подгружаемые конфиги, как можно было бы подумать.
И таких, отличных от /dev/log сокетов в altlinux очень много - это все сервисы,
работающие в chroot. Например postfix, устанавливаемый по-умолчанию.
sysklogd обучен сам смотреть в директорию /etc/syslog.d, и принимать на вход с
этих сокетов. Для rsyslog я сделал такой костыль. Возможно пришло время его
переделать.
------- Comment #6 From 2016-02-20 10:53:20 -------
> в /etc/syslog.d собираются симлинки на отличные от /dev/log сокеты. А не
> подгружаемые конфиги, как можно было бы подумать.
> И таких, отличных от /dev/log сокетов в altlinux очень много - это все сервисы,
> работающие в chroot. Например postfix, устанавливаемый по-умолчанию.
> sysklogd обучен сам смотреть в директорию /etc/syslog.d, и принимать на вход с
> этих сокетов. Для rsyslog я сделал такой костыль. Возможно пришло время его
> переделать.

А как это переделать?

И кстати я запустил postfix (и баг на него повесил заодно -
https://bugzilla.altlinux.org/show_bug.cgi?id=31827) и:

# readlink /etc/syslog.d/postfix 
/var/spool/postfix/dev/log
# file /var/spool/postfix/dev/log
/var/spool/postfix/dev/log: ERROR: cannot open `/var/spool/postfix/dev/log' (No
such file or directory)

А postgresql уже давно вылез из чрута. Короче, я сомневаюсь в актуальности этой
фичи, и особенно в случае systemd, который и chroot желающим организует, и
stderr примет.
------- Comment #7 From 2016-02-20 11:00:45 -------
А получение логов от journald через сокет похоже гиблое дело. Хотя бы потому,
что пока rsyslog не получит те логи, что были записаны до его запуска. Кроме
того, я часто получаю через сокет какие-то странные огрызки с метками journald,
которые на стандартные syslog-сообщения совсем не похожи. И наконец, у нас не
появляется файла /run/systemd/journal/syslog (вместо него приходится
/run/systemd/journal/socket указывать) вне зависимости от того, что написано в
ForwardToSyslog в /etc/systemd/journald.conf. Поэтому и syslog.socket всегда
дохлый, и rsyslog через раз запускается.
------- Comment #8 From 2016-02-20 11:36:47 -------
При этом imjournal несмотря на то, что документация обещает за его
использование различные кары, работает у меня вполне прилично - в отличие от
imuxsock
------- Comment #9 From 2016-02-24 13:11:37 -------
Прошу посмотреть на
http://git.altlinux.org/people/enp/packages/rsyslog.git?p=rsyslog.git;a=commitdiff;h=536a5d20165c811787239fdd5d9347ea68a36479


Локально это меня устраивает, хотелось бы видеть что-то подобное в Сизифе.
------- Comment #10 From 2016-02-24 13:31:56 -------
(В ответ на комментарий №9)
> Прошу посмотреть на
> http://git.altlinux.org/people/enp/packages/rsyslog.git?p=rsyslog.git;a=commitdiff;h=536a5d20165c811787239fdd5d9347ea68a36479
> 
> 
> Локально это меня устраивает, хотелось бы видеть что-то подобное в Сизифе.

посмотрел. меня в общем тоже устраивает. но есть ньюансы :)
- надо объявить, что обновление несовместимо с предыдущими версиями.
- /bin/touch /var/lock/subsys/rsyslogd и bin/rm -f /var/lock/subsys/rsyslogd
делались не просто так, а для работы /sbin/reload-syslog. думаю для
rsyslog-classic можно добавить drop-in конфиг для rsyslog.service
в этот же drop-in конфиг можно так же добавить и Requires=syslog.socket и
-Alias=syslog.service
------- Comment #11 From 2016-02-24 14:12:27 -------
> посмотрел. меня в общем тоже устраивает. но есть ньюансы :)
> - надо объявить, что обновление несовместимо с предыдущими версиями.
> - /bin/touch /var/lock/subsys/rsyslogd и bin/rm -f /var/lock/subsys/rsyslogd
> делались не просто так, а для работы /sbin/reload-syslog. думаю для
> rsyslog-classic можно добавить drop-in конфиг для rsyslog.service
> в этот же drop-in конфиг можно так же добавить и Requires=syslog.socket и
> -Alias=syslog.service

Спасибо, жду в Сизифе :)
------- Comment #12 From 2016-02-25 14:47:03 -------
посмотрите на мои правки.
http://git.altlinux.org/people/shaba/packages/rsyslog.git
если устраивает, отправлю в сизиф.
------- Comment #13 From 2016-02-25 20:05:09 -------
(В ответ на комментарий №12)
> посмотрите на мои правки.
> http://git.altlinux.org/people/shaba/packages/rsyslog.git
> если устраивает, отправлю в сизиф.

Более чем устраивает, как много я оказывается упустил. Спасибо!
------- Comment #14 From 2016-03-01 03:12:19 -------
Предупреждать надо. После обновления rsyslog-а изчез /etc/syslog.conf и логи
перестали писаться. Не сразу понял, что надо доустановить rsyslog-classic.
------- Comment #15 From 2016-03-01 07:58:48 -------
(В ответ на комментарий №14)
> Предупреждать надо. После обновления rsyslog-а изчез /etc/syslog.conf и логи
> перестали писаться. Не сразу понял, что надо доустановить rsyslog-classic.

Ну так:

> - надо объявить, что обновление несовместимо с предыдущими версиями.

Об этом Алексей подумал и таки видимо забыл :) А за обновление спасибо, баг
можно закрывать.
------- Comment #16 From 2016-03-01 13:36:43 -------
(В ответ на комментарий №15)
> (В ответ на комментарий №14)
> > Предупреждать надо. После обновления rsyslog-а изчез /etc/syslog.conf и логи
> > перестали писаться. Не сразу понял, что надо доустановить rsyslog-classic.
> 
> Ну так:
> 
> > - надо объявить, что обновление несовместимо с предыдущими версиями.
> 
> Об этом Алексей подумал и таки видимо забыл :) А за обновление спасибо, баг
> можно закрывать.
умышленно забыл :) т.к.  посчитал что это не актуально.
- если система под sysv, то rsyslog-classic должен вытянуться автоматом (из-за
Provides: syslogd-daemon)
- если система под systemd, где syslogd-daemon провайдится journal'ом, то там
обычно и rsyslog-classic не нужен, т.к. есть journal. а rsyslog используется
для сбора логов по udp,tcp.
Возможно я был не прав.
------- Comment #17 From 2016-03-01 13:48:23 -------
У меня rsyslog под systemd стоит и для приёма udp и чтобы писать логи в чистом
тексте. После обновления первое работало, второе - нет.