Настройка системы логирования rsyslog: различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к навигации Перейти к поиску
Новая страница: «= Настройка системы логирования (rsyslog) = == 1. Подготовка системы == * Войдите в систему под у…»
 
Нет описания правки
 
Строка 6: Строка 6:
* Убедитесь, что у вас есть доступ к серверу через SSH или консоль.
* Убедитесь, что у вас есть доступ к серверу через SSH или консоль.


== 2. Установка rsyslog ===
== 2. Установка rsyslog ==


=== Обновление системы ===
=== Обновление системы ===


1. Обновите систему:
1. Обновите систему:
<code>sudo apt update</code>
<pre>sudo apt update</pre>


2. Проверьте, установлен ли rsyslog:
2. Проверьте, установлен ли rsyslog:
<code>which rsyslog</code>
<pre>which rsyslog</pre>
<code>rsyslogd -v</code>
<pre>rsyslogd -v</pre>


3. Если не установлен, установите:
3. Если не установлен, установите:
<code>sudo apt install -y rsyslog</code>
<pre>sudo apt install -y rsyslog</pre>


4. Запустите и включите автозапуск:
4. Запустите и включите автозапуск:
<code>sudo systemctl start rsyslog</code>
<pre>sudo systemctl start rsyslog</pre>
<code>sudo systemctl enable rsyslog</code>
<pre>sudo systemctl enable rsyslog</pre>


5. Проверьте статус:
5. Проверьте статус:
<code>sudo systemctl status rsyslog</code>
<pre>sudo systemctl status rsyslog</pre>


== 3. Базовая конфигурация ===
== 3. Базовая конфигурация ==


=== Создание резервной копии ===
=== Создание резервной копии ===


1. Создайте резервную копию оригинального файла:
1. Создайте резервную копию оригинального файла:
<code>sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.backup</code>
<pre>sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.backup</pre>


=== Основная конфигурация ===
=== Основная конфигурация ===


1. Отредактируйте основной конфигурационный файл:
1. Отредактируйте основной конфигурационный файл:
<code>sudo nano /etc/rsyslog.conf</code>
<pre>sudo nano /etc/rsyslog.conf</pre>


2. Настройте основные параметры:
2. Настройте основные параметры:
<code># Основные настройки
<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
</code>
</pre>


=== Настройка правил логирования ===
=== Настройка правил логирования ===


1. Добавьте правила логирования:
1. Добавьте правила логирования:
<code># Системные логи
<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
</code>
</pre>


== 4. Настройка централизованного логирования ===
== 4. Настройка централизованного логирования ==


=== Настройка сервера логирования ===
=== Настройка сервера логирования ===


1. Настройте rsyslog как сервер:
1. Настройте rsyslog как сервер:
<code>sudo nano /etc/rsyslog.d/50-server.conf</code>
<pre>sudo nano /etc/rsyslog.d/50-server.conf</pre>


2. Добавьте конфигурацию:
2. Добавьте конфигурацию:
<code># Настройки сервера
<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
</code>
</pre>


=== Настройка клиента логирования ===
=== Настройка клиента логирования ===


1. Настройте rsyslog как клиент:
1. Настройте rsyslog как клиент:
<code>sudo nano /etc/rsyslog.d/50-client.conf</code>
<pre>sudo nano /etc/rsyslog.d/50-client.conf</pre>


2. Добавьте конфигурацию:
2. Добавьте конфигурацию:
<code># Настройки клиента
<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
</code>
</pre>


== 5. Настройка фильтрации логов ===
== 5. Настройка фильтрации логов ==


=== Фильтрация по приоритету ===
=== Фильтрация по приоритету ===


1. Создайте правила фильтрации:
1. Создайте правила фильтрации:
<code>sudo nano /etc/rsyslog.d/30-filter.conf</code>
<pre>sudo nano /etc/rsyslog.d/30-filter.conf</pre>


2. Добавьте правила:
2. Добавьте правила:
<code># Фильтрация критических ошибок
<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
</code>
</pre>


=== Фильтрация по источнику ===
=== Фильтрация по источнику ===


1. Создайте правила по источникам:
1. Создайте правила по источникам:
<code>sudo nano /etc/rsyslog.d/40-source.conf</code>
<pre>sudo nano /etc/rsyslog.d/40-source.conf</pre>


