Назад | Перейти на главную страницу

Очереди Rsyslog и влияние на производительность

Из-за недавнего сбоя сети, который вызвал каскадный ряд других проблем, я погрузился в наш rsyslog.conf, чтобы попытаться определить возможности для более стабильного развертывания.

У нас есть все наши серверы приложений, на которых запущен rsyslog, пересылающий по tcp на пару серверов агрегации. Вчера, когда один из этих серверов был почти недоступен из-за большой потери пакетов, остальная часть среды остановилась. Я думаю, что обнаружил пару конфигов, которые не имеют смысла.

Вот конфигурация нашего клиента:

# modules
$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)

$KLogPath /proc/kmsg

# global app configs
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0644
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog
$PreserveFQDN on

# queue configs
$MainMsgQueueType LinkedList
$MainMsgQueueSize 50000
$ActionQueueType Direct

$MainMsgQueueDiscardMark 300000
$MainMsgQueueDiscardSeverity 4

$MainMsgQueueFileName mainmsgqueue
$MainMsgQueueMaxFileSize 200m
$MainMsgQueueLowWaterMark 10000
$MainMsgQueueHighWaterMark 40000

$MainMsgQueueTimeoutEnqueue 1
$ActionQueueTimeoutEnqueue 1

# Log locally.
authpriv.*                  /var/log/auth.log
*.*;auth,authpriv.none      -/var/log/syslog

# Send all components to remote log servers
*.* @@<server 1 IP>
& @@<server 2 IP>

Мои вопросы:

A) Что произойдет на клиентских серверах с сообщениями с «прямой» очередью, отправляющими TCP на почти (но не полностью) недоступный сервер? Будет ли очередь MainMsg немедленно начать резервное копирование, если очередь действий не может отправлять журналы?

B) Каков максимальный общий размер очереди (память и диск) для очереди с «вспомогательным» диском, для которой «QueueSize» равен 50000 и не задан «QueueMaxDiskSpace»? Неограниченно ли это, то есть директива QueueSize применяется только к части в памяти?

C) Применяется ли директива QueueDiscardMark к общему количеству сообщений в очереди (память и диск) или только к части в памяти?

Получил дополнительную помощь на форумах rsyslog и разместил здесь перекрестные сообщения, чтобы помочь кому-либо в будущем.

Тема на форуме Rsyslog: [http://kb.monitorware.com/post24885.html#p24885]

Ответы: 1.) Цели rsyslog обрабатываются последовательно, поэтому, если "сервер A" имеет потерю пакетов, это замедлит доставку к остальным целям. В текущих версиях rsyslog это можно смягчить, установив дополнительные «очереди действий», которые распараллеливают вывод.

2.) «QueueSize» для очереди с поддержкой диска применяется только к части в памяти. Дисковая очередь будет неограниченной, если вы не укажете "QueueMaxDiskSpace"

3.) Я не получил однозначного ответа, будет ли метка сообщения об отмене применяться к памяти и дисковым частям очереди, обслуживаемой диском. Логика подсказывает, что он работает со всеми новыми входящими сообщениями, независимо от того, где они хранятся, но это только предположение.