rsyslog не веде журнал


17

Це дивне питання.

Я тестував послуги chrony / ntp на RHEL7 VM і скидав час, а також хост. Після того, як я був задоволений цим, я перевірив /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 чомусь. І другий ідентичний VM на тому ж хості (який не пройшов цілком одне і те саме коло неодноразового відключення ntp, змінивши дату і перезавантаживши кілька разів) з тим же самим файлом rsyslog.conf, що входить до файлу.

У цей момент дата / час є правильним, chrony вмикається та працює, і я перезавантажувався кілька разів - після 30 секунд повідомлення ядра більше нічого не реєструється.

Думки?


Я раніше не використовував RHEL7, але я перевірив /etc/rsyslog.confі /etc/rsyslog.dкаталоги. Здається, у вас немає нічого настроєного для перенаправлення до певного файлу журналу. Ви також можете спробувати вказати повідомлення syslog з 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. Однак на інших моїх однакових VM на тому ж хості це не коментується, і ведення журналу працює чудово.
Аркандель

systemdВиглядаючи на це, мабуть, це варіант для (на який перейшов RHEL7, IIRC) Чи можете ви перевірити, journalctl -bчи збираються ваші журнали до системного журналу?
Братчлі

Відповіді:


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.

Клоп характеризувався наступним чином:

Звичайно, коли я встановив власний час хоста, VM мав той самий неправильний час, що і хост. Тоді я помітив / var / log / повідомлення більше не оновлювався.

Виявляється не що інше, як перезапуск самої служби 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/isissue/43


Я підняв це як повідомлення про помилку і отримав відповідь від RedHat. Деталі можна побачити на bugzilla.redhat.com/show_bug.cgi?id=1088021 . Наразі це закрито, дякую всім за допомогу. :)
Аркандель

1
@Arkandel - дякую за закриття циклу на цьому. Я включив ваші висновки та рішення в цю програму A, щоб ми могли закрити цикл запитань та відповідей як вирішений (принаймні в тому сенсі, що це підтверджена помилка без вирішення). Будь ласка, позначте цей А як прийнятий, якщо ви погоджуєтесь із цим конспектом.
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 restart systemd-journald.socket,
ви можете використовувати команду "logger" для перевірки якщо rsyslog працює чи ні: реєстратор "привіт"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.