Настройка системы логирования rsyslog: различия между версиями
Исправлены опасные шаги (потеря доступа или данных) — проверка вики 13.11.2026 |
Починка разметки: ссылки и жирный шрифт из Markdown, лишние обратные косые черты в коде, заголовки — проверка вики 13.11.2026 |
||
| Строка 40: | Строка 40: | ||
2. Настройте основные параметры: | 2. Настройте основные параметры: | ||
<pre> | <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 | |||
$UDPServerRun 514 | $UDPServerRun 514 | ||
$UDPServerAddress 127.0.0.1 | $UDPServerAddress 127.0.0.1 | ||
# Настройки TCP | |||
$InputTCPServerRun 514 | $InputTCPServerRun 514 | ||
$TCPServerAddress 127.0.0.1 | $TCPServerAddress 127.0.0.1 | ||
# Настройки производительности | |||
$MainMsgQueueType LinkedList | $MainMsgQueueType LinkedList | ||
$MainMsgQueueSize 10000 | $MainMsgQueueSize 10000 | ||
| Строка 71: | Строка 71: | ||
1. Добавьте правила логирования: | 1. Добавьте правила логирования: | ||
<pre> | <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 логи | |||
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 логи | |||
local2.* /var/log/mysql/error.log | local2.* /var/log/mysql/error.log | ||
# 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 | ||
| Строка 100: | Строка 100: | ||
2. Добавьте конфигурацию: | 2. Добавьте конфигурацию: | ||
<pre> | <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 | ||
| Строка 128: | Строка 128: | ||
2. Добавьте конфигурацию: | 2. Добавьте конфигурацию: | ||
<pre> | <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 | ||
| Строка 149: | Строка 149: | ||
2. Добавьте правила: | 2. Добавьте правила: | ||
<pre> | <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 | ||
| Строка 168: | Строка 168: | ||
2. Добавьте правила: | 2. Добавьте правила: | ||
<pre> | <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 | ||
| Строка 264: | Строка 264: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
# Создание отчета 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> | </pre> | ||
| Строка 330: | Строка 330: | ||
2. Добавьте настройки: | 2. Добавьте настройки: | ||
<pre> | <pre># Настройки очередей | ||
$MainMsgQueueType LinkedList | $MainMsgQueueType LinkedList | ||
$MainMsgQueueSize 10000 | $MainMsgQueueSize 10000 | ||
| Строка 337: | Строка 337: | ||
$MainMsgQueueSaveOnShutdown on | $MainMsgQueueSaveOnShutdown on | ||
# Настройки потоков | |||
$WorkDirectory /var/spool/rsyslog | $WorkDirectory /var/spool/rsyslog | ||
$ActionQueueType LinkedList | $ActionQueueType LinkedList | ||
| Строка 354: | Строка 354: | ||
2. Добавьте настройки: | 2. Добавьте настройки: | ||
<pre> | <pre># Буферизация для удаленных логов | ||
$ActionQueueType LinkedList | $ActionQueueType LinkedList | ||
$ActionQueueFileName remotequeue | $ActionQueueFileName remotequeue | ||
| Строка 363: | Строка 363: | ||
$ActionQueueDiscardSeverity 4 | $ActionQueueDiscardSeverity 4 | ||
# Асинхронная отправка | |||
$ActionSendDefaultMode async | $ActionSendDefaultMode async | ||
</pre> | </pre> | ||
| Строка 375: | Строка 375: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
# Проверка статуса 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 | ||
| Строка 388: | Строка 388: | ||
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 | ||
| Строка 394: | Строка 394: | ||
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 | ||
| Строка 438: | Строка 438: | ||
<pre>$ModLoad omelasticsearch | <pre>$ModLoad omelasticsearch | ||
# Шаблон для 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 | |||
*.* :omelasticsearch:localhost:9200;es-template | *.* :omelasticsearch:localhost:9200;es-template | ||
</pre> | </pre> | ||
| Строка 456: | Строка 456: | ||
<pre>$ModLoad ommysql | <pre>$ModLoad ommysql | ||
# Настройки подключения к MySQL | |||
$ActionMySQLServer localhost | $ActionMySQLServer localhost | ||
$ActionMySQLDBName Syslog | $ActionMySQLDBName Syslog | ||
| Строка 462: | Строка 462: | ||
$ActionMySQLPassword password | $ActionMySQLPassword password | ||
# Отправка в MySQL | |||
*.* :ommysql:localhost,Syslog,rsyslog,password | *.* :ommysql:localhost,Syslog,rsyslog,password | ||
</pre> | </pre> | ||
| Строка 474: | Строка 474: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <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 | |||
cp /etc/logrotate.d/rsyslog-custom $BACKUP_DIR/logrotate-rsyslog-$DATE.conf | cp /etc/logrotate.d/rsyslog-custom $BACKUP_DIR/logrotate-rsyslog-$DATE.conf | ||
# Удаление старых бэкапов (старше 7 дней) | |||
find $BACKUP_DIR -name "rsyslog-*" -mtime +7 -delete | find $BACKUP_DIR -name "rsyslog-*" -mtime +7 -delete | ||
| Строка 546: | Строка 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 и оптимизацией производительности ваших систем логирования!