rsyslog - ¿Cómo vaciar la cola?

rsyslog - ¿Cómo vaciar la cola?

Estoy usando rsyslog para obtener registros de haproxy y colocarlos en logstash para elasticsearch/kibana.

Todo funcionaba bien, pero encontré algo extraño en rsyslog.

Descubrí que me faltan datos en kibana. La razón es rsyslog.

La cola en el disco estuvo retenida y detenida durante algunos días

Me faltan datos del fin de semana, pero ayer y hoy, todo está bien.

Rsyslog ahora obtiene datos y los coloca en logstash, pero parece olvidarse de los datos almacenados en su propia cola (creo que ve que son antiguos y los ignora, hay un parámetro para eso y tal vez se usa algún valor predeterminado).

En este momento, logstash está inactivo, puedo forzarle muchos datos adicionales de la cola rsyslog

Entonces lo que quiero hacer es:

Intento vaciar temporalmente esta cola (como postfix vaciado) o si esto no es posible, ¿qué debo intentar hacer?

Mi configuración de rsyslog es:

$ActionSendTCPRebindInterval 500
$ActionQueueType LinkedList
$ActionQueueFileName kibana
$ActionQueueMaxFileSize 100m
$ActionQueueMaxDiskSpace 100g
$ActionQueueTimeoutEnqueue 0
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on

Respuesta1

La cola de disco de Rsyslog podría atascarse debido a un cierre incorrecto, lo que provocaría que .qiel archivo en el directorio de spool no esté sincronizado con los archivos de spool.

En tal caso, vaciar/quitar la cola del disco puede requerir la ejecución de un script adicional proporcionado por Rsyslog (pero no incluido en los paquetes de distribución). De acuerdo ahttps://www.rsyslog.com/doc/concepts/queues.html#disk-queues

Si pierde o necesita las estructuras de mantenimiento y tiene todos sus fragmentos de cola, puede usar el script perl incluido en el paquete rsyslog para generarlo. Uso:

recover_qi.pl -w $WorkDirectory -f QueueFileName -d 8 > QueueFileName.qi

¿Dónde $WorkDirectoryestá el valor de queue.spoolDirectoryy QueueFileNamees el valor de queue.fileName? Ver también:https://www.rsyslog.com/doc/rainerscript/queue_parameters.html

Ejemplo:

./recover_qi.pl -w /var/spool/rsyslog -f rsyslog_backlog -d 8 > /var/spool/rsyslog/rsyslog_backlog.qi

(Podría ser una buena idea detener rsyslog antes de ejecutar el script).

Aquí está recover_qi.plel repositorio git de Rsyslog (haga clic en "sin procesar" para obtener el archivo):https://github.com/rsyslog/rsyslog/blob/master/tools/recover_qi.pl

información relacionada