Настройка системы логирования rsyslog — различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к: навигация, поиск
(Новая страница: «= Настройка системы логирования (rsyslog) = == 1. Подготовка системы == * Войдите в систему под у…»)
(нет различий)

Версия 08:34, 15 октября 2025

Содержание

Настройка системы логирования (rsyslog)

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Убедитесь, что у вас есть доступ к серверу через SSH или консоль.

2. Установка rsyslog =

Обновление системы

1. Обновите систему: sudo apt update

2. Проверьте, установлен ли rsyslog: which rsyslog rsyslogd -v

3. Если не установлен, установите: sudo apt install -y rsyslog

4. Запустите и включите автозапуск: sudo systemctl start rsyslog sudo systemctl enable rsyslog

5. Проверьте статус: sudo systemctl status rsyslog

3. Базовая конфигурация =

Создание резервной копии

1. Создайте резервную копию оригинального файла: sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.backup

Основная конфигурация

1. Отредактируйте основной конфигурационный файл: sudo nano /etc/rsyslog.conf

2. Настройте основные параметры: # Основные настройки $ModLoad imuxsock $ModLoad imklog $ModLoad immark

  1. Настройки маркеров

$MarkMessagePeriod 0 $MarkInterval 20

  1. Настройки логирования

$WorkDirectory /var/spool/rsyslog $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

  1. Настройки UDP

$UDPServerRun 514 $UDPServerAddress 127.0.0.1

  1. Настройки TCP

$InputTCPServerRun 514 $TCPServerAddress 127.0.0.1

  1. Настройки производительности

$MainMsgQueueType LinkedList $MainMsgQueueSize 10000 $MainMsgQueueDiscardMark 9750 $MainMsgQueueDiscardSeverity 4

Настройка правил логирования

1. Добавьте правила логирования: # Системные логи

  • .info;mail.none;authpriv.none;cron.none /var/log/messages

authpriv.* /var/log/secure mail.* -/var/log/maillog cron.* /var/log/cron

  • .emerg *

uucp,news.crit /var/log/spooler local7.* /var/log/boot.log

  1. Apache логи

local0.* /var/log/apache2/access.log local1.* /var/log/apache2/error.log

  1. MySQL логи

local2.* /var/log/mysql/error.log

  1. Nginx логи

local3.* /var/log/nginx/access.log local4.* /var/log/nginx/error.log

4. Настройка централизованного логирования =

Настройка сервера логирования

1. Настройте rsyslog как сервер: sudo nano /etc/rsyslog.d/50-server.conf

2. Добавьте конфигурацию: # Настройки сервера $ModLoad imudp $UDPServerRun 514 $UDPServerAddress 0.0.0.0

$ModLoad imtcp $InputTCPServerRun 514 $TCPServerAddress 0.0.0.0

  1. Шаблоны для удаленных логов

$template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"

  • .* ?RemoteLogs
  1. Шаблон для всех удаленных логов

$template AllRemoteLogs,"/var/log/remote/%HOSTNAME%.log"

  • .* ?AllRemoteLogs
  1. Правила для удаленных логов
fromhost-ip, isequal, "192.168.1.100" /var/log/remote/server1.log
fromhost-ip, isequal, "192.168.1.101" /var/log/remote/server2.log

Настройка клиента логирования

1. Настройте rsyslog как клиент: sudo nano /etc/rsyslog.d/50-client.conf

2. Добавьте конфигурацию: # Настройки клиента $ModLoad imuxsock $ModLoad imklog

  1. Отправка логов на сервер
  • .* @@192.168.1.10:514
  • .* @@192.168.1.10:514
  1. Локальное логирование
  • .info;mail.none;authpriv.none;cron.none /var/log/messages

authpriv.* /var/log/secure

5. Настройка фильтрации логов =

Фильтрация по приоритету

1. Создайте правила фильтрации: sudo nano /etc/rsyslog.d/30-filter.conf

