Migra del agente de Logging heredado a Fluentd upstream

Si usas el agente de Logging heredado y tienes una configuración muy personalizada, te recomendamos que migres a Fluentd de código abierto. Puedes configurar Fluentd para conservar el comportamiento de tu entorno del agente de Logging sin interrumpir la recopilación de tus registros por parte de Cloud Logging. En este documento, se describe el proceso de migración.

Comparación de funciones

En la siguiente tabla, se proporciona una comparación de paridad de las funcionalidades clave entre el agente de Logging heredado y Fluentd upstream.

Funciones Agente de Logging heredado Fluentd upstream
Ingesta de registros en Cloud Logging Sí Sí
Registros estándar del sistema (syslog) Sí Sí
Entrada de aplicación de terceros preconfigurada Sí Sí †
Manejo de registros estructurados (JSON) y no estructurados (texto) Sí Sí
Combinación de excepciones de varias líneas Sí Sí
Enriquecimiento de metadatos deGoogle Cloud Sí Sí
Enriquecimiento de metadatos de Kubernetes Sí Sí
IDs únicos de entrada de registro Sí Sí
Transformación de campos de registro Sí Sí
Asignación de gravedad Sí Sí
Autenticación (ADC y claves de cuenta de servicio) Sí Sí
Protocolos de transporte de REST y gRPC Sí Sí
Integración de la supervisión Sí Sí

†  Si bien el paquete de configuración google-fluentd-catch-all no se incluye en la instalación estándar de Fluentd y los complementos upstream, puedes mantener la funcionalidad de entrada preconfigurada siguiendo los pasos de migración que se detallan en esta guía.

Antes de comenzar

Antes de comenzar la migración, asegúrate de tener lo siguiente:

  • Una instancia de VM compatible en un proyecto deGoogle Cloud .
  • Credenciales en la instancia de VM que autorizan la comunicación con Cloud Logging Por lo general, las instancias de VM de Compute Engine tienen las credenciales correctas de manera predeterminada. Para comprobar si tienes las credenciales adecuadas, ejecuta los procedimientos que se indican en Autoriza al agente de Logging.

Migra a Fluentd

En esta sección, se describen los pasos para migrar a la versión upstream de Fluentd y mantener las funcionalidades clave que proporciona el agente de Logging heredado.

Para migrar tu configuración, completa los siguientes pasos:

  1. Apaga el agente de Logging heredado
  2. Instala una versión estable de fluentd-package
  3. Instalar Google Cloud complementos de la plataforma
  4. Migra los archivos de configuración de tus complementos de entrada
  5. Actualiza la configuración de syslog
  6. Actualiza tu archivo de configuración de Fluentd
  7. Valida que el agente de Fluentd se ejecute correctamente
  8. Desinstala el agente de Logging heredado

Apaga el agente de Logging heredado

Antes de instalar el agente de Fluentd upstream, debes detener el agente de Logging heredado para evitar conflictos. Para evitar perder registros pendientes durante la migración, asegúrate de vaciar todos los registros almacenados en búfer al apagar el sistema.

Para apagar correctamente el agente de Logging heredado, haz lo siguiente:

  1. Abre una conexión de terminal en tu instancia de VM con SSH o una herramienta similar y asegúrate de tener acceso de sudo.
  2. Para vaciar los registros almacenados en búfer antes de apagar el agente de Logging heredado, habilita la opción flush_at_shutdown:

    1. Actualiza el archivo /etc/google-fluentd/google-fluentd.conf para establecer la marca flush_at_shutdown en true:

      # Configure the agent to flush all buffer chunks on shutdown
      <match **>
        @type google_cloud
        flush_at_shutdown true
      </match>
      
    2. Reinicia el agente para aplicar los cambios en la configuración:

      sudo service google-fluentd restart
      
  3. Detén el agente de Logging heredado:

    sudo service google-fluentd stop
    

Instala una versión estable de fluentd-package

Instala una distribución estable de Fluentd (fluentd-package) en tus instancias de VM. Para obtener instrucciones, consulta la documentación de Fluentd sobre la instalación de fluent-package.

Instala complementos de la plataforma de Google Cloud

Para permitir que Fluentd interactúe con Cloud Logging y controle formatos de registro específicos, instala los siguientes complementos:

  1. Si aún no lo hiciste, instala las herramientas de compilación para la compilación de extensiones:

    DEBIAN o UBUNTU

    Ejecuta el siguiente comando en Debian o Ubuntu:

    sudo apt-get update
    sudo apt-get install -y build-essential
    

    CentOS o RHEL

    Ejecuta el siguiente comando en CentOS o RHEL:

    sudo yum update
    sudo yum groupinstall -y "Development Tools"
    
  2. Instala el complemento fluent-plugin-google-cloud:

    sudo fluent-gem install fluent-plugin-google-cloud
    
  3. Instala el complemento fluent-plugin-detect-exceptions:

    sudo fluent-gem install fluent-plugin-detect-exceptions
    
  4. Opcional: Si tu implementación heredada del agente de Logging recopila registros de aplicaciones que se ejecutan dentro de un clúster de Kubernetes, instala el complemento fluent-plugin-kubernetes_metadata_filter:

    sudo fluent-gem install fluent-plugin-kubernetes_metadata_filter
    
  5. Opcional: Si tu agente de Logging heredado recopila y expone métricas en formato de Prometheus, instala las siguientes gemas:

    sudo fluent-gem install prometheus-client -v 0.9.0
    sudo fluent-gem install fluent-plugin-prometheus -v 1.4.0
    

Migra tus archivos de configuración de complementos de entrada

