У меня проблемы с машиной Ubuntu 16.04.4, на которой запущены systemd и syslog-ng (3.5.6-2.1), где сообщения, зарегистрированные в syslog процессом (назовем его X), не были получены syslog-ng. Изучение этого показало, что journald перехватывает сообщения, зарегистрированные X, и, следовательно, они никогда не попадают в syslog-ng.
После небольшого поиска казалось, что systemd нужно сообщить, что syslog-ng предоставляет службу syslog, так что сообщения, полученные journald, также попадали в syslog-ng. Однако, взглянув на модуль systemd syslog-ng, выяснилось, что это уже должно было быть так, поскольку он содержит:
[Install]
WantedBy=multi-user.target
Alias=syslog.service
Но даже если syslog-ng был явно включен с помощью systemctl enable syslog-ng
, кажется, символическая ссылка
/etc/systemd/system/syslog.service -> /lib/systemd/system/syslog-ng.service
отсутствовал в системе. Удаление и повторная установка syslog-ng, а затем запуск systemctl enable syslog-ng
фактически воссоздал эту символическую ссылку, что заставило ее работать.
Актуальная проблема сейчас в том, что у меня есть машина, на которой включен модуль syslog-ng systemd, но символическая ссылка отсутствует, и в этом случае systemctl enable syslog-ng
делает не воссоздайте недостающую символическую ссылку, поскольку systemd, похоже, видит, что syslog-ng уже включен, и поэтому не пытается проверить, существует ли символическая ссылка или нет.
Конечно, теоретически я мог бы вручную создать символическую ссылку, но вот мои вопросы:
Я просмотрел документацию по systemd, которую смог найти, но это разочаровывающе расплывчато о том, когда / как / при каких обстоятельствах создаются эти символические ссылки.
Любая помощь приветствуется!
syslog-ng 3.5 довольно старый и несколько глючный, я бы посоветовал перейти на более новую версию (в настоящее время последняя версия - 3.16). В репозитории разработчика можно найти пакеты: https://build.opensuse.org/project/show/home:laszlo_budai:syslog-ng