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

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

    <bug>
          <bug_id>31799</bug_id>
          
          <creation_ts>2016-02-15 11:50:31 +0300</creation_ts>
          <short_desc>systemd compability and syslog-common dependency</short_desc>
          <delta_ts>2019-03-29 22:45:47 +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>syslog-ng</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="Sergey Y. Afonin">asy</assigned_to>
          <cc>asy</cc>
    
    <cc>evg</cc>
    
    <cc>grenka</cc>
    
    <cc>lakostis</cc>
    
    <cc>shaba</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>155006</commentid>
    <comment_count>0</comment_count>
    <who name="enp">enp</who>
    <bug_when>2016-02-15 11:50:31 +0300</bug_when>
    <thetext>syslog-ng можно использованить вместе с вместе c systemd-journald для приема логов от последнего и в этом случае зависимость от syslog-common является избыточной. Нельзя ли ее оторвать?

Да, юнит для запуска тоже бы не помешал.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155069</commentid>
    <comment_count>1</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2016-02-17 10:56:08 +0300</bug_when>
    <thetext>Мне кажется, что писать локальные логи - это основное занятие syslog, так что отрывание зависимости на syslog-common не является оправданным. Если же речь о том, чтобы сделать из syslog-ng подпорку для journald для пересылки логов на syslog-сервер, то это задача самого journald, надо трясти там. Нашлось такое вот обсуждение: http://systemd-devel.freedesktop.narkive.com/qzNJp36N/journald-syslog-forwarding . Но вот чем кончилось в итоге, не очень понятно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155071</commentid>
    <comment_count>2</comment_count>
    <who name="enp">enp</who>
    <bug_when>2016-02-17 12:39:25 +0300</bug_when>
    <thetext>(В ответ на комментарий №1)

&gt; Мне кажется, что писать локальные логи - это основное занятие syslog

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

&gt; ... сделать из syslog-ng подпорку для journald для пересылки логов на
&gt; syslog-сервер, то это задача самого journald, надо трясти там

Соглашусь, завел багу https://github.com/systemd/systemd/issues/2642, может и отреагируют.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155072</commentid>
    <comment_count>3</comment_count>
    <who name="enp">enp</who>
    <bug_when>2016-02-17 12:51:25 +0300</bug_when>
    <thetext>unit-файл, который стоило бы положить в следующую сборку, может выглядеть так:

# cat /etc/systemd/system/syslog-ng.service
[Unit]
Description=System Logger Daemon
Documentation=man:syslog-ng(8)

[Service]
Type=simple
ExecStart=/sbin/syslog-ng -F $SYSLOG_NG_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
EnvironmentFile=-/etc/sysconfig/syslog-ng
StandardOutput=journal
StandardError=journal
Restart=on-failure

[Install]
WantedBy=multi-user.target

Я использовал Type=simple, чтобы проще было в случае крайней необходимости (-e в /etc/sysconfig/syslog-ng) вывести логи самого syslog-ng в journald. Иначе хватило бы:

[Unit]
Description=System Logger Daemon
Documentation=man:syslog-ng(8)

[Service]
Type=forking
ExecStart=/sbin/syslog-ng $SYSLOG_NG_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
EnvironmentFile=-/etc/sysconfig/syslog-ng
Restart=on-failure

[Install]
WantedBy=multi-user.target

