Назад | Перейти на главную страницу

Как правильно настроить logrotate для нескольких сервисов systemd, которые отправляют их stdout, stderr в rsyslog

Предположим, у меня много сервисных подразделений systemd на ubuntu 16.04 что выглядит так:

[Unit]
Description=Do something script
After=default.target

[Service]
ExecStart=/usr/local/sbin/some-script-x.sh
Type=simple
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=some-script

[Install]
WantedBy=default.target

Также я настроил rsyslog следующим образом:

if $programname == 'some-script-x' then /var/log/some-script-x.log

Готово. Журналы обслуживания записываются в свои журналы.

Я хочу повернуть /var/log/some-script-x.log как файлы журнала по умолчанию, например syslog. У меня есть прототип конфига:

/var/log/some-script-x.log
{
        rotate 30
        daily
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                invoke-rc.d rsyslog rotate > /dev/null
        endscript
}

Но в системе уже есть файл /etc/logrotate.d/rsyslog который содержит следующие invoke-rc.d rsyslog rotate > /dev/null.

В этом случае конфигурации есть несколько обращений к серверу системного журнала. Меня это беспокоит. Как сообщить rsyslog, что я хочу повернуть только определенный журнал службы. Или как правильно настроить ротацию, без лишних звонков?