2. Добавьте правила: # Фильтрация критических ошибок

msg, contains, "CRITICAL" /var/log/critical.log
msg, contains, "ERROR" /var/log/errors.log
msg, contains, "WARNING" /var/log/warnings.log
  1. Фильтрация по приоритету
  • .crit /var/log/critical.log
  • .err /var/log/errors.log
  • .warning /var/log/warnings.log
  • .info /var/log/info.log
  • .debug /var/log/debug.log

Фильтрация по источнику

1. Создайте правила по источникам: sudo nano /etc/rsyslog.d/40-source.conf

2. Добавьте правила: # Фильтрация по программе

programname, isequal, "sshd" /var/log/ssh.log
programname, isequal, "apache2" /var/log/apache2.log
programname, isequal, "mysql" /var/log/mysql.log
programname, isequal, "nginx" /var/log/nginx.log
  1. Фильтрация по хосту
fromhost-ip, isequal, "192.168.1.100" /var/log/server1.log
fromhost-ip, isequal, "192.168.1.101" /var/log/server2.log

6. Настройка ротации логов =

Установка logrotate

1. Установите logrotate: sudo apt install -y logrotate

2. Проверьте установку: logrotate --version

Настройка ротации

1. Создайте конфигурацию для rsyslog: sudo nano /etc/logrotate.d/rsyslog

