fluentd + eks: saltando el envío de registros de trabajos en ejecución durante unos segundos.
Estoy teniendo un problema con fluentd 1.13/1.14
donde no está reenviando mensajes de registro de k8s Jobs
a cloudwatch si el trabajo dura solo unos segundos. Para trabajos de larga duración funciona bien.
Configuración de Fluentd:
<source>
@type tail
@label @container
path /var/log/containers/*.log
exclude_path ["/var/log/containers/cloudwatch-agent*", "/var/log/containers/fluentd*"]
pos_file /var/log/fluentd-containers.log.pos
tag container.*
read_from_head true
follow_inodes true
<parse>
@type multi_format
<pattern>
format cri
time_format %Y-%m-%dT%H:%M:%S.%NZ
</pattern>
<pattern>
format json
time_format %Y-%m-%dT%H:%M:%S.%NZ
</pattern>
</parse>
Parece que fluentd
detecta los archivos de registro pero no los reenvía en absoluto. También es un poco extraño que detecte la rotación del registro en un archivo tan pequeño (5 líneas de registro).
Registros de Fluentd:
2021-12-02 18:46:47 +0000 : #0 [Aws::CloudWatchLogs::Client 200 0.020815 0 retries] put_log_events(log_events:[{timestamp:1638470804512,message:"[FILTERED]"}],log_group_name:"/convox/rrr/system",log_stream_name:"service/ingress-nginx/ingress-nginx-788976446-wwbg5",sequence_token:"49605556107201490919304478315024039166400664032086327554")
2021-12-02 18:46:49 +0000 : #0 following tail of /var/log/containers/timer-test-timer-1638470760-zdjjwrrr-logtest3-logtest3-34477acc21d8d5f7bf8a40ebee9066f6f1184be99f1f8c10abd1452a4c885b64.log
2021-12-02 18:46:51 +0000 : #0 detected rotation of /var/log/containers/timer-test-timer-1638470760-zdjjwrrr-logtest3-logtest3-34477acc21d8d5f7bf8a40ebee9066f6f1184be99f1f8c10abd1452a4c885b64.log; waiting 5.0 seconds
2021-12-02 18:47:49 +0000 : #0 following tail of /var/log/containers/timer-test-timer-1638470820-p4sgbrrr-logtest3-logtest3-42e07d8720bad119c779b29b3a65fdde38b0116f19085f333973bc169064d537.log
2021-12-02 18:47:51 +0000 : #0 detected rotation of /var/log/containers/timer-test-timer-1638470820-p4sgbrrr-logtest3-logtest3-42e07d8720bad119c779b29b3a65fdde38b0116f19085f333973bc169064d537.log; waiting 5.0 seconds
Intenté jugar con los valores de read_from_head
y follow_inodes
pero no funciona. Si es algo, simplemente deja de detectar la rotación del registro en el archivo.
davy.ai
Basándonos en la información proporcionada, parece que el problema con
fluentd
de no reenviar los mensajes de registro dek8s Jobs
a cloudwatch solo ocurre cuando el trabajo se ejecuta por solo unos segundos. Para trabajos de larga duración, funciona perfectamente. La configuración proporcionada defluentd
parece correcta, y parece quefluentd
está detectando los archivos de registro, pero no los está enviando a cloudwatch.A partir de los registros proporcionados, parece que
fluentd
está siguiendo correctamente la cola de los archivos de registro, pero no está reenviando los mensajes de registro a cloudwatch. También detecta la rotación de registro en un archivo que es muy pequeño, lo cual es un poco extraño.A partir de esto, sugeriría probar los siguientes pasos:
time_format
en el patrón de coincidenciamulti_format
a%Y-%m-%dT%H:%M:%S.%LZ
para que coincida con el formato de marca de tiempo esperado para cloudwatch.pos_file
para ver si eso resuelve el problema. Si lo hace, podría haber un problema con la configuración del archivo pos que impide el reenvío de registro.Con suerte, al probar algunos de estos pasos, se podrá resolver el problema con
fluentd
de no reenviar los mensajes de registro dek8s Jobs
a cloudwatch si el trabajo se ejecuta solo por unos segundos.