rsyslog не входит

17

Это странная проблема.

Я тестировал сервисы chrony / ntp на виртуальной машине RHEL7 и сбрасывал время и хост. Как только я был удовлетворен этим, я проверил /var/log/messagesи понял, что это не было изменено некоторое время.

Теперь независимо от того, что я делаю, ничего не регистрируется, за исключением случаев, когда я перезапускаю сам сервис rsyslog; когда я получаю это:

Apr 15 13:59:43 mymachine1 rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="2847" x-info="http://www.rsyslog.com"] exiting on signal 2.

Apr 15 13:59:59 mymachine1 rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="2853" x-info="http://www.rsyslog.com"] start

Apr 15 14:00:11 mymachine1 rsyslogd-3000: sd_journal_get_cursor() failed: 'Cannot assign requested address'

Попытка logger testсделать что-то вроде « не регистрировать», кажется, ничего кроме собственных сообщений rsyslog. Когда я запускаю rsyslog вручную в -n -N1качестве аргументов, я получаю:

rsyslogd: version 7.4.2, config validation run (level 1), master config /etc/rsyslog.conf

rsyslogd: End of config validation run. Bye

Просто кажется, что ничто не может войти в систему через rsyslog по какой-то причине. И вторая идентичная виртуальная машина на том же хосте (которая не проходила одинаковый круг многократного отключения ntp, меняя дату и перезагружаясь несколько раз) с теми же файлами журналов rsyslog.conf, просто отлично.

На данный момент дата / время верны, хрония включена и работает, и я несколько раз перезагружался - после 30 секунд сообщений ядра больше ничего не регистрируется снова.

Мысли?

Arkandel
источник
Я не использовал RHEL7 раньше, но я бы проверил /etc/rsyslog.confи /etc/rsyslog.dкаталоги. Похоже, у вас ничего не настроено для маршрутизации в конкретный файл журнала. Вы также можете попытаться указать сообщение системного журнала с EMERGприоритетом, чтобы проверить, получится ли это. Пример:logger -p EMERG not really an emergency
Братчли
1
/etc/rsyslog.conf содержит это: * .info; mail.none; authpriv.none; cron.none; local0.none / var / log / messages Что касается файлов в /etc/rsyslog.d, listen.conf, это : $ SystemLogSocketName / run / systemd / journal / syslog и rate-unlimit.conf this: $ SystemLogRateLimitInterval 0 $ SystemLogRateLimitBurst 0 Что касается приоритета EMERG, он также не регистрируется.
Аркандел
Вам, вероятно, следует либо обновить свой ответ, либо вставить текст, поскольку мы потеряли разрывы строк.
Братчли
Прости за это. По какой-то причине он не анализирует перевод строки в комментариях. Когда я комментирую это в rsyslog.conf, ведение журнала снова включается: $ OmitLocalLogging on. Однако на моей другой идентичной виртуальной машине на том же хосте она не закомментирована, и регистрация работает нормально.
Аркандел
Рассматривая это, очевидно, это вариант systemd( для которого RHEL7 мигрировал, IIRC). Можете ли вы проверить, journalctl -bпопадают ли ваши журналы в журнал systemd?
Братчли

Ответы:

19

Не прямое решение, но я бы позволил некоторую отладку, чтобы увидеть, что происходит за кулисами.

Идея № 1 - отладчик журнала

Для начала, когда вы запускаете свои loggerкоманды, вы можете делать их так, выводя сообщения в STDERR.

$ logger -s "hi"
saml: hi

Идея № 2 - проверить ваш файл конфигурации

Вы также можете попробовать проверить ваш конфигурационный файл rsyslog:

$ sudo rsyslogd -N6 | head -10
rsyslogd: version 7.2.6, config validation run (level 6), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye.

6921.173842409:7f8b11df2780: rsyslogd 7.2.6 startup, module path '', cwd:/root
6921.175241008:7f8b11df2780: caller requested object 'net', not found (iRet -3003)
6921.175261977:7f8b11df2780: Requested to load module 'lmnet'
6921.175272711:7f8b11df2780: loading module '/lib64/rsyslog/lmnet.so'
6921.175505384:7f8b11df2780: module lmnet of type 2 being loaded (keepType=0).
6921.175520208:7f8b11df2780: entry point 'isCompatibleWithFeature' not present in module
6921.175528413:7f8b11df2780: entry point 'setModCnf' not present in module
6921.175535294:7f8b11df2780: entry point 'getModCnfName' not present in module
6921.175541502:7f8b11df2780: entry point 'beginCnfLoad' not present in module

Идея № 3 - Включите отладку rsyslogd

Также я бы попробовал включить отладку rsyslogdдемона для дальнейшего понимания.

