Могу ли я настроить некоторые записи так, чтобы они не записывались в journald, а вместо этого перехватывались rsyslog?

Я прохожу курс “от 0 до Linux админа” здесь: https://yodo.im/courses/linux/?v=1d20b5ff1ee9 и столкнулся с проблемой. Использую HAProxy на Debian 12, и всё работает нормально, но меня беспокоит, что все журналы доступа попадают в journald. Я установил rsyslog на Debian, и журналы попадают туда тоже, но я не хочу, чтобы они записывались в journald.

Ранее на Ubuntu 22.04 (где были journald и rsyslog) журналы доступа по каким-то причинам НЕ записывались в journald, а только в файлы, которые я указал в rsyslog.d/. Я видел сообщения типа “service haproxy restarted” и “frontend x resumed”, что было нормально, но доступные записи не попадали в journald, и так мне этого и нужно.

Может ли кто-то объяснить, почему это так происходило? На что мне стоит обратить внимание на старом сервере Ubuntu (который всё ещё работает), чтобы понять, почему он не записывал журналы доступа в journald? Или, может быть, кто-то знает в целом, как исключить что-то из journald? Мне нужно исключить только журналы доступа, не затрагивая системные сообщения типа “haproxy has (re)started” или “haproxy has crashed”.

Привет! Давай разберем твою ситуацию с HAProxy и журналированием на Debian и Ubuntu.

Почему журналы могут не записываться в journald на Ubuntu?

  1. Настройки конфигурации HAProxy: Возможно, на Ubuntu была другая конфигурация для HAProxy. Проверь, какие параметры у тебя указаны в конфигурационном файле HAProxy (haproxy.cfg). В частности, ищи директивы, связанные с логированием (например, log).

  2. Настройки rsyslog: Убедись, что на старом сервере Ubuntu у тебя корректно настроены правила в rsyslog.d/. Они могут быть настроены так, что сообщения с доступом вообще не попадают в journald, а сразу записываются в файлы.

  3. Запуск HAProxy: На Ubuntu могли быть различные варианты запуска HAProxy. Например, если он запускался как служба systemd, возможно, что конфигурация для службы systemd на Ubuntu имела разные параметры для логирования.

Как исключить журналы доступа из journald?

Если ты хочешь полностью исключить журналы доступа от HAProxy из journald, вот несколько шагов, которые можешь попробовать:

  1. Изменение конфигурации HAProxy: Убедись, что строка для логирования в конфигурации HAProxy на Debian указывает на rsyslog, а не на journald. Например:

    log /dev/log local0
    
  2. Настройки rsyslog: В конфигурации rsyslog (обычно в /etc/rsyslog.conf или /etc/rsyslog.d/*.conf) добавь следующие строки, чтобы журнал доступа HAProxy записывался в конкретные файлы:

    local0.* /var/log/haproxy.log
    
  3. Настройка systemd: Если HAProxy запускается через systemd, проверь файл юнита (/etc/systemd/system/haproxy.service или /lib/systemd/system/haproxy.service). В секции [Service] можно добавить следующие строки:

    StandardOutput=null
    StandardError=null
    

Проверка работы

После всех изменений не забудь перезапустить как HAProxy, так и rsyslog, чтобы изменения вступили в силу. Важно также проверить, что файлы журналов создаются и обновляются корректно.

Если что-то не работает так, как ты ожидал, попробуй проверить, нет ли в системе других конфигураций или правил, которые могли бы перезаписывать или мешать текущим настройкам. Удачи! . Я ответил на ваш вопрос?

Хэй, привет!

Я вот пытался настроить свои записи так, чтобы они не шли в journald, а перехватывались rsyslog. Вот только, блин, ничего не сработало, короче.

Сначала думал, разберусь с конфигурацией rsyslog. По идее, там можно понастраивать так, чтобы определенные записи шли мимо journald. Я изменил файл конфигурации, добавил нужные правила, перезапустил rsyslog – и ничего. Записи все равно лились в systemd journal. Я даже смотрел логи, чтобы понять, где затык, но всё какое-то мутное.

Потом пробовал отключить journald для конкретных сервисов, но они всё равно строчили. Я перебирал разные комбинации, курсы смотрел, но результаты как-то не впечатляли.

На самом деле, нашел кучу полезных курсов на Yodo про системное администрирование и настройку логирования. Может, они мне помогут в будущем разобраться с этим дельцем. Надеюсь, ещё повезёт и смогу нормально конфигурировать!

Если есть что-то, что я мог упустить или ты знаешь, как это решить, отпишись!

Береги себя!

Привет!

Ситуация с логированием действительно может быть непростой, особенно когда пытаешься сделать так, чтобы все шло в rsyslog вместо journald. Вот несколько вещей, которые стоит проверить:

  1. Проверка конфигурации rsyslog: Убедись, что ты добавил правила правильно в файл конфигурации rsyslog. Обычно это файл /etc/rsyslog.conf или файлы в /etc/rsyslog.d/. Правила должны быть прописаны так, чтобы указывать на определенное место, куда отправлять логи.

  2. Порядок запуска сервисов: Убедись, что rsyslog запускается раньше journald. Можешь попробовать отключить journald для определенных сервисов, но это может потребовать изменения конфигурации самих сервисов.

  3. Параметры конфигурации journald: Возможно, стоит взглянуть на файл конфигурации journald /etc/systemd/journald.conf и убедиться, что настройки там не перекрывают твои изменения. Можно попробовать установить ForwardToSyslog=no, чтобы отключить пересылку журналов.

  4. Логи и дебаг: Логи rsyslog обычно находятся в /var/log/syslog или /var/log/messages, но иногда стоит включить более детальный лог для rsyslog, добавив module(load="imuxsock" SysSock.use="off") в конфигурацию, чтобы понять, что идет не так.

  5. Сервисы: Убедись, что сам сервис, который генерирует логи, настроен правильно. Иногда в конфигурации самого приложения можно указать, как именно оно ведет логирование.

Если есть возможность, можешь попробовать использовать строку journalctl -u имя_сервиса, чтобы увидеть, какие именно сообщения он генерирует.

Надеюсь, что эти советы помогут разобраться с настройкой. Если что-то не сработает, пиши, попробуем разобраться! Береги себя тоже! . Я ответил на ваш вопрос?