Системный журнал

Вопросы программного кода и архитектуры Linux

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Системный журнал

Непрочитанное сообщение Olej » 16 авг 2012, 11:37

Вопрос переплыл вот отсюда: viewtopic.php?f=19&t=1792&start=0
dmitriev писал(а):
Может быть как-то можно сделать ведение логов поподробнее?
Присоединяюсь к вопросу. И немного расширяю его:
Как заставить систему вести логи нужного процесса?
В моем случае - логи сетевого подключения (wvdial и ppp).
Т.е. вопрос понятен? : как управлять логированием в системе?

dmitriev
Писатель
Сообщения: 461
Зарегистрирован: 12 янв 2009, 19:36
Контактная информация:

Re: Системный журнал

Непрочитанное сообщение dmitriev » 16 авг 2012, 11:41

Можно и так сказать.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Системный журнал

Непрочитанное сообщение Olej » 16 авг 2012, 11:46

dmitriev писал(а):Можно и так сказать.
Давайте разбираться ...
Кое-что я знаю и могу сказать, кое-что потребует разборок ;-) .

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Системный журнал

Непрочитанное сообщение Olej » 16 авг 2012, 12:26

dmitriev писал(а):
Может быть как-то можно сделать ведение логов поподробнее?
Присоединяюсь к вопросу. И немного расширяю его:
Как заставить систему вести логи нужного процесса?
В моем случае - логи сетевого подключения (wvdial и ppp).
Я уже в исходной теме заметил, что здесь, как минимум, 3 вопроса одновременно:
1. как управлять порогом логирования системы?
2. как программа пишет лог, и как она определяет уровень логирования?
3. как заставить конкретную программу писать детальные логи?

Начнём с п.1
Вот здесь, в тексте книги Модули ядра Linux, мы с моей группой слушателей разбирались (но только отчасти) с этими вопросами: Вывод диагностики модуля
Определения констант для 8 уровней сообщений, записываемых в вызове printk() вы найдёте в файле /lib/modules/2.6.18-92.el5/build/include/linux/kernel.h:

Код: Выделить всё

#define KERN_EMERG "<0>" /* system is unusable */
#define KERN_ALERT "<1>" /* action must be taken immediately */
#define KERN_CRIT "<2>" /* critical conditions */
#define KERN_ERR "<3>" /* error conditions */
#define KERN_WARNING "<4>" /* warning conditions */
#define KERN_NOTICE "<5>" /* normal but significant condition */
#define KERN_INFO "<6>" /* informational */
#define KERN_DEBUG "<7>" /* debug-level messages */
- система логирования Linux предусматривает целую сетку уровней важности, "тревожности" сообщений...
- система логирования записывает в системный журнал только те сообщения, уровень "тревожности" которых численно ниже (важнее) порога, установленного для демона системного журнала ...
- порог уровня логирования устанавливается при старте или рестарте демона системного журнала...
- рестарт, обычно, предусматривается посылкой (kill) демону сигнала SIGHUP;
- порог логирования демона определяется его конфигурациями (иногда и опциями запуска демона)...
- к неприятности, принятая система логирования Linux меняется время от времени (довольно радикально): был syslogd, потом rsyslogd, сейчас в Fedora Леннарт Поттеринг со всей своей дурью настырно пробивает новую систему логирования, связанную с systemd (перевод: зачем переходить на systemd)...

В любом случае, программа тупо выдаёт лог-сообщение (ничего не зная о деталях системного журнала), а логируется это сообщение или нет в журнал - решает демон журнала по своим текущим настройкам, и записывается сообщение в журнал только в том случае, если его индекс ниже установленного порога, все остальные сообщения просто игнорируются.
Обычно программы (особенно демоны, службы) сыпят лог-сообщения самых разных уровней тревожности ... а уже настройки системы логирования определяют какие из них отфильтровать в мусор.

P.S. там же, по показанному URL, в главе, показаны некоторые приёмы переконфигурирования уровня порога демона системного журнала ... но лучше это проверять-смотреть не по публикации на HTML странице книги, а в её более поздних обновлениях... чтоб не искать такие обновления, я наиболее свежую версию книги прикрепляю прямо сюда.
Вложения
BOOK_KERN_162.odt
(493.8 КБ) 464 скачивания

dmitriev
Писатель
Сообщения: 461
Зарегистрирован: 12 янв 2009, 19:36
Контактная информация:

Re: Системный журнал

Непрочитанное сообщение dmitriev » 16 авг 2012, 12:47

Ну и как же это регулировать на уровне конечного пользователя?

Ali
Писатель
Сообщения: 57
Зарегистрирован: 08 окт 2011, 08:00
Контактная информация:

Re: Системный журнал

Непрочитанное сообщение Ali » 16 авг 2012, 14:32

dmitriev писал(а):Ну и как же это регулировать на уровне конечного пользователя?
debug Enables connection debugging facilities. If this option is given, pppd will log the contents of all control packets sent or received in a
readable form. The packets are logged through syslog with facility daemon and level debug. This information can be directed to a file by
setting up /etc/syslog.conf appropriately (see syslog.conf(5)).
В/etc/ppp/ppp.options добавить переменную:

Код: Выделить всё

debug  # см. man pppd
в /etc/syslog.conf

Код: Выделить всё

!ppp
*.*                                             /var/log/ppp.log
перезапустить демон.

UPD
Как сделать в случае systemd ???

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Системный журнал

Непрочитанное сообщение Olej » 16 авг 2012, 14:51

