У меня есть централизованный сервер rsyslog A, который получает кучу журналов через TCP с серверов X, Y, Z. Затем он сохраняет файлы на диске, но также пересылает их на сервер logstash B (на другом компьютере). Для ретрансляции на сервер B logstash я использую TCP следующим образом:
$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
Всякий раз, когда мой сервер logstash не работает или недоступен, через некоторое время централизованный rsyslog на сервере A перестает отвечать, и, как следствие, мои серверы X, Y, Z начинают зависать или иметь неожиданно высокие нагрузки, в то время как службы пытаются писать в системный журнал.
Как мне настроить rsyslog (на стороне сервера и / или на стороне клиента), чтобы он был более устойчивым к этой точке отказа?
Дополнительный вопрос: всякий раз, когда сервер logstash перезагружается, rsyslog не воспроизводит журналы, хранящиеся в / var / cache / rsyslog, кто-нибудь знает, как это настроить?
Вам необходимо настроить очереди в rsyslog, соответствующее обсуждение здесь:
Это соответствующая часть ответа - я предполагаю, что вы будете искать директивы в фактической документации до s:
Добавление следующего непосредственно перед
*.* @@logs.papertrailapp.com
и перезапуск rsyslog должен выполнить свою работу:$ ActionResumeInterval 10
$ ActionQueueSize 100000
$ ActionQueueDiscardMark 97500
$ ActionQueueHighWaterMark 80000
$ ActionQueueType LinkedList
$ ActionQueueFileName papertrailqueue
$ ActionQueueCheckpointInterval 100
$ ActionQueueMaxDiskSpace 2g
$ ActionResumeRetryCount -1
$ ActionQueueSaveOnShutdown on
$ ActionQueueTimeoutEnqueue 10
$ ActionQueueDiscardSeverity 0