2. Добавьте настройки: /var/log/remote/*.log {

   daily
   missingok
   rotate 30
   compress
   delaycompress
   notifempty
   create 644 syslog adm
   postrotate
       systemctl reload rsyslog
   endscript

}

/var/log/critical.log /var/log/errors.log /var/log/warnings.log /var/log/info.log /var/log/debug.log {

   daily
   missingok
   rotate 7
   compress
   delaycompress
   notifempty
   create 644 syslog adm
   postrotate
       systemctl reload rsyslog
   endscript

}

Тестирование ротации

1. Протестируйте конфигурацию: sudo logrotate -d /etc/logrotate.d/rsyslog

2. Принудительно запустите ротацию: sudo logrotate -f /etc/logrotate.d/rsyslog

7. Настройка мониторинга логов =

Установка logwatch

1. Установите logwatch: sudo apt install -y logwatch

2. Настройте logwatch: sudo nano /etc/logwatch/conf/logwatch.conf

3. Добавьте настройки: LogDir = /var/log TmpDir = /var/cache/logwatch MailTo = admin@example.com MailFrom = logwatch@example.com Print = No Save = /var/log/logwatch/logwatch.log Range = yesterday Detail = Med Service = All

Настройка автоматических отчетов

1. Создайте скрипт для ежедневных отчетов: sudo nano /usr/local/bin/logwatch-report.sh

2. Добавьте содержимое: #!/bin/bash

  1. Создание отчета logwatch

/usr/sbin/logwatch --output mail --mailto admin@example.com --format text

  1. Создание отчета по критическим ошибкам

grep -i "critical\|error\|fatal" /var/log/syslog | tail -50 > /tmp/critical-errors.log mail -s "Critical Errors Report" admin@example.com < /tmp/critical-errors.log

  1. Очистка временных файлов

rm -f /tmp/critical-errors.log

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/logwatch-report.sh

4. Добавьте в crontab: sudo crontab -e

5. Добавьте задачу: 0 6 * * * /usr/local/bin/logwatch-report.sh

8. Настройка безопасности =

Настройка TLS/SSL

1. Создайте SSL сертификаты: sudo mkdir -p /etc/rsyslog.d/ssl sudo openssl req -x509 -newkey rsa:4096 -keyout /etc/rsyslog.d/ssl/rsyslog.key -out /etc/rsyslog.d/ssl/rsyslog.crt -days 365 -nodes -subj "/CN=logserver.example.com"

2. Настройте TLS в конфигурации: sudo nano /etc/rsyslog.d/50-tls.conf

3. Добавьте настройки: $DefaultNetstreamDriver gtls $DefaultNetstreamDriverCAFile /etc/rsyslog.d/ssl/rsyslog.crt $DefaultNetstreamDriverCertFile /etc/rsyslog.d/ssl/rsyslog.crt $DefaultNetstreamDriverKeyFile /etc/rsyslog.d/ssl/rsyslog.key

$ActionSendStreamDriverMode 1 $ActionSendStreamDriverAuthMode anon

Настройка аутентификации

1. Создайте пользователей для rsyslog: sudo htpasswd -c /etc/rsyslog.d/users admin

2. Настройте аутентификацию: sudo nano /etc/rsyslog.d/50-auth.conf

3. Добавьте настройки: $ModLoad imtcp $InputTCPServerStreamDriverMode 1 $InputTCPServerStreamDriverAuthMode anon $InputTCPServerRun 514

9. Настройка производительности =

Оптимизация очередей

1. Настройте очереди сообщений: sudo nano /etc/rsyslog.d/60-performance.conf

2. Добавьте настройки: # Настройки очередей $MainMsgQueueType LinkedList $MainMsgQueueSize 10000 $MainMsgQueueDiscardMark 9750 $MainMsgQueueDiscardSeverity 4 $MainMsgQueueSaveOnShutdown on

  1. Настройки потоков

$WorkDirectory /var/spool/rsyslog $ActionQueueType LinkedList $ActionQueueFileName logqueue $ActionQueueMaxDiskSpace 1g $ActionQueueSaveOnShutdown on $ActionQueueTimeoutEnqueue 0 $ActionQueueDiscardMark 9750 $ActionQueueDiscardSeverity 4

Настройка буферизации

1. Настройте буферизацию: sudo nano /etc/rsyslog.d/70-buffering.conf

2. Добавьте настройки: # Буферизация для удаленных логов $ActionQueueType LinkedList $ActionQueueFileName remotequeue $ActionQueueMaxDiskSpace 1g $ActionQueueSaveOnShutdown on $ActionQueueTimeoutEnqueue 0 $ActionQueueDiscardMark 9750 $ActionQueueDiscardSeverity 4

  1. Асинхронная отправка

$ActionSendDefaultMode async

10. Мониторинг и диагностика =

Создание скрипта мониторинга

1. Создайте скрипт мониторинга: sudo nano /usr/local/bin/rsyslog-monitor.sh

2. Добавьте содержимое: #!/bin/bash

  1. Проверка статуса rsyslog

if ! systemctl is-active --quiet rsyslog; then

   echo "Rsyslog is down!" | mail -s "Rsyslog Alert" admin@example.com

fi

  1. Проверка размера логов

LOG_SIZE=$(du -sh /var/log/remote/ 2>/dev/null | awk '{print $1}') if [ "$LOG_SIZE" != "" ]; then

   echo "Remote logs size: $LOG_SIZE" | mail -s "Rsyslog Report" admin@example.com

fi

  1. Проверка критических ошибок

CRITICAL_COUNT=$(grep -c "CRITICAL" /var/log/syslog 2>/dev/null || echo 0) if [ $CRITICAL_COUNT -gt 10 ]; then

   echo "High number of critical errors: $CRITICAL_COUNT" | mail -s "Rsyslog Alert" admin@example.com

fi

  1. Проверка подключений

CONNECTIONS=$(netstat -an | grep :514 | wc -l) echo "Active rsyslog connections: $CONNECTIONS" | mail -s "Rsyslog Report" admin@example.com

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/rsyslog-monitor.sh

4. Добавьте в crontab: sudo crontab -e

5. Добавьте задачу: */10 * * * * /usr/local/bin/rsyslog-monitor.sh

Диагностика проблем

1. Проверка статуса: sudo systemctl status rsyslog

2. Проверка конфигурации: sudo rsyslogd -N1

3. Проверка логов: sudo tail -f /var/log/syslog

4. Проверка подключений: sudo netstat -tlnp | grep :514