2. Добавьте правила:
2. Добавьте правила:
<code># Фильтрация по программе
<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
</code>
</pre>


== 6. Настройка ротации логов ===
== 6. Настройка ротации логов ==


=== Установка logrotate ===
=== Установка logrotate ===


1. Установите logrotate:
1. Установите logrotate:
<code>sudo apt install -y logrotate</code>
<pre>sudo apt install -y logrotate</pre>


2. Проверьте установку:
2. Проверьте установку:
<code>logrotate --version</code>
<pre>logrotate --version</pre>


=== Настройка ротации ===
=== Настройка ротации ===


1. Создайте конфигурацию для rsyslog:
1. Создайте конфигурацию для rsyslog:
<code>sudo nano /etc/logrotate.d/rsyslog</code>
<pre>sudo nano /etc/logrotate.d/rsyslog</pre>


2. Добавьте настройки:
2. Добавьте настройки:
<code>/var/log/remote/*.log {
<pre>/var/log/remote/*.log {
     daily
     daily
     missingok
     missingok
Строка 224: Строка 224:
     endscript
     endscript
}
}
</code>
</pre>


=== Тестирование ротации ===
=== Тестирование ротации ===


1. Протестируйте конфигурацию:
1. Протестируйте конфигурацию:
<code>sudo logrotate -d /etc/logrotate.d/rsyslog</code>
<pre>sudo logrotate -d /etc/logrotate.d/rsyslog</pre>


2. Принудительно запустите ротацию:
2. Принудительно запустите ротацию:
<code>sudo logrotate -f /etc/logrotate.d/rsyslog</code>
<pre>sudo logrotate -f /etc/logrotate.d/rsyslog</pre>


== 7. Настройка мониторинга логов ===
== 7. Настройка мониторинга логов ==


=== Установка logwatch ===
=== Установка logwatch ===


1. Установите logwatch:
1. Установите logwatch:
<code>sudo apt install -y logwatch</code>
<pre>sudo apt install -y logwatch</pre>


2. Настройте logwatch:
2. Настройте logwatch:
<code>sudo nano /etc/logwatch/conf/logwatch.conf</code>
<pre>sudo nano /etc/logwatch/conf/logwatch.conf</pre>


3. Добавьте настройки:
3. Добавьте настройки:
<code>LogDir = /var/log
<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
</code>
</pre>


=== Настройка автоматических отчетов ===
=== Настройка автоматических отчетов ===


1. Создайте скрипт для ежедневных отчетов:
1. Создайте скрипт для ежедневных отчетов:
<code>sudo nano /usr/local/bin/logwatch-report.sh</code>
<pre>sudo nano /usr/local/bin/logwatch-report.sh</pre>


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>#!/bin/bash
<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
</code>
</pre>


3. Сделайте скрипт исполняемым:
3. Сделайте скрипт исполняемым:
<code>sudo chmod +x /usr/local/bin/logwatch-report.sh</code>
<pre>sudo chmod +x /usr/local/bin/logwatch-report.sh</pre>


4. Добавьте в crontab:
4. Добавьте в crontab:
<code>sudo crontab -e</code>
<pre>sudo crontab -e</pre>


5. Добавьте задачу:
5. Добавьте задачу:
<code>0 6 * * * /usr/local/bin/logwatch-report.sh</code>
<pre>0 6 * * * /usr/local/bin/logwatch-report.sh</pre>


== 8. Настройка безопасности ===
== 8. Настройка безопасности ==


=== Настройка TLS/SSL ===
=== Настройка TLS/SSL ===


1. Создайте SSL сертификаты:
1. Создайте SSL сертификаты:
<code>sudo mkdir -p /etc/rsyslog.d/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"</code>
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 в конфигурации:
<code>sudo nano /etc/rsyslog.d/50-tls.conf</code>
<pre>sudo nano /etc/rsyslog.d/50-tls.conf</pre>


3. Добавьте настройки:
3. Добавьте настройки:
<code>$DefaultNetstreamDriver gtls
<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
</code>
</pre>


=== Настройка аутентификации ===
=== Настройка аутентификации ===


1. Создайте пользователей для rsyslog:
1. Создайте пользователей для rsyslog:
<code>sudo htpasswd -c /etc/rsyslog.d/users admin</code>
<pre>sudo htpasswd -c /etc/rsyslog.d/users admin</pre>


2. Настройте аутентификацию:
2. Настройте аутентификацию:
<code>sudo nano /etc/rsyslog.d/50-auth.conf</code>
<pre>sudo nano /etc/rsyslog.d/50-auth.conf</pre>


3. Добавьте настройки:
3. Добавьте настройки:
<code>$ModLoad imtcp
<pre>$ModLoad imtcp
$InputTCPServerStreamDriverMode 1
$InputTCPServerStreamDriverMode 1
$InputTCPServerStreamDriverAuthMode anon
$InputTCPServerStreamDriverAuthMode anon
$InputTCPServerRun 514
$InputTCPServerRun 514
</code>
</pre>


== 9. Настройка производительности ===
== 9. Настройка производительности ==


=== Оптимизация очередей ===
=== Оптимизация очередей ===


1. Настройте очереди сообщений:
1. Настройте очереди сообщений:
<code>sudo nano /etc/rsyslog.d/60-performance.conf</code>
<pre>sudo nano /etc/rsyslog.d/60-performance.conf</pre>


2. Добавьте настройки:
2. Добавьте настройки:
<code># Настройки очередей
<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
</code>
</pre>


=== Настройка буферизации ===
=== Настройка буферизации ===


1. Настройте буферизацию:
1. Настройте буферизацию:
<code>sudo nano /etc/rsyslog.d/70-buffering.conf</code>
<pre>sudo nano /etc/rsyslog.d/70-buffering.conf</pre>


2. Добавьте настройки:
2. Добавьте настройки:
<code># Буферизация для удаленных логов
<pre>\# Буферизация для удаленных логов
$ActionQueueType LinkedList
$ActionQueueType LinkedList
$ActionQueueFileName remotequeue
$ActionQueueFileName remotequeue
Строка 361: Строка 361:
$ActionQueueDiscardSeverity 4
$ActionQueueDiscardSeverity 4


# Асинхронная отправка
\# Асинхронная отправка
$ActionSendDefaultMode async
$ActionSendDefaultMode async
</code>
</pre>


== 10. Мониторинг и диагностика ===
== 10. Мониторинг и диагностика ==


=== Создание скрипта мониторинга ===
=== Создание скрипта мониторинга ===


1. Создайте скрипт мониторинга:
1. Создайте скрипт мониторинга:
<code>sudo nano /usr/local/bin/rsyslog-monitor.sh</code>
<pre>sudo nano /usr/local/bin/rsyslog-monitor.sh</pre>


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>#!/bin/bash
<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
</code>
</pre>


3. Сделайте скрипт исполняемым:
3. Сделайте скрипт исполняемым:
<code>sudo chmod +x /usr/local/bin/rsyslog-monitor.sh</code>
<pre>sudo chmod +x /usr/local/bin/rsyslog-monitor.sh</pre>


4. Добавьте в crontab:
4. Добавьте в crontab:
<code>sudo crontab -e</code>
<pre>sudo crontab -e</pre>


5. Добавьте задачу:
5. Добавьте задачу:
<code>*/10 * * * * /usr/local/bin/rsyslog-monitor.sh</code>
<pre>*/10 * * * * /usr/local/bin/rsyslog-monitor.sh</pre>


