{DATE}
В этой статье будет рассмотрен демон syslogd, а также как управлять протоколированием сообщений системы и ядра с помощью этого демона.
Прежде всего, нужно отметить, что демон находится в пакете sysklogd (если,
вы, конечно, используете Red Hat-совместисую систему), поэтому перед его
использованием нужно установить этот пакет. В большинстве случаев у вас пакет
уже будет установлен, а демон syslogd - запущен. Чтобы проверить это введите
команду syslogd. Вы должны получить сообщение: syslogd: Already running.
В пакет sysklogd на самом деле входят две программы: syslogd и klogd. Syslogd отвечает за протоколирования сообщений системы, а klogd - ядра.
Syslogd обеспечивает вид протоколирования, который используется большинством программ. Демон syslogd пишет сообщения в файл /var/log/syslog. Обычно записи в этом файле содержат такие поля: дата и время, хост, программа, сообщение. Пример этого файла предстален ниже:
Jan 27 17:09:35 dhsilabs modprobe: modprobe: Can't locate module sound-service-1-0 Jan 27 17:09:35 dhsilabs modprobe: modprobe: Can't locate module sound-slot-1 Jan 27 17:09:35 dhsilabs modprobe: modprobe: Can't locate module sound-service-1-0 РЇРЅРІ 27 17:10:07 dhsilabs DrakX: trying to load ru_RU.KOI8-R.po from ./po.cz2 РЇРЅРІ 27 17:11:23 dhsilabs DrakX: default cancel_clicked Jan 27 17:12:28 dhsilabs kernel: VFS: Disk change detected on device ide1(22,64) Jan 27 17:12:31 dhsilabs kernel: ISO 9660 Extensions: Microsoft Joliet Level 1 Jan 27 17:12:31 dhsilabs kernel: ISOFS: changing to secondary root Jan 27 17:12:32 dhsilabs kernel: VFS: Disk change detected on device fd(2,0) Jan 27 17:12:32 dhsilabs kernel: end_request: I/O error, dev 02:00 (floppy), sector 0
Например, из предпоследней записи мы можем узнать, что 27-го января 2002 года в 17:12 произошла смена носителя в устройстве fd, о чем нам любезно сообщило ядро системы (запись "программа" - kernel).
Демон syslogd автоматически при старте системы. Для его запуска предназначен
сценарий /etc/rc.d/init.d/syslog. Как обычно, запустить демон самостоятельно мы
можем с помощью команды: /etc/rc.d/init.d/syslog start, а остановить -
/etc/rc.d/init.d/syslog stop. Для обеспечения автоматической загрузки нажно
создать символическую ссылку на этот файла, например: ls -s
/etc/rc.d/rc5.d/@S30syslog /etc/rc.d/init.d/syslog В этом случае мы
обеспечим запуск демона на пятом уровне запуска (автоматический запуск X
Window). Если вы используете Linux Mandrake, включить и отключить автоматический
запуск вы можете с помощью команды drakxservices(см. рис. 1)
Параметры запуска
Демон syslogd можно запускать с опциями, указанными в таблице 1.
Таблица 1
| Опция | Описание |
| -s socket | Ртот параметр позволяет указать дополнительный сокет, который syslog должен прослушивать |
| -d | Включает режим отладки. В этом режиме демон не будет использовать системный вызов fork(2) для переключения себя в фоновый режим и будет выводить больше отладочной информации |
| -f file | Ртот параметр определяет альтернативный файл конфигурации |
| -h | РџРѕ умолчанию демон РЅРµ перенаправляет сообщения, которые РѕРЅ получает РѕС‚ РґСЂСѓРіРёС… узлов. Ртот параметр позволяет перенаправить сообщения РґСЂСѓРіРёРј хостам, которые определены |
| -n | Ртот параметр нужен, если syslogd запускается Рё контролируется программой init |
| -p socket | Позволяетт задать другой сокет Unix вместо /dev/log |
| -r | Позволяет принимать сообщения из сети. Данная опция появилась в версии syslogd 1.3 |
| -v | Выводит версию syslogd |
В таблице 1 указаны не все опции демона. Назначение всех остальных опций вы можете найти в справочной системе, введя команду man syslogd.
Сигналы
Демон syslogd реагирует на следующие сигналы: SYGTERM, SIGINT, SIGQUIT, SIGHUP, SIGUSR1, SIGCHLD. Реакция демона на сигналы указана в таблице 2.
Таблица 2.
| Сигнал | Реакция |
| SIGTERM | Завершает работу демона |
| SIGINT, SIGQUIT | Завершает работу демона, если выключена отладка (debugging). Если же отладка включена, эти сигналы игнорируются |
| SIGUSR1 | Включает/выключает отладку |
| SIGHUP | Перезапуск демона |
Файл конфигурации
По умолчанию используеся файл конфигурации /etc/syslog.conf. Вы можете указать другой файл конфигурации с помощью опции -f. Рассмотрим установки демона на примере обычного файла конфигурации:
# Протоколирование аутентификации. Файл протокола /var/log/auth.log auth,authpriv.* /var/log/auth.log # Префикс "-" используется, если вы хотите синхронизировать # файл после каждой записи в него. *.*;auth,authpriv.none -/var/log/syslog # Сообщения пользовательских программ user.* -/var/log/user.log # Протоколировать все (кроме mail (почты)). Уровень info и выше # Частные (private) сообщения протоколироваться не будут (none) *.info;mail.none;authpriv.none -/var/log/messages # Файл регистрации частных сообщения имеет ограниченный доступ. Обычно в этот # файл записываются сообщения об удаленном доступе к этой машине, например, # cообщения от демона FTP о том, какие пользователи и когда # регистрировались на данном сервере. authpriv.* /var/log/secure # Протоколирование почты # Уровень отладки, информации и замечаний mail.=debug;mail.=info;mail.=notice -/var/log/mail/info # Уровень предупреждений mail.=warn -/var/log/mail/warnings # Уровень ошибок mail.err -/var/log/mail/errors # Протоколирование демона cron. Уровни отладки, информации, # предупреждений и ошибок cron.=debug;cron.=info;cron.=notice -/var/log/cron/info cron.=warn -/var/log/cron/warnings cron.err -/var/log/cron/errors # Протоколирование ядра kern.=debug;kern.=info;kern.=notice -/var/log/kernel/info kern.=warn -/var/log/kernel/warnings kern.err /var/log/kernel/errors # Протоколирование очереди печати lpr.=debug;lpr.=info;lpr.=notice -/var/log/lpr/info lpr.=warn -/var/log/lpr/warnings lpr.err -/var/log/lpr/errors # Протоколирование новостей news.=debug;news.=info;news.=notice -/var/log/news/info news.=warn -/var/log/news/warnings news.err -/var/log/news/errors # Протоколирование демонов. daemon.=debug;daemon.=info;daemon.=notice -/var/log/daemons/info daemon.=warn -/var/log/daemons/warnings daemon.err -/var/log/daemons/errors # Критические сообщения *.emerg * # Сохранять ошибки почты и новостей (уровень err и выше) # в отдельном файле uucp,news.crit -/var/log/spooler # Заргрузочные сообщения local7.* -/var/log/boot.log
Как вы уже заметили, файл конфигурации состоит из двух полей: объект
протоколирования и файл, в который будут записыватся сообщения, порождаемые этим
объектом. Для каждого объекта можно указать один из уровней протоколирования:
debug, info, notice, warn, err. Первые три относятся к информационным
сообщениям. Уровень warn - это предупреждения, а err - ошибки. Существуют
специальные сообщения - критические. Обычно они выводятся прямо на консоль. Как
для обозначения объектов, так и для обозначения уровней протоколирования можно
использовать символ *, который обозначает все объекты или все уровни. Например,
вы хотите протоколировать все сообщения демонов в файл /var/log/daemons,
используйте такую конструкцию: daemon.* /var/log/daemons
Пример протоколирования всех сообщений уровня emerg (критический уровень) приведен выше. Если вы хотите отправлять сообщения не в файл, а в поименованный канал (FIFO), используйте символ | перед именем файла-потока.
Сетевое протоколирование
Сейчас разберемся как обеспечить протоколирование РІ сети. Рто означает перенаправление сообщений РЅР° демон syslogd, запущенный РЅР° РґСЂСѓРіРѕР№ машине, РіРґРµ РѕРЅРё Р±СѓРґСѓС‚ записаны РЅР° РґРёСЃРє.
Для передачи сообщений используется протокол UDP. Он менее надежный, чем TCP,
но отправление пакетов происходит несколько быстрее. Убедитесь, что в вашем
файле /etc/service раскомментирована строка syslog 514/udp
Затем нужно внести некоторые коррективы в наш файл конфигурации. Как и прежде, определите объекты протоколирования, а вместо файлов протоколов используйте параметр @hostname, где hostname - это имя компьютера, на который будут перенаправлены сообщения. Например, для перенаправления всех сообщений об ошибках на узел сети hostname можно использовать такую запись:
*.err @hostname
Для перенаправления всех сообщений используется запись:
*.* @hostname
Р