Настройка системы логирования rsyslog
Содержание
- 1 Настройка системы логирования (rsyslog)
- 1.1 1. Подготовка системы
- 1.2 2. Установка rsyslog
- 1.3 3. Базовая конфигурация
- 1.4 4. Настройка централизованного логирования
- 1.5 5. Настройка фильтрации логов
- 1.6 6. Настройка ротации логов
- 1.7 7. Настройка мониторинга логов
- 1.8 8. Настройка безопасности
- 1.9 9. Настройка производительности
- 1.10 10. Мониторинг и диагностика
- 1.11 11. Настройка интеграций
- 1.12 12. Резервное копирование
- 1.13 13. Устранение неполадок
- 1.14 Заключение
Настройка системы логирования (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 \# Настройки маркеров $MarkMessagePeriod 0 $MarkInterval 20 \# Настройки логирования $WorkDirectory /var/spool/rsyslog $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat \# Настройки UDP $UDPServerRun 514 $UDPServerAddress 127.0.0.1 \# Настройки TCP $InputTCPServerRun 514 $TCPServerAddress 127.0.0.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 \# Apache логи local0.* /var/log/apache2/access.log local1.* /var/log/apache2/error.log \# MySQL логи local2.* /var/log/mysql/error.log \# 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 \# Шаблоны для удаленных логов $template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log" *.* ?RemoteLogs \# Шаблон для всех удаленных логов $template AllRemoteLogs,"/var/log/remote/%HOSTNAME%.log" *.* ?AllRemoteLogs \# Правила для удаленных логов :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 \# Отправка логов на сервер *.* @@192.168.1.10:514 *.* @@192.168.1.10:514 \# Локальное логирование *.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 \# Фильтрация по приоритету *.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 \# Фильтрация по хосту :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 \# Создание отчета logwatch /usr/sbin/logwatch --output mail --mailto admin@example.com --format text \# Создание отчета по критическим ошибкам 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 \# Очистка временных файлов 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 \# Настройки потоков $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 \# Асинхронная отправка $ActionSendDefaultMode async
10. Мониторинг и диагностика
Создание скрипта мониторинга
1. Создайте скрипт мониторинга:
sudo nano /usr/local/bin/rsyslog-monitor.sh
2. Добавьте содержимое:
\#!/bin/bash \# Проверка статуса rsyslog if ! systemctl is-active --quiet rsyslog; then echo "Rsyslog is down!" | mail -s "Rsyslog Alert" admin@example.com fi \# Проверка размера логов 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 \# Проверка критических ошибок 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 \# Проверка подключений 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 \# Шаблон для Elasticsearch $template es-template,"{\"@timestamp\":\"%timereported:::date-rfc3339%\",\"host\":\"%hostname%\",\"severity\":\"%syslogseverity%\",\"facility\":\"%syslogfacility%\",\"program\":\"%programname%\",\"message\":\"%msg%\"}" \# Отправка в 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 \# Настройки подключения к MySQL $ActionMySQLServer localhost $ActionMySQLDBName Syslog $ActionMySQLUserName rsyslog $ActionMySQLPassword password \# Отправка в 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) \# Создание директории для бэкапа mkdir -p $BACKUP_DIR \# Резервное копирование конфигурации tar -czf $BACKUP_DIR/rsyslog-config-$DATE.tar.gz -C /etc rsyslog.d \# Резервное копирование логов tar -czf $BACKUP_DIR/rsyslog-logs-$DATE.tar.gz -C /var/log remote \# Резервное копирование конфигурации logrotate cp /etc/logrotate.d/rsyslog $BACKUP_DIR/logrotate-rsyslog-$DATE.conf \# Удаление старых бэкапов (старше 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):
- [Выделенные серверы](https://ark-hoster.ru/dedicated/) - для критически важных систем логирования
- [VPS/VDS серверы](https://ark-hoster.ru/vpsgame/) - для небольших и средних проектов
Наши специалисты помогут с настройкой rsyslog и оптимизацией производительности ваших систем логирования!