<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>31819</bug_id>
          
          <creation_ts>2016-02-18 20:19:12 +0300</creation_ts>
          <short_desc>Зависимость от syslog-common</short_desc>
          <delta_ts>2016-03-01 13:48:23 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>rsyslog</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="enp">enp</reporter>
          <assigned_to name="Alexey Shabalin">shaba</assigned_to>
          <cc>evg</cc>
    
    <cc>serjigva</cc>
    
    <cc>shaba</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>155126</commentid>
    <comment_count>0</comment_count>
    <who name="enp">enp</who>
    <bug_when>2016-02-18 20:19:12 +0300</bug_when>
    <thetext>Уже пробовал продвинуть аналогичную мысль для syslog-ng - https://bugzilla.altlinux.org/show_bug.cgi?id=31799 - но видимо пока успеха не имел.

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

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

Может стоит каким-нибудь способом сделать эту зависисимость необязательной?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155140</commentid>
    <comment_count>1</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2016-02-19 08:27:29 +0300</bug_when>
    <thetext>Предложите патч.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155162</commentid>
    <comment_count>2</comment_count>
    <who name="enp">enp</who>
    <bug_when>2016-02-19 15:12:56 +0300</bug_when>
    <thetext>(В ответ на комментарий №1)
&gt; Предложите патч.

Хотелось бы для начала знать мнение майнтейнера, вдруг он такой патч не примет</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155173</commentid>
    <comment_count>3</comment_count>
    <who name="enp">enp</who>
    <bug_when>2016-02-19 21:15:45 +0300</bug_when>
    <thetext>Я попробую описать как бы я это сделал:

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 - это атавизм такой?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155174</commentid>
    <comment_count>4</comment_count>
    <who name="enp">enp</who>
    <bug_when>2016-02-19 21:24:29 +0300</bug_when>
    <thetext>Вообще судя по комментариям в /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 &apos;dependency&apos;.

И при этом:

# 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?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155175</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2016-02-19 21:48:50 +0300</bug_when>
    <thetext>(В ответ на комментарий №3)
&gt; Я попробую описать как бы я это сделал:
теперь более понятно, что требуется :)
В общем и целом поддерживаю, но надо еще все обдумать.

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

Если точнее, то в /etc/syslog.d(без r). И ты не поверишь, но он для этого и предназначен :)
в /etc/syslog.d собираются симлинки на отличные от /dev/log сокеты. А не подгружаемые конфиги, как можно было бы подумать.
И таких, отличных от /dev/log сокетов в altlinux очень много - это все сервисы, работающие в chroot. Например postfix, устанавливаемый по-умолчанию.
sysklogd обучен сам смотреть в директорию /etc/syslog.d, и принимать на вход с этих сокетов. Для rsyslog я сделал такой костыль. Возможно пришло время его переделать.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155179</commentid>
    <comment_count>6</comment_count>
    <who name="enp">enp</who>
    <bug_when>2016-02-20 10:53:20 +0300</bug_when>
    <thetext>&gt; в /etc/syslog.d собираются симлинки на отличные от /dev/log сокеты. А не
&gt; подгружаемые конфиги, как можно было бы подумать.
&gt; И таких, отличных от /dev/log сокетов в altlinux очень много - это все сервисы,
&gt; работающие в chroot. Например postfix, устанавливаемый по-умолчанию.
&gt; sysklogd обучен сам смотреть в директорию /etc/syslog.d, и принимать на вход с
&gt; этих сокетов. Для rsyslog я сделал такой костыль. Возможно пришло время его
&gt; переделать.

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

И кстати я запустил 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&apos; (No such file or directory)

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


Локально это меня устраивает, хотелось бы видеть что-то подобное в Сизифе.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155235</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2016-02-24 13:31:56 +0300</bug_when>
    <thetext>(В ответ на комментарий №9)