Para migrar tus archivos de configuración y posición existentes para la instalación de Fluentd, completa los siguientes pasos:

  1. Crea directorios para los archivos de configuración y posición de Fluentd:

    # Create the destination directory for Fluentd configuration files
    sudo mkdir -p /etc/fluent/config.d
    
    # Create the destination directory for position files
    sudo mkdir -p /var/lib/fluent/pos
    
  2. Copia tus archivos de configuración google-fluentd en el directorio de configuración de Fluentd:

    sudo cp /etc/google-fluentd/config.d/* /etc/fluent/config.d/
    
  3. Copia todos los archivos de posición (.pos) que usa google-fluentd en el directorio de archivos de posición de Fluentd:

    sudo cp /var/lib/google-fluentd/pos/*.pos /var/lib/fluent/pos/
    

    Los archivos de posición se usan para hacer un seguimiento de las posiciones de lectura en los archivos de registro. Migrarlos permite que Fluentd comience en el mismo punto en el que se usaba google-fluentd.

  4. Actualiza la ruta de acceso de pos_file en tus nuevos archivos de configuración de Fluentd para que apunten al nuevo directorio de archivos de posición:

    sudo sed -i 's#/var/lib/google-fluentd#/var/lib/fluent#g' /etc/fluent/config.d/*.conf
    
  5. Otorga al usuario del servicio de Fluentd ,_fluentd, acceso de lectura y escritura al directorio /var/lib/fluent/:

    sudo chown -R _fluentd:_fluentd /var/lib/fluent/
    
  6. Otorga al usuario _fluentd acceso de lectura a los archivos de syslog:

    sudo usermod -a -G adm _fluentd
    

Actualiza la configuración de Syslog

El Fluentd upstream se ejecuta como el usuario sin privilegios, que no puede vincularse a puertos con privilegios numerados en menos de 1024. Si la configuración heredada del agente de Logging incluye la recopilación de syslog basada en la red con @type syslog en port 514, debes ajustar la configuración.

Para actualizar la configuración del puerto, haz lo siguiente:

  1. Reemplaza todo el contenido del archivo /etc/fluent/config.d/syslog_endpoint.conf por la siguiente configuración:

    sudo tee /etc/fluent/config.d/syslog_endpoint.conf > /dev/null <<EOF
    <source>
      @type syslog
      port 5140
      <transport tcp>
      </transport>
      bind 127.0.0.1
      tag syslog
    </source>
    EOF
    
  2. Crea o modifica el archivo /etc/rsyslog.d/40-fluentd-forward.conf para reenviar mensajes de syslog al nuevo puerto de Fluentd:

    sudo tee /etc/rsyslog.d/40-fluentd-forward.conf > /dev/null <<EOF
    # Forward all syslog messages to Fluentd on localhost:5140 via TCP
    *.* @@127.0.0.1:5140
    EOF
    
  3. Reinicia el servicio de rsyslog para aplicar los cambios:

    sudo systemctl restart rsyslog.service
    

Actualiza el archivo de configuración principal de Fluentd

Para configurar el agente Fluentd upstream, replica tu configuración del archivo de configuración del agente, google-fluentd.conf, en el archivo de configuración principal de Fluentd, que se encuentra en /etc/fluent/fluentd.conf.

Para configurar el agente de Fluentd upstream, completa los siguientes pasos:

  1. Copia todo el contenido del archivo google-fluentd.conf para reemplazar el archivo de configuración predeterminado de Fluentd upstream:

    sudo cp /etc/google-fluentd/google-fluentd.conf /etc/fluent/fluentd.conf
    
  2. Actualiza buffer_path en tus archivos de configuración de Fluentd para que apunten al nuevo directorio de Fluentd:

    sudo sed -i 's#/var/log/google-fluentd#/var/log/fluent#g' /etc/fluent/fluentd.conf
    
  3. Inspecciona el archivo fluentd.conf para confirmar que la configuración incluya lo siguiente:

    • @include config.d/*.conf está presente para importar toda la configuración del complemento de entrada.
    • El bloque <match **> @type google_cloud está configurado para transmitir registros a Cloud Logging.
    • El buffer_path dentro del complemento de salida ahora apunta a /var/lib/fluent/.
    • Cualquier directiva pos_file dentro de los complementos de entrada apunta a /var/lib/fluent/.
  4. Ejecuta una ejecución de prueba para verificar tu configuración de Fluentd:

    sudo fluentd -c /etc/fluent/fluentd.conf --dry-run
    

    Verifica si el resultado contiene alertas de error o warn. Debes resolver los problemas identificados antes de continuar. Para obtener detalles sobre los cambios en la sintaxis, consulta Compatibilidad de la configuración para Fluentd upstream.

  5. Reinicia el agente de Fluentd:

    sudo service fluentd restart
    

Valida que el agente de Fluentd se esté ejecutando correctamente

Después de iniciar Fluentd, verifica que los registros se envíen correctamente a Cloud Logging:

  1. Verifica que Fluentd se esté ejecutando sin errores:

    $ sudo service fluentd status
    

    El estado del servicio debe estar activo (en ejecución).

  2. Verifica los registros de Fluentd y asegúrate de que no haya errores ni advertencias:

    sudo tail -n 100 /var/log/fluent/fluentd.log | grep -iE "error|warn|failed|exception" || true
    

    No deberían aparecer errores ni advertencias.

  3. Revisa Cloud Logging para confirmar que se estén recibiendo registros de tu instancia de VM. Para obtener información sobre cómo ver tus registros, consulta Usa el Explorador de registros.

Desinstala el agente de Logging heredado

Solo después de validar que el nuevo Fluentd envía registros a Cloud Logging correctamente, quita el agente de Logging heredado y sus archivos de configuración:

DEBIAN o UBUNTU

  sudo apt-get remove --purge google-fluentd

CentOS o RHEL

  sudo yum remove google-fluentd