=== Диагностика проблем ===
=== Диагностика проблем ===


1. '''Проверка статуса''':
1. '''Проверка статуса''':
<code>sudo systemctl status rsyslog</code>
<pre>sudo systemctl status rsyslog</pre>


2. '''Проверка конфигурации''':
2. '''Проверка конфигурации''':
<code>sudo rsyslogd -N1</code>
<pre>sudo rsyslogd -N1</pre>


3. '''Проверка логов''':
3. '''Проверка логов''':
<code>sudo tail -f /var/log/syslog</code>
<pre>sudo tail -f /var/log/syslog</pre>


4. '''Проверка подключений''':
4. '''Проверка подключений''':
<code>sudo netstat -tlnp | grep :514</code>
<pre>sudo netstat -tlnp | grep :514</pre>


5. '''Тестирование правил''':
5. '''Тестирование правил''':
<code>sudo rsyslogd -N1 -f /etc/rsyslog.conf</code>
<pre>sudo rsyslogd -N1 -f /etc/rsyslog.conf</pre>


== 11. Настройка интеграций ===
== 11. Настройка интеграций ==


=== Интеграция с Elasticsearch ===
=== Интеграция с Elasticsearch ===


1. Установите модуль для Elasticsearch:
1. Установите модуль для Elasticsearch:
<code>sudo apt install -y rsyslog-elasticsearch</code>
<pre>sudo apt install -y rsyslog-elasticsearch</pre>


