Bug 54963 - rsyslog-hiredis: Для правильного порядка запуска нужен `After=redis.service` в `rsyslog.service`
Summary: rsyslog-hiredis: Для правильного порядка запуска нужен `After=redis.service` ...
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: rsyslog-hiredis (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Alexey Shabalin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-06-27 13:12 MSK by Artem Varaksa
Modified: 2025-10-29 18:53 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Artem Varaksa 2025-06-27 13:12:20 MSK
Шаги
====

1. # sed -e 's/#ForwardToSyslog=no/ForwardToSyslog=yes/' -i /etc/systemd/journald.conf && \
    reboot

2. # apt-get install -y rsyslog-hiredis rsyslog rsyslog-classic redis && \
    systemctl enable --now rsyslog redis && \
    systemctl status rsyslog redis --no-pager -l && \
    cat > /etc/rsyslog.d/00_redis.conf << 'EOF' && systemctl restart rsyslog && systemctl status rsyslog --no-pager -l
module(load="omhiredis")

template(
  name="program_count_tmpl"
  type="string"
  string="HINCRBY progcount %programname% 1")

action(
  name="count_programs"
  server="localhost"
  serverport="6379"
  type="omhiredis"
  mode="template"
  template="program_count_tmpl")
    EOF

3. Проверить, что логи попали в базу:
    # echo "HGETALL progcount" | redis-cli

4. # reboot

5. # systemctl status rsyslog redis --no-pager -l


Фактический результат
=====================

rsyslog.service не сразу удаётся подключится к redis.service:

> systemd[1]: Starting rsyslog.service - System Logging Service...
> rsyslogd[1032]: imuxsock: Acquired UNIX socket '/run/systemd/journal/syslog' (fd 3) from systemd.  [v8.2502.0]
> rsyslogd[1032]: [origin software="rsyslogd" swVersion="8.2502.0" x-pid="1032" x-info="https://www.rsyslog.com"] start
> rsyslogd[1032]: can not initialize redis handle [v8.2502.0 try https://www.rsyslog.com/e/2007 ]
> rsyslogd[1032]: action 'count_programs' suspended (module 'omhiredis'), retry 0. There should be messages before this one giving the reason for suspension. [v8.2502.0 try https://www.rsyslog.com/e/2007 ]
> systemd[1]: Started rsyslog.service - System Logging Service.
> rsyslogd[1032]: action 'count_programs' resumed (module 'omhiredis') [v8.2502.0 try https://www.rsyslog.com/e/2359 ]


Ожидаемый результат
===================

Сервисы стартуют в правильном порядке. Ошибок нет.


Дополнительно
=============

Ситуация, судя по логам, в целом штатная, но появляющаяся ошибка нежелательна, и её можно исправить с помощью workaround:

# cat > /etc/systemd/system/rsyslog.service.d/override.conf << EOF && reboot
[Unit]
After=redis.service
EOF

Не исключено, что в других пакетах rsyslog-* может быть аналогичная ситуация с другими БД/сервисами.


Воспроизводимость
=================

Воспроизводится с 1 раза на виртуальных машинах:

[sisyphus] ALT Server 11.0 x86_64
rsyslog-8.2502.0-alt3.x86_64

[p11] ALT Server 11.0 x86_64
rsyslog-8.2502.0-alt3.x86_64

[p10+388178.1] ALT Server 10.4 x86_64
rsyslog-8.2502.0-alt3.x86_64


Не воспроизводится на виртуальной машине (проверено > 3 раз):

[p10] ALT Server 10.4 x86_64
rsyslog-8.2408.0-alt2.x86_64
Comment 1 Artem Varaksa 2025-06-27 13:18:22 MSK
Версии redis:

[sisyphus] redis-7.2.7-alt1.x86_64
[p11] redis-7.2.6-alt1.x86_64
[p10+388178.1] redis-6.2.17-alt1.x86_64
[p10] redis-6.2.17-alt1.x86_64
Comment 2 Богдан Богуславский 2025-10-29 18:53:46 MSK
Больше не воспроизводится в Sisyphus
версии пакетов:
rsyslog-8.2502.0-alt4.1
redis-7.2.11-alt1