Try   HackMD

Практическая работа. Система syslog и журналы логов.

Цель работы:

  • научиться работать с журналированием в Linux
  • научится создавать правила для демона
  • познакомиться с автоматической ротацией

Теория

Начнём издалека. Работая, система отслеживает и записывает в специальные файлы события, которые считает важными или нужными (например, для исправления и отладки ошибок и сбойных конфигураций). Эти файлы называются лог-файлами (файлы регистрации / журнальные файлы). Други словами, эти файлы (далее “логи”) являются основным источником информации о работе системы и происходящих ошибках. Сбор и отслеживание логов осущесвтляется демонами событий. Главной системой логирования считается syslog и ее демон syslogd (в новых дистрибутивах, включая Debian 11, система rsyslog и демон rsyslogd).

Описанный выше процесс, т.е. журналирование, может осуществляться на локальной системе, а так же сообщения журналирования могут пересылаться на удаленную систему.

Для правильной фиксации времени логов, необходимо настроить его синхронизацию.

Сначала задаем правильный часовой пояс:

\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

в данном примере мы использовали московское время.

Затем устанавливаем и запускаем chrony.

а) на системе CentOS / Red Hat:

yum install chrony

systemctl enable chronyd

systemctl start chronyd

б) на системе Ubuntu / Debian:

apt-get install chrony

systemctl enable chrony

systemctl start chrony

1. Знакомство с конфигурационным файлом rsyslog.conf.

Файл rsyslog.conf является главным конфигурационным файлом журналирования системы. Файл представляет собой набор правил работы демона.

nano /etc/rsyslog.conf

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

1.1 Синтаксис правила.

*источник.приоритет действие*

Две и более конструкции разделяются ";", после идёт действие (куда записывать/отправлять?). Символ "*" обозначает "все/любой".

1.2 Создание правила для отправки всех событий user на удалённую систему. (клиент)

user.* @адрес_машины"

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Далее перезапускаем демона.

service rsyslog restart

Или же:

systemctl restart rsyslog

Все логи:

Для начала можно настроить отправку всех логов на сервер. Создаем конфигурационный файл для rsyslog:

vi /etc/rsyslog.d/all.conf

Добавляем:

*.* @@192.168.0.15:514

  • где 192.168.0.15 — IP-адрес сервера логов. . — перенаправлять любой лог.

Перезапускаем rsyslog:

systemctl restart rsyslog

Для определенных категорий:

Если необходимо отправлять только определенные категории логов, создаем конфигурационный файл для соответствующей, например:

vi /etc/rsyslog.d/kern.conf

Добавим строку:

kern.* @@192.168.0.15:514

Перезапускаем сервис логов:

systemctl restart rsyslog

Возможные категории для логов (facility):

Категории и Описание

  • kern Сообщения, отправляемые ядром
  • user Пользовательские программы
  • mail Почта
  • daemon Сервисы (демоны)
  • auth Безопасность/вход в систему/аутентификация
  • syslog Сообщения от syslog
  • lpr Логи печати
  • news Новостные группы (usenet)
  • uucp Unix-to-Unix CoPy (копирование файлов между компьютерами)
  • cron Планировщик заданий
  • authpriv Безопасность/вход в систему/аутентификация - защищенный режим
  • ftp Логи при передачи данных по FTP
  • ntp Лог службы синхронизации времени (существует не везде)
  • security, log audit Журнал аудита (существует не везде)
  • console, log alert Сообщения, отправляемые в консоль (существует не везде)
  • solaris-cron, clock daemon Cron в solaris (существует не везде)
  • local0 - local7 Зарезервированы для локального использования. Уровень серьезности определяется числом от 0 до 7.

Для определенного уровня:

Если мы хотим передавать только сообщения об ошибках, добавляем строку в файл конфигурации rsyslog:

vi /etc/rsyslog.d/erors.conf

*.err @@192.168.0.15:514

Перезапускаем сервис логов:

systemctl restart rsyslog

Возможные категории для логов (severity):

№ Уровень Расшифровка
0 emerg Система не работает (PANIC)
1 alert Серьезная проблема, требующая внимания
2 crit Критическая ошибка
3 err Ошибка (ERROR)
4 warning Предупреждение (WARN)
5 notice Важное информационное сообщение
6 info Информационное сообщение
7 debug Отладочная информация

1.3 Настройка удалённой системы (сервера).

nano /etc/rsyslog.conf

Здесь нам необходимо раскомментировать следующие строчки:

# provides UDP syslog reception       
module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Затем вписываем шаблон хранения входящих журналов.

$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs

Файлы журнала будут использовать следующее соглашение об именах:

​​​​/% HOSTNAME% / — имя хоста клиентской системы.
​​​​/% PROGRAMNAME% / — определяет клиентскую программу, создавшую файл журнала.

Перезапускаем демона.

1.4 Создание события с помощью logger.

logger — unix-утилита, предоставляющая командный интерфейс для модуля системного журнала syslog.

logger -p user.warn *Собщение*

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

2. Настройка создания резервных копий логов с помощью утилиты logrotate

Утилита logrotate предназначена для автоматизации обработки журналов. Она может выполнять с ними необходимые действия в зависимости от определенных условий и правил соответствия. На данный момент эта утилита уже предустановленна на большинстве дистрибутивов, но если у вас её нет, выполните команду apt install logrotate.

Все основные настройки программы находятся в файле /etc/logrotate.conf.

nano /etc/logrotate.conf

Основные директивы управления и обработки логов:

​​​​rotate - указывает сколько старых логов нужно хранить, в параметрах передается количество;
​​​​create - указывает, что необходимо создать пустой лог файл после перемещения старого;
​​​​dateext - добавляет дату ротации перед заголовком старого лога;
​​​​compress - указывает, что лог необходимо сжимать;
​​​​delaycompress - не сжимать последний и предпоследний журнал;
​​​​extension - сохранять оригинальный лог файл после ротации, если у него указанное расширение;
​​​​mail - отправлять Email после завершения ротации;
​​​​maxage - выполнять ротацию журналов, если они старше, чем указано;
​​​​missingok - не выдавать ошибки, если лог файла не существует;
​​​​olddir - перемещать старые логи в отдельную папку;
​​​​postrotate/endscript - выполнить произвольные команды после ротации;
​​​​start - номер, с которого будет начата нумерация старых логов;
​​​​size - размер лога, когда он будет перемещен.

2.1 Создание ротации резервной копии журнала

/var/log/messages {
 rotate 5                       //хранить 5 копий
 mail logadmin@sysloger         //почта для получения самой старой копии
 size 100k                      //размер 100Кб
 postrotate                     //запуск скрипта, перезапускающиего демона
 /usr/bin/killall -HUP syslogd  //сигнал HUP для перезапуска
 endscript                      //конец скрипта
 }                               

То есть, для каждого лога, подлежащего ротации, используется этот шаблон:

"адрес файла лога" {
директивы
}

3. Чтение журналов

3.1 Просмотр журналов с помощью cat+less

cat /var/log/bacula/bacula.log | less

3.2 Просмотр журналов с помощью tail

tail -n 40 /etc/log/kern.log

3.3 Просмотр логов с помощью journalctl

journalctl -bo

3.4 Просмотр логов ядра с помощью dmesg

dmesg