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.