Ну и теперь, что касается действия.
Практическая работа №4
Тема: Значение log-файлов для системного администратора
Анализ системных логов (журнальных файлов) очень важный навык любого системного администратора. Порой, только логи помогают понять в чем кроется проблема в работе системы.
Основное вместилище логов по умолчанию (и этого правила лучше придерживаться) — каталог /var/log/.
Как нетрудно понять из анализа содержимого каталога, большинство сервисов имеют журнальный файл с соответствующим названием.
- /var/log/messages — основной журнал событий. Включает в себя события всего системного ПО, этапы загрузки не связанные с ядром.
 - /var/log/dmesg — журнал событий загрузки, включает в себя события ядра, инициализацию аппаратной части и подключения дополнительных устройств.
 - /var/log/secure — события системы безопасности. Включает в себя журналы аутентификации. Если вы подозреваете, что к системе был осуществлен несанкционированный доступ, этот файл нужно проверить в первую очередь.
 - /var/log/audit/audit.log — журнальный файл SELinux подсистемы.
 - /var/log/yum.log — журнал установщика yum.
 - /var/log/boot.log — журнал загрузки системы.
 - /var/log/httpd/ — каталог с логами веб-сервера и т.д.
 
Просматривать логи можно как обычным текстовым редактором, так и при помощи специальных программ выводить нужные фрагменты.
# tail /var/log/messages
выведет последние 10 записей файла. Если нужно изменить число выводимых строк, указывается параметр -n <число>.
Кстати, отобразить последние записи и обновляться по мере появления новых записей можно с использованием ключа -f:
# tail -f /var/log/messages
Когда в файл поступит новое событие, оно тут же отобразится на экране в терминале. Выход из этого режиме — Ctrl+C.
В редких случаях, но всё-таки бывает, нужно вывести не последние, а первые записи. Для этого служит команда head, имеющая похожий синтаксис, что и tail.
Стоит сказать, что логи в системе могут порождаться как локальными процессами или ядром, так и приходит с других узлов. Приходят они соответственно через сокет /dev/log, либо на 514/udp порт/
Syslog и его конфигурация
Конфигурационный файл syslog.conf (rsyslog.conf) расположен в каталоге /etc/ и представляет собой список правил, по которым демон будет фильтровать приходящие сообщения и раскидывать их по местам.
Каждое правило представляет собой сочетание источника, приоритета и действия. Источник и приоритет разделены точкой. Кроме того, позволительно указывать в одном правиле несколько источников, отделяя их через запятую, а источники с уровнями — через точку с запятой.

Конфигурационный файл syslog.conf
Вот пример такого файла на моём CentOS 5.3
Получая сообщение через локальный сокет или по сети, демон syslogd проверяет совпадения источника и приоритета этого сообщения с описанными в конфиг файле. Причём, сообщение проверяется сразу по всем правилам последовательно, а не до первого совпадения, что позволяет выполнить различные действия над сообщением (фасовка в журналы и отправка по сети дальше).
Важно помнить, что сообщение считается подходящим, если его уровень равный или выше, чем уровень правила.
Возможно использование служебных конструкций типа * (любой источник или уровень), none (никакой уровень для конкретного источника), ! (отрицание), = (только этот уровень).
Возьмём к примеру строку:
authpriv.* /var/log/secure
Если в приходящем сообщении в качестве источника будет authpriv.error (например), то это сообщение запишется в журнал /var/log/secure.
Уровни важности
| emerg | Аварийная ситуация (PANIC) | |
| alert | Тревожная ситуация, при которой потребуется вмешательство | |
| crit | Критическая ситуация | |
| err | Сообщение об ошибке (ERROR) | |
| warning | Предупреждение (WARN) | |
| notice | Информация о важном событии | |
| info | Информационное сообщение | |
| debug | Отладочное (подробное) сообщение | 
Теперь, что касается источников сообщений:
| kern | Сообщения ядра | |
| user | Пользовательские программы | |
| Подсистема пересылки почты | ||
| daemon | Сообщения прочих сервисов | |
| auth | Авторизация пользователя, изменение прав доступа | |
| syslog | Сообщения от самой системы журналирования | |
| lpr | Подсистема печати | |
| news | Устарело. Сообщения от провайдера новостей | |
| uucp | Устарело. Сообщения Unix-to-Unix Copy Protocol. | |
| cron | Сообщения от планировщика cron | |
| authpriv | Похоже на auth, только пишет в закрытый для прочих пользователей файл | |
| ftp | Действия FTP-сервиса | |
| ntp | Сообщения сервиса синхронизации времени | |
| 13,14 | log audit, alert | |
| clock daemon | Сервис времени | |
| 16-23 | local0-local7 | Зарезервированные уровни. local7, например, для этапа загрузки системы. | 
Ну и теперь, что касается действия.
- Отправка в обычный файл — указывается путь к файлу-источнику. Если необходимо отключить синхронизацию файла после дозаписи, перед путём ставится дефис. Отключенная синхронизация повышает производительность на нагруженных логах, но может потерять данные.
 - Отправка в именованный канал, указывается символ пайпа | и путь к каналу.
 - Отправка в терминал /dev/console.
 - Отправка на удалённый сервер, указывается символ @ и имя-порт хоста.
 
Сейчас уже существуют и более гибкие продукты вроде syslog-ng (next generation), позволяющие сортировать по регулярным выражениям и многое другое.
Ротация логов
Ротация — периодическое обновление файлов журналов, при этом старые журналы сохраняются и сжимаются, а для записи событий создается новый файл. Именно этим и занимается программа logrotate, которая, как правило, запускается планировщиком.
Конфигурация содержится в файле /etc/logrotate.conf
Информацию по настройке этого сервиса можно найти так:
 # man logrotate
Ротацию логов можно совершать в определённый период времени или когда файл достигнет определённого размера. Кроме того, можно указать произвольные лог-файлы не системных служб.