Настройка системы логирования rsyslog — различия между версиями
Admin (обсуждение | вклад) (Новая страница: «= Настройка системы логирования (rsyslog) = == 1. Подготовка системы == * Войдите в систему под у…») |
Admin (обсуждение | вклад) |
||
Строка 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 | ||
$ModLoad immark | $ModLoad immark | ||
− | # Настройки маркеров | + | \# Настройки маркеров |
$MarkMessagePeriod 0 | $MarkMessagePeriod 0 | ||
$MarkInterval 20 | $MarkInterval 20 | ||
− | # Настройки логирования | + | \# Настройки логирования |
$WorkDirectory /var/spool/rsyslog | $WorkDirectory /var/spool/rsyslog | ||
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat | $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat | ||
− | # Настройки UDP | + | \# Настройки UDP |
$UDPServerRun 514 | $UDPServerRun 514 | ||
$UDPServerAddress 127.0.0.1 | $UDPServerAddress 127.0.0.1 | ||
− | # Настройки TCP | + | \# Настройки TCP |
$InputTCPServerRun 514 | $InputTCPServerRun 514 | ||
$TCPServerAddress 127.0.0.1 | $TCPServerAddress 127.0.0.1 | ||
− | # Настройки производительности | + | \# Настройки производительности |
$MainMsgQueueType LinkedList | $MainMsgQueueType LinkedList | ||
$MainMsgQueueSize 10000 | $MainMsgQueueSize 10000 | ||
$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 | ||
Строка 80: | Строка 80: | ||
local7.* /var/log/boot.log | local7.* /var/log/boot.log | ||
− | # Apache логи | + | \# Apache логи |
local0.* /var/log/apache2/access.log | local0.* /var/log/apache2/access.log | ||
local1.* /var/log/apache2/error.log | local1.* /var/log/apache2/error.log | ||
− | # MySQL логи | + | \# MySQL логи |
local2.* /var/log/mysql/error.log | local2.* /var/log/mysql/error.log | ||
− | # Nginx логи | + | \# Nginx логи |
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 | ||
Строка 109: | Строка 109: | ||
$TCPServerAddress 0.0.0.0 | $TCPServerAddress 0.0.0.0 | ||
− | # Шаблоны для удаленных логов | + | \# Шаблоны для удаленных логов |
$template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log" | $template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log" | ||
*.* ?RemoteLogs | *.* ?RemoteLogs | ||
− | # Шаблон для всех удаленных логов | + | \# Шаблон для всех удаленных логов |
$template AllRemoteLogs,"/var/log/remote/%HOSTNAME%.log" | $template AllRemoteLogs,"/var/log/remote/%HOSTNAME%.log" | ||
*.* ?AllRemoteLogs | *.* ?AllRemoteLogs | ||
− | # Правила для удаленных логов | + | \# Правила для удаленных логов |
: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 | ||
− | # Отправка логов на сервер | + | \# Отправка логов на сервер |
*.* @@192.168.1.10:514 | *.* @@192.168.1.10:514 | ||
*.* @@192.168.1.10:514 | *.* @@192.168.1.10:514 | ||
− | # Локальное логирование | + | \# Локальное логирование |
*.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 | ||
:msg, contains, "WARNING" /var/log/warnings.log | :msg, contains, "WARNING" /var/log/warnings.log | ||
− | # Фильтрация по приоритету | + | \# Фильтрация по приоритету |
*.crit /var/log/critical.log | *.crit /var/log/critical.log | ||
*.err /var/log/errors.log | *.err /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 | ||
Строка 174: | Строка 174: | ||
:programname, isequal, "nginx" /var/log/nginx.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.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. Создайте конфигурацию для rsyslog: | 1. Создайте конфигурацию для rsyslog: | ||
− | < | + | <pre>sudo nano /etc/logrotate.d/rsyslog</pre> |
2. Добавьте настройки: | 2. Добавьте настройки: | ||
− | < | + | <pre>/var/log/remote/*.log { |
daily | daily | ||
missingok | missingok | ||
Строка 224: | Строка 224: | ||
endscript | endscript | ||
} | } | ||
− | </ | + | </pre> |
=== Тестирование ротации === | === Тестирование ротации === | ||
1. Протестируйте конфигурацию: | 1. Протестируйте конфигурацию: | ||
− | < | + | <pre>sudo logrotate -d /etc/logrotate.d/rsyslog</pre> |
2. Принудительно запустите ротацию: | 2. Принудительно запустите ротацию: | ||
− | < | + | <pre>sudo logrotate -f /etc/logrotate.d/rsyslog</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: | Строка 254: | ||
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 |
/usr/sbin/logwatch --output mail --mailto admin@example.com --format text | /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 | 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 | mail -s "Critical Errors Report" admin@example.com < /tmp/critical-errors.log | ||
− | # Очистка временных файлов | + | \# Очистка временных файлов |
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: | Строка 303: | ||
$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 | ||
Строка 335: | Строка 335: | ||
$MainMsgQueueSaveOnShutdown on | $MainMsgQueueSaveOnShutdown on | ||
− | # Настройки потоков | + | \# Настройки потоков |
$WorkDirectory /var/spool/rsyslog | $WorkDirectory /var/spool/rsyslog | ||
$ActionQueueType LinkedList | $ActionQueueType LinkedList | ||
Строка 344: | Строка 344: | ||
$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 | ||
Строка 361: | Строка 361: | ||
$ActionQueueDiscardSeverity 4 | $ActionQueueDiscardSeverity 4 | ||
− | # Асинхронная отправка | + | \# Асинхронная отправка |
$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 |
if ! systemctl is-active --quiet rsyslog; then | if ! systemctl is-active --quiet rsyslog; then | ||
echo "Rsyslog is down!" | mail -s "Rsyslog Alert" admin@example.com | echo "Rsyslog is down!" | mail -s "Rsyslog Alert" admin@example.com | ||
fi | fi | ||
− | # Проверка размера логов | + | \# Проверка размера логов |
LOG_SIZE=$(du -sh /var/log/remote/ 2>/dev/null | awk '{print $1}') | LOG_SIZE=$(du -sh /var/log/remote/ 2>/dev/null | awk '{print $1}') | ||
if [ "$LOG_SIZE" != "" ]; then | if [ "$LOG_SIZE" != "" ]; then | ||
Строка 386: | Строка 386: | ||
fi | fi | ||
− | # Проверка критических ошибок | + | \# Проверка критических ошибок |
CRITICAL_COUNT=$(grep -c "CRITICAL" /var/log/syslog 2>/dev/null || echo 0) | CRITICAL_COUNT=$(grep -c "CRITICAL" /var/log/syslog 2>/dev/null || echo 0) | ||
if [ $CRITICAL_COUNT -gt 10 ]; then | if [ $CRITICAL_COUNT -gt 10 ]; then | ||
Строка 392: | Строка 392: | ||
fi | fi | ||
− | # Проверка подключений | + | \# Проверка подключений |
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 |
$template es-template,"{\"@timestamp\":\"%timereported:::date-rfc3339%\",\"host\":\"%hostname%\",\"severity\":\"%syslogseverity%\",\"facility\":\"%syslogfacility%\",\"program\":\"%programname%\",\"message\":\"%msg%\"}" | $template es-template,"{\"@timestamp\":\"%timereported:::date-rfc3339%\",\"host\":\"%hostname%\",\"severity\":\"%syslogseverity%\",\"facility\":\"%syslogfacility%\",\"program\":\"%programname%\",\"message\":\"%msg%\"}" | ||
− | # Отправка в 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 |
$ActionMySQLServer localhost | $ActionMySQLServer localhost | ||
$ActionMySQLDBName Syslog | $ActionMySQLDBName Syslog | ||
Строка 460: | Строка 460: | ||
$ActionMySQLPassword password | $ActionMySQLPassword password | ||
− | # Отправка в 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" | ||
DATE=$(date +%Y%m%d_%H%M%S) | DATE=$(date +%Y%m%d_%H%M%S) | ||
− | # Создание директории для бэкапа | + | \# Создание директории для бэкапа |
mkdir -p $BACKUP_DIR | mkdir -p $BACKUP_DIR | ||
− | # Резервное копирование конфигурации | + | \# Резервное копирование конфигурации |
tar -czf $BACKUP_DIR/rsyslog-config-$DATE.tar.gz -C /etc rsyslog.d | 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 | tar -czf $BACKUP_DIR/rsyslog-logs-$DATE.tar.gz -C /var/log remote | ||
− | # Резервное копирование конфигурации logrotate | + | \# Резервное копирование конфигурации logrotate |
cp /etc/logrotate.d/rsyslog $BACKUP_DIR/logrotate-rsyslog-$DATE.conf | cp /etc/logrotate.d/rsyslog $BACKUP_DIR/logrotate-rsyslog-$DATE.conf | ||
− | # Удаление старых бэкапов (старше 7 дней) | + | \# Удаление старых бэкапов (старше 7 дней) |
find $BACKUP_DIR -name "rsyslog-*" -mtime +7 -delete | find $BACKUP_DIR -name "rsyslog-*" -mtime +7 -delete | ||
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: | Строка 526: | ||
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> |
== Заключение == | == Заключение == |
Текущая версия на 10:39, 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 и оптимизацией производительности ваших систем логирования!