Настройка системы логирования rsyslog: различия между версиями
Admin (обсуждение | вклад) Новая страница: «= Настройка системы логирования (rsyslog) = == 1. Подготовка системы == * Войдите в систему под у…» |
Починка разметки: ссылки и жирный шрифт из Markdown, лишние обратные косые черты в коде, заголовки — проверка вики 13.11.2026 |
||
| (не показаны 2 промежуточные версии 2 участников) | |||
| Строка 6: | Строка 6: | ||
* Убедитесь, что у вас есть доступ к серверу через SSH или консоль. | * Убедитесь, что у вас есть доступ к серверу через SSH или консоль. | ||
== 2. Установка rsyslog | == 2. Установка rsyslog == | ||
=== Обновление системы === | === Обновление системы === | ||
1. Обновите систему: | 1. Обновите систему: | ||
< | <pre>sudo apt update</pre> | ||
2. Проверьте, установлен ли rsyslog: | 2. Проверьте, установлен ли rsyslog: | ||
< | <pre>which rsyslog</pre> | ||
< | <pre>rsyslogd -v</pre> | ||
3. Если не установлен, установите: | 3. Если не установлен, установите: | ||
< | <pre>sudo apt install -y rsyslog</pre> | ||
4. Запустите и включите автозапуск: | 4. Запустите и включите автозапуск: | ||
< | <pre>sudo systemctl start rsyslog</pre> | ||
< | <pre>sudo systemctl enable rsyslog</pre> | ||
5. Проверьте статус: | 5. Проверьте статус: | ||
< | <pre>sudo systemctl status rsyslog</pre> | ||
== 3. Базовая конфигурация | == 3. Базовая конфигурация == | ||
=== Создание резервной копии === | === Создание резервной копии === | ||
1. Создайте резервную копию оригинального файла: | 1. Создайте резервную копию оригинального файла: | ||
< | <pre>sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.backup</pre> | ||
=== Основная конфигурация === | === Основная конфигурация === | ||
1. Отредактируйте основной конфигурационный файл: | 1. Отредактируйте основной конфигурационный файл: | ||
< | <pre>sudo nano /etc/rsyslog.conf</pre> | ||
2. Настройте основные параметры: | 2. Настройте основные параметры: | ||
< | <pre># Основные настройки | ||
$ModLoad imuxsock | $ModLoad imuxsock | ||
$ModLoad imklog | $ModLoad imklog | ||
| Строка 66: | Строка 66: | ||
$MainMsgQueueDiscardMark 9750 | $MainMsgQueueDiscardMark 9750 | ||
$MainMsgQueueDiscardSeverity 4 | $MainMsgQueueDiscardSeverity 4 | ||
</ | </pre> | ||
=== Настройка правил логирования === | === Настройка правил логирования === | ||
1. Добавьте правила логирования: | 1. Добавьте правила логирования: | ||
< | <pre># Системные логи | ||
*.info;mail.none;authpriv.none;cron.none /var/log/messages | *.info;mail.none;authpriv.none;cron.none /var/log/messages | ||
authpriv.* /var/log/secure | authpriv.* /var/log/secure | ||
| Строка 90: | Строка 90: | ||
local3.* /var/log/nginx/access.log | local3.* /var/log/nginx/access.log | ||
local4.* /var/log/nginx/error.log | local4.* /var/log/nginx/error.log | ||
</ | </pre> | ||
== 4. Настройка централизованного логирования | == 4. Настройка централизованного логирования == | ||
=== Настройка сервера логирования === | === Настройка сервера логирования === | ||
1. Настройте rsyslog как сервер: | 1. Настройте rsyslog как сервер: | ||
< | <pre>sudo nano /etc/rsyslog.d/50-server.conf</pre> | ||
2. Добавьте конфигурацию: | 2. Добавьте конфигурацию: | ||
< | <pre># Настройки сервера | ||
$ModLoad imudp | $ModLoad imudp | ||
$UDPServerRun 514 | $UDPServerRun 514 | ||
| Строка 120: | Строка 120: | ||
:fromhost-ip, isequal, "192.168.1.100" /var/log/remote/server1.log | :fromhost-ip, isequal, "192.168.1.100" /var/log/remote/server1.log | ||
:fromhost-ip, isequal, "192.168.1.101" /var/log/remote/server2.log | :fromhost-ip, isequal, "192.168.1.101" /var/log/remote/server2.log | ||
</ | </pre> | ||
=== Настройка клиента логирования === | === Настройка клиента логирования === | ||
1. Настройте rsyslog как клиент: | 1. Настройте rsyslog как клиент: | ||
< | <pre>sudo nano /etc/rsyslog.d/50-client.conf</pre> | ||
2. Добавьте конфигурацию: | 2. Добавьте конфигурацию: | ||
< | <pre># Настройки клиента | ||
$ModLoad imuxsock | $ModLoad imuxsock | ||
$ModLoad imklog | $ModLoad imklog | ||
| Строка 139: | Строка 139: | ||
*.info;mail.none;authpriv.none;cron.none /var/log/messages | *.info;mail.none;authpriv.none;cron.none /var/log/messages | ||
authpriv.* /var/log/secure | authpriv.* /var/log/secure | ||
</ | </pre> | ||
== 5. Настройка фильтрации логов | == 5. Настройка фильтрации логов == | ||
=== Фильтрация по приоритету === | === Фильтрация по приоритету === | ||
1. Создайте правила фильтрации: | 1. Создайте правила фильтрации: | ||
< | <pre>sudo nano /etc/rsyslog.d/30-filter.conf</pre> | ||
2. Добавьте правила: | 2. Добавьте правила: | ||
< | <pre># Фильтрация критических ошибок | ||
:msg, contains, "CRITICAL" /var/log/critical.log | :msg, contains, "CRITICAL" /var/log/critical.log | ||
:msg, contains, "ERROR" /var/log/errors.log | :msg, contains, "ERROR" /var/log/errors.log | ||
| Строка 160: | Строка 160: | ||
*.info /var/log/info.log | *.info /var/log/info.log | ||
*.debug /var/log/debug.log | *.debug /var/log/debug.log | ||
</ | </pre> | ||
=== Фильтрация по источнику === | === Фильтрация по источнику === | ||
1. Создайте правила по источникам: | 1. Создайте правила по источникам: | ||
< | <pre>sudo nano /etc/rsyslog.d/40-source.conf</pre> | ||
2. Добавьте правила: | 2. Добавьте правила: | ||
< | <pre># Фильтрация по программе | ||
:programname, isequal, "sshd" /var/log/ssh.log | :programname, isequal, "sshd" /var/log/ssh.log | ||
:programname, isequal, "apache2" /var/log/apache2.log | :programname, isequal, "apache2" /var/log/apache2.log | ||
| Строка 177: | Строка 177: | ||
:fromhost-ip, isequal, "192.168.1.100" /var/log/server1.log | :fromhost-ip, isequal, "192.168.1.100" /var/log/server1.log | ||
:fromhost-ip, isequal, "192.168.1.101" /var/log/server2.log | :fromhost-ip, isequal, "192.168.1.101" /var/log/server2.log | ||
</ | </pre> | ||
== 6. Настройка ротации логов | == 6. Настройка ротации логов == | ||
=== Установка logrotate === | === Установка logrotate === | ||
1. Установите logrotate: | 1. Установите logrotate: | ||
< | <pre>sudo apt install -y logrotate</pre> | ||
2. Проверьте установку: | 2. Проверьте установку: | ||
< | <pre>logrotate --version</pre> | ||
=== Настройка ротации === | === Настройка ротации === | ||
1. Создайте | '''Внимание:''' штатный файл <code>/etc/logrotate.d/rsyslog</code> не изменяйте и не перезаписывайте: он отвечает за ротацию системных журналов (syslog, auth.log и других). Свои правила кладите в отдельный файл. | ||
< | |||
1. Создайте отдельный файл конфигурации: | |||
<pre>sudo nano /etc/logrotate.d/rsyslog-custom</pre> | |||
2. Добавьте настройки: | 2. Добавьте настройки: | ||
< | <pre>/var/log/remote/*.log { | ||
daily | daily | ||
missingok | missingok | ||
| Строка 224: | Строка 226: | ||
endscript | endscript | ||
} | } | ||
</ | </pre> | ||
=== Тестирование ротации === | === Тестирование ротации === | ||
1. Протестируйте конфигурацию: | 1. Протестируйте конфигурацию: | ||
< | <pre>sudo logrotate -d /etc/logrotate.d/rsyslog-custom</pre> | ||
2. Принудительно запустите ротацию: | 2. Принудительно запустите ротацию: | ||
< | <pre>sudo logrotate -f /etc/logrotate.d/rsyslog-custom</pre> | ||
== 7. Настройка мониторинга логов | == 7. Настройка мониторинга логов == | ||
=== Установка logwatch === | === Установка logwatch === | ||
1. Установите logwatch: | 1. Установите logwatch: | ||
< | <pre>sudo apt install -y logwatch</pre> | ||
2. Настройте logwatch: | 2. Настройте logwatch: | ||
< | <pre>sudo nano /etc/logwatch/conf/logwatch.conf</pre> | ||
3. Добавьте настройки: | 3. Добавьте настройки: | ||
< | <pre>LogDir = /var/log | ||
TmpDir = /var/cache/logwatch | TmpDir = /var/cache/logwatch | ||
MailTo = admin@example.com | MailTo = admin@example.com | ||
| Строка 254: | Строка 256: | ||
Detail = Med | Detail = Med | ||
Service = All | Service = All | ||
</ | </pre> | ||
=== Настройка автоматических отчетов === | === Настройка автоматических отчетов === | ||
1. Создайте скрипт для ежедневных отчетов: | 1. Создайте скрипт для ежедневных отчетов: | ||
< | <pre>sudo nano /usr/local/bin/logwatch-report.sh</pre> | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
< | <pre>#!/bin/bash | ||
# Создание отчета logwatch | # Создание отчета logwatch | ||
| Строка 273: | Строка 275: | ||
# Очистка временных файлов | # Очистка временных файлов | ||
rm -f /tmp/critical-errors.log | rm -f /tmp/critical-errors.log | ||
</ | </pre> | ||
3. Сделайте скрипт исполняемым: | 3. Сделайте скрипт исполняемым: | ||
< | <pre>sudo chmod +x /usr/local/bin/logwatch-report.sh</pre> | ||
4. Добавьте в crontab: | 4. Добавьте в crontab: | ||
< | <pre>sudo crontab -e</pre> | ||
5. Добавьте задачу: | 5. Добавьте задачу: | ||
< | <pre>0 6 * * * /usr/local/bin/logwatch-report.sh</pre> | ||
== 8. Настройка безопасности | == 8. Настройка безопасности == | ||
=== Настройка TLS/SSL === | === Настройка TLS/SSL === | ||
1. Создайте SSL сертификаты: | 1. Создайте SSL сертификаты: | ||
< | <pre>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"</ | 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"</pre> | ||
2. Настройте TLS в конфигурации: | 2. Настройте TLS в конфигурации: | ||
< | <pre>sudo nano /etc/rsyslog.d/50-tls.conf</pre> | ||
3. Добавьте настройки: | 3. Добавьте настройки: | ||
< | <pre>$DefaultNetstreamDriver gtls | ||
$DefaultNetstreamDriverCAFile /etc/rsyslog.d/ssl/rsyslog.crt | $DefaultNetstreamDriverCAFile /etc/rsyslog.d/ssl/rsyslog.crt | ||
$DefaultNetstreamDriverCertFile /etc/rsyslog.d/ssl/rsyslog.crt | $DefaultNetstreamDriverCertFile /etc/rsyslog.d/ssl/rsyslog.crt | ||
| Строка 303: | Строка 305: | ||
$ActionSendStreamDriverMode 1 | $ActionSendStreamDriverMode 1 | ||
$ActionSendStreamDriverAuthMode anon | $ActionSendStreamDriverAuthMode anon | ||
</ | </pre> | ||
=== Настройка аутентификации === | === Настройка аутентификации === | ||
1. Создайте пользователей для rsyslog: | 1. Создайте пользователей для rsyslog: | ||
< | <pre>sudo htpasswd -c /etc/rsyslog.d/users admin</pre> | ||
2. Настройте аутентификацию: | 2. Настройте аутентификацию: | ||
< | <pre>sudo nano /etc/rsyslog.d/50-auth.conf</pre> | ||
3. Добавьте настройки: | 3. Добавьте настройки: | ||
< | <pre>$ModLoad imtcp | ||
$InputTCPServerStreamDriverMode 1 | $InputTCPServerStreamDriverMode 1 | ||
$InputTCPServerStreamDriverAuthMode anon | $InputTCPServerStreamDriverAuthMode anon | ||
$InputTCPServerRun 514 | $InputTCPServerRun 514 | ||
</ | </pre> | ||
== 9. Настройка производительности | == 9. Настройка производительности == | ||
=== Оптимизация очередей === | === Оптимизация очередей === | ||
1. Настройте очереди сообщений: | 1. Настройте очереди сообщений: | ||
< | <pre>sudo nano /etc/rsyslog.d/60-performance.conf</pre> | ||
2. Добавьте настройки: | 2. Добавьте настройки: | ||
< | <pre># Настройки очередей | ||
$MainMsgQueueType LinkedList | $MainMsgQueueType LinkedList | ||
$MainMsgQueueSize 10000 | $MainMsgQueueSize 10000 | ||
| Строка 344: | Строка 346: | ||
$ActionQueueDiscardMark 9750 | $ActionQueueDiscardMark 9750 | ||
$ActionQueueDiscardSeverity 4 | $ActionQueueDiscardSeverity 4 | ||
</ | </pre> | ||
=== Настройка буферизации === | === Настройка буферизации === | ||
1. Настройте буферизацию: | 1. Настройте буферизацию: | ||
< | <pre>sudo nano /etc/rsyslog.d/70-buffering.conf</pre> | ||
2. Добавьте настройки: | 2. Добавьте настройки: | ||
< | <pre># Буферизация для удаленных логов | ||
$ActionQueueType LinkedList | $ActionQueueType LinkedList | ||
$ActionQueueFileName remotequeue | $ActionQueueFileName remotequeue | ||
| Строка 363: | Строка 365: | ||
# Асинхронная отправка | # Асинхронная отправка | ||
$ActionSendDefaultMode async | $ActionSendDefaultMode async | ||
</ | </pre> | ||
== 10. Мониторинг и диагностика | == 10. Мониторинг и диагностика == | ||
=== Создание скрипта мониторинга === | === Создание скрипта мониторинга === | ||
1. Создайте скрипт мониторинга: | 1. Создайте скрипт мониторинга: | ||
< | <pre>sudo nano /usr/local/bin/rsyslog-monitor.sh</pre> | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
< | <pre>#!/bin/bash | ||
# Проверка статуса rsyslog | # Проверка статуса rsyslog | ||
| Строка 395: | Строка 397: | ||
CONNECTIONS=$(netstat -an | grep :514 | wc -l) | CONNECTIONS=$(netstat -an | grep :514 | wc -l) | ||
echo "Active rsyslog connections: $CONNECTIONS" | mail -s "Rsyslog Report" admin@example.com | echo "Active rsyslog connections: $CONNECTIONS" | mail -s "Rsyslog Report" admin@example.com | ||
</ | </pre> | ||
3. Сделайте скрипт исполняемым: | 3. Сделайте скрипт исполняемым: | ||
< | <pre>sudo chmod +x /usr/local/bin/rsyslog-monitor.sh</pre> | ||
4. Добавьте в crontab: | 4. Добавьте в crontab: | ||
< | <pre>sudo crontab -e</pre> | ||
5. Добавьте задачу: | 5. Добавьте задачу: | ||
< | <pre>*/10 * * * * /usr/local/bin/rsyslog-monitor.sh</pre> | ||
=== Диагностика проблем === | === Диагностика проблем === | ||
1. '''Проверка статуса''': | 1. '''Проверка статуса''': | ||
< | <pre>sudo systemctl status rsyslog</pre> | ||
2. '''Проверка конфигурации''': | 2. '''Проверка конфигурации''': | ||
< | <pre>sudo rsyslogd -N1</pre> | ||
3. '''Проверка логов''': | 3. '''Проверка логов''': | ||
< | <pre>sudo tail -f /var/log/syslog</pre> | ||
4. '''Проверка подключений''': | 4. '''Проверка подключений''': | ||
< | <pre>sudo netstat -tlnp | grep :514</pre> | ||
5. '''Тестирование правил''': | 5. '''Тестирование правил''': | ||
< | <pre>sudo rsyslogd -N1 -f /etc/rsyslog.conf</pre> | ||
== 11. Настройка интеграций | == 11. Настройка интеграций == | ||
=== Интеграция с Elasticsearch === | === Интеграция с Elasticsearch === | ||
1. Установите модуль для Elasticsearch: | 1. Установите модуль для Elasticsearch: | ||
< | <pre>sudo apt install -y rsyslog-elasticsearch</pre> | ||
2. Настройте отправку в Elasticsearch: | 2. Настройте отправку в Elasticsearch: | ||
< | <pre>sudo nano /etc/rsyslog.d/80-elasticsearch.conf</pre> | ||
3. Добавьте конфигурацию: | 3. Добавьте конфигурацию: | ||
< | <pre>$ModLoad omelasticsearch | ||
# Шаблон для Elasticsearch | # Шаблон для Elasticsearch | ||
| Строка 441: | Строка 443: | ||
# Отправка в Elasticsearch | # Отправка в Elasticsearch | ||
*.* :omelasticsearch:localhost:9200;es-template | *.* :omelasticsearch:localhost:9200;es-template | ||
</ | </pre> | ||
=== Интеграция с базами данных === | === Интеграция с базами данных === | ||
1. Установите модуль для MySQL: | 1. Установите модуль для MySQL: | ||
< | <pre>sudo apt install -y rsyslog-mysql</pre> | ||
2. Настройте отправку в MySQL: | 2. Настройте отправку в MySQL: | ||
< | <pre>sudo nano /etc/rsyslog.d/80-mysql.conf</pre> | ||
3. Добавьте конфигурацию: | 3. Добавьте конфигурацию: | ||
< | <pre>$ModLoad ommysql | ||
# Настройки подключения к MySQL | # Настройки подключения к MySQL | ||
| Строка 462: | Строка 464: | ||
# Отправка в MySQL | # Отправка в MySQL | ||
*.* :ommysql:localhost,Syslog,rsyslog,password | *.* :ommysql:localhost,Syslog,rsyslog,password | ||
</ | </pre> | ||
== 12. Резервное копирование | == 12. Резервное копирование == | ||
=== Создание скрипта резервного копирования === | === Создание скрипта резервного копирования === | ||
1. Создайте скрипт резервного копирования: | 1. Создайте скрипт резервного копирования: | ||
< | <pre>sudo nano /usr/local/bin/rsyslog-backup.sh</pre> | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
< | <pre>#!/bin/bash | ||
BACKUP_DIR="/backup/rsyslog" | BACKUP_DIR="/backup/rsyslog" | ||
| Строка 487: | Строка 489: | ||
# Резервное копирование конфигурации logrotate | # Резервное копирование конфигурации logrotate | ||
cp /etc/logrotate.d/rsyslog $BACKUP_DIR/logrotate-rsyslog-$DATE.conf | cp /etc/logrotate.d/rsyslog-custom $BACKUP_DIR/logrotate-rsyslog-$DATE.conf | ||
# Удаление старых бэкапов (старше 7 дней) | # Удаление старых бэкапов (старше 7 дней) | ||
| Строка 493: | Строка 495: | ||
echo "Rsyslog backup completed: $DATE" | echo "Rsyslog backup completed: $DATE" | ||
</ | </pre> | ||
3. Сделайте скрипт исполняемым: | 3. Сделайте скрипт исполняемым: | ||
< | <pre>sudo chmod +x /usr/local/bin/rsyslog-backup.sh</pre> | ||
4. Добавьте в crontab: | 4. Добавьте в crontab: | ||
< | <pre>sudo crontab -e</pre> | ||
5. Добавьте задачу: | 5. Добавьте задачу: | ||
< | <pre>0 2 * * * /usr/local/bin/rsyslog-backup.sh</pre> | ||
== 13. Устранение неполадок | == 13. Устранение неполадок == | ||
=== Частые проблемы === | === Частые проблемы === | ||
1. '''Rsyslog не запускается''': | 1. '''Rsyslog не запускается''': | ||
* Проверьте конфигурацию: < | * Проверьте конфигурацию: <pre>sudo rsyslogd -N1</pre> | ||
* Проверьте права доступа к файлам | * Проверьте права доступа к файлам | ||
* Проверьте логи: < | * Проверьте логи: <pre>sudo journalctl -u rsyslog</pre> | ||
2. '''Логи не поступают''': | 2. '''Логи не поступают''': | ||
| Строка 526: | Строка 528: | ||
1. '''Проверка статуса''': | 1. '''Проверка статуса''': | ||
< | <pre>sudo systemctl status rsyslog</pre> | ||
2. '''Проверка конфигурации''': | 2. '''Проверка конфигурации''': | ||
< | <pre>sudo rsyslogd -N1</pre> | ||
3. '''Проверка логов''': | 3. '''Проверка логов''': | ||
< | <pre>sudo tail -f /var/log/syslog</pre> | ||
4. '''Проверка подключений''': | 4. '''Проверка подключений''': | ||
< | <pre>sudo netstat -tlnp | grep :514</pre> | ||
5. '''Тестирование правил''': | 5. '''Тестирование правил''': | ||
< | <pre>sudo rsyslogd -N1 -f /etc/rsyslog.conf</pre> | ||
== Заключение == | == Заключение == | ||
| Строка 544: | Строка 546: | ||
Rsyslog успешно настроен и готов к работе! Теперь у вас есть мощная система централизованного логирования с возможностями фильтрации, ротации и мониторинга. | Rsyslog успешно настроен и готов к работе! Теперь у вас есть мощная система централизованного логирования с возможностями фильтрации, ротации и мониторинга. | ||
'''Для размещения ваших систем логирования на надежном хостинге рекомендуем воспользоваться услугами [ | '''Для размещения ваших систем логирования на надежном хостинге рекомендуем воспользоваться услугами [https://ark-hoster.ru ARK-HOSTER.RU]:''' | ||
* '''[ | * '''[https://ark-hoster.ru/dedicated/ Выделенные серверы]''' - для критически важных систем логирования | ||
* '''[ | * '''[https://ark-hoster.ru/vpsgame/ VPS/VDS серверы]''' - для небольших и средних проектов | ||
Наши специалисты помогут с настройкой rsyslog и оптимизацией производительности ваших систем логирования! | Наши специалисты помогут с настройкой rsyslog и оптимизацией производительности ваших систем логирования! | ||
Текущая версия от 08:11, 14 ноября 2026
Настройка системы логирования (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
Настройка ротации
Внимание: штатный файл /etc/logrotate.d/rsyslog не изменяйте и не перезаписывайте: он отвечает за ротацию системных журналов (syslog, auth.log и других). Свои правила кладите в отдельный файл.
1. Создайте отдельный файл конфигурации:
sudo nano /etc/logrotate.d/rsyslog-custom
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-custom
2. Принудительно запустите ротацию:
sudo logrotate -f /etc/logrotate.d/rsyslog-custom
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-custom $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:
- Выделенные серверы - для критически важных систем логирования
- VPS/VDS серверы - для небольших и средних проектов
Наши специалисты помогут с настройкой rsyslog и оптимизацией производительности ваших систем логирования!