Falha ao encaminhar o rsyslog

3

Eu tenho um servidor rsyslog centralizado A que recebe um monte de logs através do TCP dos servidores X, Y, Z. Ele então armazena os arquivos no disco, mas também os encaminha para o servidor logstash B (em uma máquina diferente). Para a retransmissão para o servidor logstash B, eu uso o TCP da seguinte forma:

$template logstash_json,"{\"@timestamp\":\"%timestamp:::date-rfc3339,jsonf:@timestamp%\",\"@source_host\":\"%source:::jsonf:@source_host%\",\"@source\":\"syslog://%fromhost-ip:::json%\",\"@message\":\"%timestamp% %app-name%:%msg:::json%\",\"@fields\":{\"facility\":\"%syslogfacility-text:::jsonf:facility%\",\"severity\":\"%syslogseverity-text:::jsonf:severity%\",\"program\":\"%app-name:::jsonf:program%\",\"pid\":\"%procid:::jsonf:processid%\"}}"

$WorkDirectory /var/cache/rsyslog # default location for work (spool) files - make sure it's created
$ActionQueueType LinkedList   # use asynchronous processing
$ActionQueueFileName srvrfwd  # set file name, also enables disk mode
$ActionResumeRetryCount -1    # infinite retries on insert failure
$ActionQueueSaveOnShutdown on # save in-memory data if rsyslog shuts down

# Ship logs over TCP to logstash
*.*                                             @@server_B:2514;logstash_json

Sempre que meu servidor logstash está inativo ou inacessível, depois de um tempo o rsyslog centralizado no servidor A não responde e, como conseqüência, meus servidores X, Y, Z começam a congelar ou ter altas cargas inesperadas enquanto os serviços tentam gravar no syslog.

Como configuro o rsyslog (do lado do servidor e / ou do lado do cliente) para ser mais robusto para esse ponto de falha?

Pergunta secundária: sempre que o servidor logstash é reiniciado, o rsyslog não reproduz os logs armazenados em / var / cache / rsyslog, alguém sabe como configurar isso?

    
por Arthur Lutz 13.09.2013 / 11:03

1 resposta

3

Você precisa configurar o enfileiramento no rsyslog, uma discussão relevante está aqui:

link

Esta é a parte relevante da resposta - suponho que você procurará as diretivas na documentação atual antes de s:

Adding the following just before *.* @@logs.papertrailapp.com and restarting rsyslog should do the job:

$ActionResumeInterval 10
$ActionQueueSize 100000
$ActionQueueDiscardMark 97500
$ActionQueueHighWaterMark 80000
$ActionQueueType LinkedList
$ActionQueueFileName papertrailqueue
$ActionQueueCheckpointInterval 100
$ActionQueueMaxDiskSpace 2g
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on
$ActionQueueTimeoutEnqueue 10
$ActionQueueDiscardSeverity 0

    
por 19.11.2013 / 23:17