Ali писал(а):
dmitriev писал(а):Ну и как же это регулировать на уровне конечного пользователя?
debug Enables connection debugging facilities. If this option is given, pppd will log the contents of all control packets sent or received in a
readable form. The packets are logged through syslog with facility daemon and level debug. This information can be directed to a file by
setting up /etc/syslog.conf appropriately (see syslog.conf(5)).
В/etc/ppp/ppp.options добавить переменную:

Код: Выделить всё

debug  # см. man pppd
Это уже к вопросу, который я назвал №3 ;-)

Ali, какая у вас система, дистрибутив, релиз?

Вот какие чудеса происходят в Fedora 17:

Код: Выделить всё

[root@notebook sysconfig]# cat /etc/system-release
RFRemix release 17 (Beefy Miracle)
Ali писал(а): в /etc/syslog.conf

Код: Выделить всё

!ppp
*.*                                             /var/log/ppp.log

Код: Выделить всё

[root@notebook sysconfig]# ls /etc/syslog*
ls: невозможно получить доступ к /etc/syslog*: Нет такого файла или каталога
Ali писал(а): перезапустить демон.
Какой из них? :lol: :

Код: Выделить всё

[root@notebook sysconfig]# ps -A | grep log
  644 ?        00:00:00 abrt-watch-log
  665 ?        00:00:00 systemd-logind
  684 ?        00:00:00 rsyslogd
  694 ?        00:00:00 mcelog
Ali писал(а): UPD
Как сделать в случае systemd ???
Вот и я о том же! :lol:

Ali
Писатель
Сообщения: 57
Зарегистрирован: 08 окт 2011, 08:00
Контактная информация:

Re: Системный журнал

Непрочитанное сообщение Ali » 16 авг 2012, 15:01

Код: Выделить всё

root@ali ~]# grep ppp /etc/rsyslog.conf 
:msg, contains, "pppd"  -/var/log/ppp.log
[root@ali ~]# systemctl restart  rsyslog.service
[root@ali ~]# /usr/sbin/pppd debug /dev/ttyS0 38400
[root@ali ~]# 

Код: Выделить всё

[root@ali log]# tailf ppp.log 

Aug 16 15:57:19 ali pppd[2348]: pppd 2.4.5 started by ali, uid 0

RFRemix release 16.1
как-то так :-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Системный журнал

Непрочитанное сообщение Olej » 16 авг 2012, 15:59

Ali писал(а):

Код: Выделить всё

root@ali ~]# grep ppp /etc/rsyslog.conf 
:msg, contains, "pppd"  -/var/log/ppp.log
Здесь я протупил :-? относительно /etc/syslog.conf & /etc/rsyslog.conf ... хотя сам описывал в Вывод диагностики модуля конфигурирование rsyslogd.

А вот этот номер с systemd не пройдёт :-(
Ali писал(а):

Код: Выделить всё

[root@ali ~]# systemctl restart  rsyslog.service
[root@ali ~]# /usr/sbin/pppd debug /dev/ttyS0 38400
[root@ali ~]# 
См. :
потерялся sshd в Fedora 17
не могу поднять сервер ftp с systemd
управление systemd

Скрипты запуска сервисов systemd должны быть прописаны в:

Код: Выделить всё

bash-4.2$ pwd
/usr/lib/systemd/system
Тогда прописанные там сервисы под управлением systemd управляются как-то так:

Код: Выделить всё

bash-4.2$ sudo systemctl stop proftpd.service
bash-4.2$ sudo systemctl start proftpd.service
bash-4.2$ sudo systemctl status proftpd.service

Но там тоже что-то странное:

Код: Выделить всё

bash-4.2$ ls | grep *log*
grep: syslog.target.wants: Это каталог
bash-4.2$ ls syslog.target.wants
bash-4.2$ 
Каким образом они начально стартовали rsyslogd мне непонятно!

Заставить перечитать конфиоурацию rsyslogd можно и без его рестарта:

Код: Выделить всё

bash-4.2$ ps -Af | grep logd
root       684     1  0 10:05 ?        00:00:00 /sbin/rsyslogd -n -c 5
olej      3461  3315  0 15:56 pts/5    00:00:00 grep logd
bash-4.2$ sudo kill -HUP 684
- послали ему сигнал SIGHUP.

Код: Выделить всё

bash-4.2$ sudo tail -n1 /var/log/messages 
Aug 16 15:57:22 notebook rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="684" x-info="http://www.rsyslog.com"] rsyslogd was HUPed

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Системный журнал

Непрочитанное сообщение Olej » 16 авг 2012, 16:17

Olej писал(а): Каким образом они начально стартовали rsyslogd мне непонятно!
В запуске "по старому стилю" rsyslogd, естественно, нет:

Код: Выделить всё

bash-4.2$ ls /etc/init.d
functions  hsqldb  ipsec  livesys  livesys-late  netconsole  network  rfremixconf  spice-vdagentd  tcsd  wine
Ali писал(а):

Код: Выделить всё

[root@ali ~]# systemctl restart  rsyslog.service
[root@ali ~]# /usr/sbin/pppd debug /dev/ttyS0 38400
[root@ali ~]# 
Но рестарт сервиса rsyslog происходит:

Код: Выделить всё

bash-4.2$ sudo systemctl restart rsyslog.service
bash-4.2$ sudo tail -n4 /var/log/messages 
Aug 16 16:14:50 notebook kernel: Kernel logging (proc) stopped.
Aug 16 16:14:50 notebook rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="684" x-info="http://www.rsyslog.com"] exiting on signal 15.
Aug 16 16:14:50 notebook kernel: imklog 5.8.10, log source = /proc/kmsg started.
Aug 16 16:14:50 notebook rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="3533" x-info="http://www.rsyslog.com"] start

Ответить

Вернуться в «Linux изнутри»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей