es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Basándonos en la información proporcionada, parece que el problema con fluentd de no reenviar los mensajes de registro de k8s 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 de fluentd parece correcta, y parece que fluentd 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:

    1. Verifique si hay algún problema con el agente de cloudwatch o el SDK de AWS para Ruby
    2. Actualice a la última versión de Fluentd (1.13/1.14), si aún no lo ha hecho.
    3. Cambie el time_format en el patrón de coincidencia multi_format a %Y-%m-%dT%H:%M:%S.%LZ para que coincida con el formato de marca de tiempo esperado para cloudwatch.
    4. Intente deshabilitar 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.
    5. Verifique el grupo y la secuencia de registro de cloudwatch para ver si se están enviando registros. Si es así, el problema podría estar relacionado con la consulta de búsqueda de registro en lugar del reenvío de registro.
    6. Si ninguno de los pasos anteriores resuelve el problema, intente habilitar el modo de depuración para Fluentd y verifique los registros de depuración en busca de errores o problemas que puedan estar causando el problema.

    Con suerte, al probar algunos de estos pasos, se podrá resolver el problema con fluentd de no reenviar los mensajes de registro de k8s Jobs a cloudwatch si el trabajo se ejecuta solo por unos segundos.

Comments are closed.