Еще было бы неплохо Type=notify, но тут и правда может потребоваться линковка с каким-нибудь libsystemd*, и если этого хочется избежать, то можно и не делать. Однако систем с udev и без libsystemd* уже видимо не бывает.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155074</commentid>
    <comment_count>4</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2016-02-17 13:22:54 +0300</bug_when>
    <thetext>(In reply to comment #3)

&gt; Однако систем с udev и без libsystemd* уже видимо не бывает.

Пока в системе без systemd сидят только libsystemd и systemd-utils.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155076</commentid>
    <comment_count>5</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2016-02-17 13:28:35 +0300</bug_when>
    <thetext>(In reply to comment #2)

&gt; &gt; Мне кажется, что писать локальные логи - это основное занятие syslog
&gt; 
&gt; Верно, но совсем не обязательно, что локальные логи будут храниться в файловой
&gt; системе, именно поэтому и хочется не тащить за собой syslog-commons в
&gt; обязательном порядке.

Если syslog нужен исключительно для перенаправления на другой сервер логов от journald, то, может, просто собрать именно такой подпакет, со своим частным конфигом, без зависимости на пакет syslog-commons, и обозвать его как-то вроде %name-redirector ? И ещё посмотреть, на базе чего лучше, может быть, rsyslog меньше по размерам будет и по зависимостям, и его будет достаточно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155079</commentid>
    <comment_count>6</comment_count>
    <who name="enp">enp</who>
    <bug_when>2016-02-17 14:52:32 +0300</bug_when>
    <thetext>&gt; Если syslog нужен исключительно для перенаправления на другой сервер логов от
&gt; journald, то, может, просто собрать именно такой подпакет, со своим частным
&gt; конфигом, без зависимости на пакет syslog-commons, и обозвать его как-то вроде
&gt; %name-redirector ? И ещё посмотреть, на базе чего лучше, может быть, rsyslog
&gt; меньше по размерам будет и по зависимостям, и его будет достаточно.

А какой демон будет в %name-redirector? Тот же, что и в %name? Тогда надо выделять некий %name-base (без зависимости на syslog-commons и поэтому с минимальным конфигом вроде простого складирования всего поступающего в один файл), которого будут хотеть %name и %name-redirector. И, кстати, мне тогда %name-redirector и не нужен будет :)

rsyslog для этих целей будет менее удобен, т.к. с документацией и синтаксисом конфигурационного файла у него хуже.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155081</commentid>
    <comment_count>7</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2016-02-17 15:35:13 +0300</bug_when>
    <thetext>(In reply to comment #6)

&gt; А какой демон будет в %name-redirector? Тот же, что и в %name?

Да.

&gt; Тогда надо выделять некий %name-base

С одной стороны да, с другой не хочется плодить пакеты свыше необходимого ради временного (надеюсь) решения. Вроде бы, rpm допускает упаковку одного файла в два подпакета сразу.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155082</commentid>
    <comment_count>8</comment_count>
    <who name="enp">enp</who>
    <bug_when>2016-02-17 16:29:25 +0300</bug_when>
    <thetext>(В ответ на комментарий №7)
&gt; (In reply to comment #6)
&gt; 
&gt; &gt; А какой демон будет в %name-redirector? Тот же, что и в %name?
&gt; 
&gt; Да.
&gt; 
&gt; &gt; Тогда надо выделять некий %name-base
&gt; 
&gt; С одной стороны да, с другой не хочется плодить пакеты свыше необходимого ради
&gt; временного (надеюсь) решения. Вроде бы, rpm допускает упаковку одного файла в
&gt; два подпакета сразу.

Пожалуй, один бинарник в два пакета - это приемлемо, главное чтоб при вытягивании плагинов не вытянулся в итоге syslog-commons :)

Собственно редирект из journald в remote syslog - это не основная задача, для ее решения (если апстрим не сделает), можно маленького демона написать, вот даже кто-то озаботился - https://github.com/pmorton/journalfwd,

Основная - коллектор с фильтрами и с хранилищем не в файловой системе, а в БД (тут уже изобретением велосипеда заниматься не хочется). Т.е. я не рассматриваю это решение как временное.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155149</commentid>
    <comment_count>9</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2016-02-19 10:32:21 +0300</bug_when>
    <thetext>Вроде бы в восьмой ветке rsyslog-а одумались и сделали человеческий синтаксис (rainerscript), старый ужас оставили только для совместимости. Официальная документация (http://www.rsyslog.com/doc/v8-stable/) тоже выглядит неплохо.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>155161</commentid>
    <comment_count>10</comment_count>
    <who name="enp">enp</who>
    <bug_when>2016-02-19 15:12:09 +0300</bug_when>
    <thetext>(В ответ на комментарий №9)
&gt; Вроде бы в восьмой ветке rsyslog-а одумались и сделали человеческий синтаксис
&gt; (rainerscript), старый ужас оставили только для совместимости. Официальная
&gt; документация (http://www.rsyslog.com/doc/v8-stable/) тоже выглядит неплохо.

Да, спасибо, там и парсер, похоже, лучше ловит блох, смотрю еще раз</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167660</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2017-12-04 16:58:35 +0300</bug_when>
    <thetext>Господа, с вашего позволения я закрою эту багу.
В сизиф отправлен syslog-ng-3.12.1, в котором я добавил unit для systemd. Кроме сбора локальных логов, для syslog сервера очень частая задача - приём логов по сети от других устройств(серверов) - syslog коллектор.
unit для systemd позволяет корректно запустить syslog-ng в окружении systemd, как раз в первую очередь для этих целей. Если нужно собирать логи с локального сервера, то проще включить ForwardToSyslog=yes в /etc/systemd/journald.conf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167663</commentid>
    <comment_count>12</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2017-12-04 18:05:23 +0300</bug_when>
    <thetext>(In reply to comment #11)

&gt; Господа, с вашего позволения я закрою эту багу.
&gt; В сизиф отправлен syslog-ng-3.12.1,

Баг в теме, по сути, двойной. По первой части никаких возражений, в системе с sysv unit-файл не мешает. :-)

Что касается второй части, про syslog-common dependency, то это надо бы пометить, как NOTABUG.

Кстати, а плагин для работы с systemd нет желания собрать попробовать ? Я так понимаю, тогда syslog-ng сможет логи забираьт вне зависимости от настроек systemd.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167665</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2017-12-04 18:35:18 +0300</bug_when>
    <thetext>(В ответ на комментарий №12)
&gt; (In reply to comment #11)
&gt; Что касается второй части, про syslog-common dependency, то это надо бы
&gt; пометить, как NOTABUG.

я в rsyslog поступил следующим образом - функционал для локальной работы выделил в отдельный подпакет rsyslog-classic, в котором есть зависимость на syslog-common, drop-in настройка для systemd, и генератор конфига для использования сокетов из /etc/syslog.d/*
Без rsyslog-classic, rsyslog можно использовать как коллектор логов.
Возможно также можно сделать для syslog-ng.

&gt; Кстати, а плагин для работы с systemd нет желания собрать попробовать ? Я так
&gt; понимаю, тогда syslog-ng сможет логи забираьт вне зависимости от настроек
&gt; systemd.

libsdjournal.so и так собирается и присутствует в предыдущих версиях. Или что-то другое имеется ввиду?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167667</commentid>
    <comment_count>14</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2017-12-04 18:44:06 +0300</bug_when>
    <thetext>(In reply to comment #13)

&gt; libsdjournal.so и так собирается и присутствует в предыдущих версиях. Или
&gt; что-то другое имеется ввиду?

Хм. И правда, относительно моей последней сборки появился BuildRequires: libsystemd-devel. Но надо было тогда и в отдельный подпакет вынести, как остальные плагины.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167668</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2017-12-04 18:58:19 +0300</bug_when>
    <thetext>(В ответ на комментарий №14)
&gt; (In reply to comment #13)
&gt; 
&gt; &gt; libsdjournal.so и так собирается и присутствует в предыдущих версиях. Или
&gt; &gt; что-то другое имеется ввиду?
&gt; 
&gt; Хм. И правда, относительно моей последней сборки появился BuildRequires:
&gt; libsystemd-devel. Но надо было тогда и в отдельный подпакет вынести, как
&gt; остальные плагины.

libsdjournal.so собирался и раньше, просто заголовки из systemd свои носил.
Сам выненешь в отдельный пакет или мне?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167670</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2017-12-04 20:17:01 +0300</bug_when>
    <thetext>Ок, я начал, я и выделю в подпакет.
Отправил на сборку новую версию 3.13.1-alt1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167694</commentid>
    <comment_count>17</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2017-12-05 16:45:42 +0300</bug_when>
    <thetext>(In reply to comment #16)

&gt; Ок, я начал, я и выделю в подпакет.

Спасибо. Что-то у меня весь день бегодня сегодня, а вчера вечером поленился в багзилле ответить.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167753</commentid>
    <comment_count>18</comment_count>
    <who name="enp">enp</who>
    <bug_when>2017-12-07 19:24:10 +0300</bug_when>
    <thetext>(В ответ на комментарий №13)
&gt; (В ответ на комментарий №12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; Что касается второй части, про syslog-common dependency, то это надо бы
&gt; &gt; пометить, как NOTABUG.
&gt; 
&gt; я в rsyslog поступил следующим образом - функционал для локальной работы
&gt; выделил в отдельный подпакет rsyslog-classic, в котором есть зависимость на
&gt; syslog-common, drop-in настройка для systemd, и генератор конфига для
&gt; использования сокетов из /etc/syslog.d/*
&gt; Без rsyslog-classic, rsyslog можно использовать как коллектор логов.
&gt; Возможно также можно сделать для syslog-ng.

Ну да, примерно это я и имел ввиду, когда заводил этот баг.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180181</commentid>
    <comment_count>19</comment_count>
    <who name="Sergey Y. Afonin">asy</who>
    <bug_when>2019-03-29 22:45:47 +0300</bug_when>
    <thetext>(In reply to comment #11)

&gt; Господа, с вашего позволения я закрою эту багу.
&gt; В сизиф отправлен syslog-ng-3.12.1, в котором я добавил unit для systemd.

А оно точно получилось рабочее? Я тут попробовал посмотреть syslog-ng 3.20.1-alt4 из задания 224120 (бакпорт в p8), и что-то я не вижу, что syslog работает. Завёл отдельный Bug 36454</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>