Summary: | Зависимость от syslog-common | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | enp <enp> |
Component: | rsyslog | Assignee: | Alexey Shabalin <shaba> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | evg, shaba |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
enp
2016-02-18 20:19:12 MSK
Предложите патч. (В ответ на комментарий №1)
> Предложите патч.
Хотелось бы для начала знать мнение майнтейнера, вдруг он такой патч не примет
Я попробую описать как бы я это сделал: 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 - это атавизм такой? Вообще судя по комментариям в /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? (В ответ на комментарий №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 я сделал такой костыль. Возможно пришло время его переделать. > в /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 примет. А получение логов от journald через сокет похоже гиблое дело. Хотя бы потому, что пока rsyslog не получит те логи, что были записаны до его запуска. Кроме того, я часто получаю через сокет какие-то странные огрызки с метками journald, которые на стандартные syslog-сообщения совсем не похожи. И наконец, у нас не появляется файла /run/systemd/journal/syslog (вместо него приходится /run/systemd/journal/socket указывать) вне зависимости от того, что написано в ForwardToSyslog в /etc/systemd/journald.conf. Поэтому и syslog.socket всегда дохлый, и rsyslog через раз запускается. При этом imjournal несмотря на то, что документация обещает за его использование различные кары, работает у меня вполне прилично - в отличие от imuxsock Прошу посмотреть на http://git.altlinux.org/people/enp/packages/rsyslog.git?p=rsyslog.git;a=commitdiff;h=536a5d20165c811787239fdd5d9347ea68a36479 Локально это меня устраивает, хотелось бы видеть что-то подобное в Сизифе. (В ответ на комментарий №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 > посмотрел. меня в общем тоже устраивает. но есть ньюансы :)
> - надо объявить, что обновление несовместимо с предыдущими версиями.
> - /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
Спасибо, жду в Сизифе :)
посмотрите на мои правки. http://git.altlinux.org/people/shaba/packages/rsyslog.git если устраивает, отправлю в сизиф. (В ответ на комментарий №12) > посмотрите на мои правки. > http://git.altlinux.org/people/shaba/packages/rsyslog.git > если устраивает, отправлю в сизиф. Более чем устраивает, как много я оказывается упустил. Спасибо! Предупреждать надо. После обновления rsyslog-а изчез /etc/syslog.conf и логи перестали писаться. Не сразу понял, что надо доустановить rsyslog-classic. (В ответ на комментарий №14) > Предупреждать надо. После обновления rsyslog-а изчез /etc/syslog.conf и логи > перестали писаться. Не сразу понял, что надо доустановить rsyslog-classic. Ну так: > - надо объявить, что обновление несовместимо с предыдущими версиями. Об этом Алексей подумал и таки видимо забыл :) А за обновление спасибо, баг можно закрывать. (В ответ на комментарий №15) > (В ответ на комментарий №14) > > Предупреждать надо. После обновления rsyslog-а изчез /etc/syslog.conf и логи > > перестали писаться. Не сразу понял, что надо доустановить rsyslog-classic. > > Ну так: > > > - надо объявить, что обновление несовместимо с предыдущими версиями. > > Об этом Алексей подумал и таки видимо забыл :) А за обновление спасибо, баг > можно закрывать. умышленно забыл :) т.к. посчитал что это не актуально. - если система под sysv, то rsyslog-classic должен вытянуться автоматом (из-за Provides: syslogd-daemon) - если система под systemd, где syslogd-daemon провайдится journal'ом, то там обычно и rsyslog-classic не нужен, т.к. есть journal. а rsyslog используется для сбора логов по udp,tcp. Возможно я был не прав. У меня rsyslog под systemd стоит и для приёма udp и чтобы писать логи в чистом тексте. После обновления первое работало, второе - нет. |