&gt; Прошу посмотреть на
&gt; http://git.altlinux.org/people/enp/packages/rsyslog.git?p=rsyslog.git;a=commitdiff;h=536a5d20165c811787239fdd5d9347ea68a36479
&gt; 
&gt; 
&gt; Локально это меня устраивает, хотелось бы видеть что-то подобное в Сизифе.

посмотрел. меня в общем тоже устраивает. но есть ньюансы :)
- надо объявить, что обновление несовместимо с предыдущими версиями.
- /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</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155237</commentid>
    <comment_count>11</comment_count>
    <who name="enp">enp</who>
    <bug_when>2016-02-24 14:12:27 +0300</bug_when>
    <thetext>&gt; посмотрел. меня в общем тоже устраивает. но есть ньюансы :)
&gt; - надо объявить, что обновление несовместимо с предыдущими версиями.
&gt; - /bin/touch /var/lock/subsys/rsyslogd и bin/rm -f /var/lock/subsys/rsyslogd
&gt; делались не просто так, а для работы /sbin/reload-syslog. думаю для
&gt; rsyslog-classic можно добавить drop-in конфиг для rsyslog.service
&gt; в этот же drop-in конфиг можно так же добавить и Requires=syslog.socket и
&gt; -Alias=syslog.service

Спасибо, жду в Сизифе :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155257</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2016-02-25 14:47:03 +0300</bug_when>
    <thetext>посмотрите на мои правки.
http://git.altlinux.org/people/shaba/packages/rsyslog.git
если устраивает, отправлю в сизиф.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155401</commentid>
    <comment_count>13</comment_count>
    <who name="enp">enp</who>
    <bug_when>2016-02-25 20:05:09 +0300</bug_when>
    <thetext>(В ответ на комментарий №12)
&gt; посмотрите на мои правки.
&gt; http://git.altlinux.org/people/shaba/packages/rsyslog.git
&gt; если устраивает, отправлю в сизиф.

Более чем устраивает, как много я оказывается упустил. Спасибо!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155464</commentid>
    <comment_count>14</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2016-03-01 03:12:19 +0300</bug_when>
    <thetext>Предупреждать надо. После обновления rsyslog-а изчез /etc/syslog.conf и логи перестали писаться. Не сразу понял, что надо доустановить rsyslog-classic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155465</commentid>
    <comment_count>15</comment_count>
    <who name="enp">enp</who>
    <bug_when>2016-03-01 07:58:48 +0300</bug_when>
    <thetext>(В ответ на комментарий №14)
&gt; Предупреждать надо. После обновления rsyslog-а изчез /etc/syslog.conf и логи
&gt; перестали писаться. Не сразу понял, что надо доустановить rsyslog-classic.

Ну так:

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

Об этом Алексей подумал и таки видимо забыл :) А за обновление спасибо, баг можно закрывать.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155468</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2016-03-01 13:36:43 +0300</bug_when>
    <thetext>(В ответ на комментарий №15)
&gt; (В ответ на комментарий №14)
&gt; &gt; Предупреждать надо. После обновления rsyslog-а изчез /etc/syslog.conf и логи
&gt; &gt; перестали писаться. Не сразу понял, что надо доустановить rsyslog-classic.
&gt; 
&gt; Ну так:
&gt; 
&gt; &gt; - надо объявить, что обновление несовместимо с предыдущими версиями.
&gt; 
&gt; Об этом Алексей подумал и таки видимо забыл :) А за обновление спасибо, баг
&gt; можно закрывать.
умышленно забыл :) т.к.  посчитал что это не актуально.
- если система под sysv, то rsyslog-classic должен вытянуться автоматом (из-за Provides: syslogd-daemon)
- если система под systemd, где syslogd-daemon провайдится journal&apos;ом, то там обычно и rsyslog-classic не нужен, т.к. есть journal. а rsyslog используется для сбора логов по udp,tcp.
Возможно я был не прав.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155469</commentid>
    <comment_count>17</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2016-03-01 13:48:23 +0300</bug_when>
    <thetext>У меня rsyslog под systemd стоит и для приёма udp и чтобы писать логи в чистом тексте. После обновления первое работало, второе - нет.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>