2. Настройте отправку в Elasticsearch:
2. Настройте отправку в Elasticsearch:
<code>sudo nano /etc/rsyslog.d/80-elasticsearch.conf</code>
<pre>sudo nano /etc/rsyslog.d/80-elasticsearch.conf</pre>


3. Добавьте конфигурацию:
3. Добавьте конфигурацию:
<code>$ModLoad omelasticsearch
<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
</code>
</pre>


=== Интеграция с базами данных ===
=== Интеграция с базами данных ===


1. Установите модуль для MySQL:
1. Установите модуль для MySQL:
<code>sudo apt install -y rsyslog-mysql</code>
<pre>sudo apt install -y rsyslog-mysql</pre>


2. Настройте отправку в MySQL:
2. Настройте отправку в MySQL:
<code>sudo nano /etc/rsyslog.d/80-mysql.conf</code>
<pre>sudo nano /etc/rsyslog.d/80-mysql.conf</pre>


3. Добавьте конфигурацию:
3. Добавьте конфигурацию:
<code>$ModLoad ommysql
<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
</code>
</pre>


== 12. Резервное копирование ===
== 12. Резервное копирование ==


=== Создание скрипта резервного копирования ===
=== Создание скрипта резервного копирования ===


1. Создайте скрипт резервного копирования:
1. Создайте скрипт резервного копирования:
<code>sudo nano /usr/local/bin/rsyslog-backup.sh</code>
<pre>sudo nano /usr/local/bin/rsyslog-backup.sh</pre>


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>#!/bin/bash
<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"
</code>
</pre>


3. Сделайте скрипт исполняемым:
3. Сделайте скрипт исполняемым:
<code>sudo chmod +x /usr/local/bin/rsyslog-backup.sh</code>
<pre>sudo chmod +x /usr/local/bin/rsyslog-backup.sh</pre>


4. Добавьте в crontab:
4. Добавьте в crontab:
<code>sudo crontab -e</code>
<pre>sudo crontab -e</pre>


5. Добавьте задачу:
5. Добавьте задачу:
<code>0 2 * * * /usr/local/bin/rsyslog-backup.sh</code>
<pre>0 2 * * * /usr/local/bin/rsyslog-backup.sh</pre>


== 13. Устранение неполадок ===
== 13. Устранение неполадок ==


=== Частые проблемы ===
=== Частые проблемы ===


1. '''Rsyslog не запускается''':
1. '''Rsyslog не запускается''':
* Проверьте конфигурацию: <code>sudo rsyslogd -N1</code>
* Проверьте конфигурацию: <pre>sudo rsyslogd -N1</pre>
* Проверьте права доступа к файлам
* Проверьте права доступа к файлам
* Проверьте логи: <code>sudo journalctl -u rsyslog</code>
* Проверьте логи: <pre>sudo journalctl -u rsyslog</pre>


2. '''Логи не поступают''':
2. '''Логи не поступают''':
Строка 526: Строка 526:


1. '''Проверка статуса''':
1. '''Проверка статуса''':
<code>sudo systemctl status rsyslog</code>
<pre>sudo systemctl status rsyslog</pre>


2. '''Проверка конфигурации''':
2. '''Проверка конфигурации''':
<code>sudo rsyslogd -N1</code>
<pre>sudo rsyslogd -N1</pre>


3. '''Проверка логов''':
3. '''Проверка логов''':
<code>sudo tail -f /var/log/syslog</code>
<pre>sudo tail -f /var/log/syslog</pre>


4. '''Проверка подключений''':
4. '''Проверка подключений''':
<code>sudo netstat -tlnp | grep :514</code>
<pre>sudo netstat -tlnp | grep :514</pre>


5. '''Тестирование правил''':
5. '''Тестирование правил''':
<code>sudo rsyslogd -N1 -f /etc/rsyslog.conf</code>
<pre>sudo rsyslogd -N1 -f /etc/rsyslog.conf</pre>


== Заключение ==
== Заключение ==

Текущая версия от 10:39, 15 октября 2025

Настройка системы логирования (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):

Наши специалисты помогут с настройкой rsyslog и оптимизацией производительности ваших систем логирования!