5. Тестирование правил: sudo rsyslogd -N1 -f /etc/rsyslog.conf

11. Настройка интеграций =

Интеграция с Elasticsearch

1. Установите модуль для Elasticsearch: sudo apt install -y rsyslog-elasticsearch

2. Настройте отправку в Elasticsearch: sudo nano /etc/rsyslog.d/80-elasticsearch.conf

3. Добавьте конфигурацию: $ModLoad omelasticsearch

  1. Шаблон для Elasticsearch

$template es-template,"{\"@timestamp\":\"%timereported:::date-rfc3339%\",\"host\":\"%hostname%\",\"severity\":\"%syslogseverity%\",\"facility\":\"%syslogfacility%\",\"program\":\"%programname%\",\"message\":\"%msg%\"}"

  1. Отправка в Elasticsearch
  • .* :omelasticsearch:localhost:9200;es-template

Интеграция с базами данных

1. Установите модуль для MySQL: sudo apt install -y rsyslog-mysql

2. Настройте отправку в MySQL: sudo nano /etc/rsyslog.d/80-mysql.conf

3. Добавьте конфигурацию: $ModLoad ommysql

  1. Настройки подключения к MySQL

$ActionMySQLServer localhost $ActionMySQLDBName Syslog $ActionMySQLUserName rsyslog $ActionMySQLPassword password

  1. Отправка в MySQL
  • .* :ommysql:localhost,Syslog,rsyslog,password

12. Резервное копирование =

Создание скрипта резервного копирования

1. Создайте скрипт резервного копирования: sudo nano /usr/local/bin/rsyslog-backup.sh

2. Добавьте содержимое: #!/bin/bash

BACKUP_DIR="/backup/rsyslog" DATE=$(date +%Y%m%d_%H%M%S)

  1. Создание директории для бэкапа

mkdir -p $BACKUP_DIR

  1. Резервное копирование конфигурации

tar -czf $BACKUP_DIR/rsyslog-config-$DATE.tar.gz -C /etc rsyslog.d

  1. Резервное копирование логов

tar -czf $BACKUP_DIR/rsyslog-logs-$DATE.tar.gz -C /var/log remote

  1. Резервное копирование конфигурации logrotate

cp /etc/logrotate.d/rsyslog $BACKUP_DIR/logrotate-rsyslog-$DATE.conf

  1. Удаление старых бэкапов (старше 7 дней)

find $BACKUP_DIR -name "rsyslog-*" -mtime +7 -delete

echo "Rsyslog backup completed: $DATE"

3. Сделайте скрипт исполняемым: sudo chmod +x /usr/local/bin/rsyslog-backup.sh

4. Добавьте в crontab: sudo crontab -e

5. Добавьте задачу: 0 2 * * * /usr/local/bin/rsyslog-backup.sh

13. Устранение неполадок =

Частые проблемы

1. Rsyslog не запускается:

  • Проверьте конфигурацию: sudo rsyslogd -N1
  • Проверьте права доступа к файлам
  • Проверьте логи: sudo journalctl -u rsyslog

2. Логи не поступают:

  • Проверьте сетевые настройки
  • Проверьте файрвол
  • Проверьте конфигурацию клиента

3. Проблемы с производительностью:

  • Настройте очереди сообщений
  • Оптимизируйте правила фильтрации
  • Проверьте использование диска

Диагностика

1. Проверка статуса: sudo systemctl status rsyslog

2. Проверка конфигурации: sudo rsyslogd -N1

3. Проверка логов: sudo tail -f /var/log/syslog

4. Проверка подключений: sudo netstat -tlnp | grep :514

5. Тестирование правил: sudo rsyslogd -N1 -f /etc/rsyslog.conf

Заключение

Rsyslog успешно настроен и готов к работе! Теперь у вас есть мощная система централизованного логирования с возможностями фильтрации, ротации и мониторинга.

Для размещения ваших систем логирования на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой rsyslog и оптимизацией производительности ваших систем логирования!