$ sudo -i
$ export RSYSLOG_DEBUGLOG="/tmp/debuglog"
$ export RSYSLOG_DEBUG="Debug"

$ service rsyslog stop
$ rsyslogd -d | head -10    
7160.005597645:7fae096a3780: rsyslogd 7.2.6 startup, module path '', cwd:/root
7160.005872662:7fae096a3780: caller requested object 'net', not found (iRet -3003)
7160.005895004:7fae096a3780: Requested to load module 'lmnet'
7160.005906331:7fae096a3780: loading module '/lib64/rsyslog/lmnet.so'
7160.006023505:7fae096a3780: module lmnet of type 2 being loaded (keepType=0).
7160.006030872:7fae096a3780: entry point 'isCompatibleWithFeature' not present in module
7160.006033780:7fae096a3780: entry point 'setModCnf' not present in module
7160.006036209:7fae096a3780: entry point 'getModCnfName' not present in module
7160.006038359:7fae096a3780: entry point 'beginCnfLoad' not present in module
...
...
7160.006063913:7fae096a3780: rsyslog runtime initialized, version 7.2.6, current users 1
7160.006102179:7fae096a3780: source file syslogd.c requested reference for module 'lmnet', reference count now 2
7160.006113657:7fae096a3780: GenerateLocalHostName uses 'greeneggs'

Подтверждение информации о версии

$ rsyslogd -version
rsyslogd 7.2.6, compiled with:
    FEATURE_REGEXP:             Yes
    FEATURE_LARGEFILE:          No
    GSSAPI Kerberos 5 support:      Yes
    FEATURE_DEBUG (debug build, slow code): No
    32bit Atomic operations supported:  Yes
    64bit Atomic operations supported:  Yes
    Runtime Instrumentation (slow code):    No
    uuid support:               Yes

See http://www.rsyslog.com for more information.

Подтвержденная ошибка и обходной путь

ОП представил это как ошибку в Red Hat.

Ошибка была охарактеризована следующим образом:

Конечно, когда я установил собственное время хоста, виртуальная машина имела то же время, что и хост. Тогда я заметил, что / var / log / messages больше не обновляется.

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

  ---
   Apr 15 16:39:39 rhel7time-dev rsyslogd-3000: sd_journal_get_cursor() failed: 'Cannot assign requested address'

  Apr 15 16:39:39 rhel7time-dev rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="574" x-info="http://www.rsyslog.com"] exiting on signal 15.
  Apr 15 16:39:39 rhel7time-dev rsyslogd: [origin software="rsyslogd" swVersion="7.4.2" x-pid="2117" x-info="http://www.rsyslog.com"] start
  ---

В противном случае ничего не записывается в файл, в том числе регистратор.

Если я закомментирую $ OmitLocalLogging в rsyslog.conf, то регистрация файла возобновится (обратите внимание, что до этого момента я не менял rsyslog.conf).

Вход в журнал не зависит от всего этого. journalctl -b показывает ведение журнала, включая все, что отправлено регистратором.

На что один из разработчиков ответил:

Когда эта проблема возникает, вы можете удалить /var/lib/rsyslog/imjournal.stateи перезапустить демон в качестве обходного пути.

rsyslog не обрабатывает дату напрямую, а только через системный API. Я проверил код в imjournal некоторое время назад, и это похоже на проблему в systemd.

Для справки см .: https://github.com/rsyslog/rsyslog/issues/43.

SLM
источник
Я поднял это как сообщение об ошибке и получил ответ от RedHat. Подробности можно увидеть на bugzilla.redhat.com/show_bug.cgi?id=1088021 . Пока это закрыто, всем спасибо за помощь. :)
Аркандел
1
@Arkandel - спасибо, что закрыли цикл. Я включил ваши выводы и обходной путь в этот А, чтобы мы могли завершить цикл вопросов и ответов в соответствии с решением (по крайней мере, в том смысле, что это подтвержденная ошибка без обходного пути). Пожалуйста, отметьте это как принятое, если вы согласны с этим резюме.
SLM
4

В моем случае systemctl restart systemd-journaldпомогло, потому что

File /run/log/journal/29c32d60f93c42489aabb4ebeb593f5b/system.journal corrupted or uncleanly shut down, renaming and replacing.
[12274404.541271] systemd-journald[15492]: Deleted empty journal /run/log/journal/29c32d60f93c42489aabb4ebeb593f5b/system@0005317804680d96-e103c48634d16856.journal~ (4096 bytes).
Валентина
источник
1

Попробуйте проверить rsyslog conf с помощью: rsyslogd -f /etc/rsyslog.conf -N 1
Если все в порядке, попробуйте перезапустить systemd-journald.socket с помощью: systemctl, перезапустите systemd-journald.socket,
чтобы проверить команду «logger». если rsyslog работает или нет: регистратор "привет"

S.Bao
источник