Настройка системы логирования rsyslog — различия между версиями
Admin (обсуждение | вклад) (Новая страница: «= Настройка системы логирования (rsyslog) = == 1. Подготовка системы == * Войдите в систему под у…») |
(нет различий)
|
Версия 08:34, 15 октября 2025
Содержание
- 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 и оптимизацией производительности ваших систем логирования!