Configura el agente

En esta página, se proporcionan detalles sobre las configuraciones personalizadas y predeterminadas del agente de Stackdriver Logging.

La mayoría de los usuarios no necesitan leer esta página. Lee esta página en los casos siguientes:

  • Si estás interesado en conocer los detalles técnicos específicos de la configuración del agente de Stackdriver Logging.

  • Si quieres cambiar la configuración del agente de Stackdriver Logging.

Configuración predeterminada

El agente de Logging google-fluentd es una versión modificada del recolector de datos de registro fluentd. El agente de Stackdriver Logging viene con una configuración predeterminada; en la mayoría de los casos, no se necesita una configuración adicional.

En la configuración predeterminada, el agente de Logging transmite registros, como los incluidos en la lista de registros predeterminados, hacia Stackdriver Logging. Puedes configurar el agente para que transmita registros adicionales: consulta Personaliza la configuración del agente de Stackdriver Logging en la sección a continuación.

Cómo funciona el agente de Logging

El agente de Logging usa complementos de entrada fluentd para recuperar y extraer registros de eventos de fuentes externas, como archivos en un disco, o analizar registros entrantes. Los complementos de entrada se agrupan con el agente o se pueden instalar por separado como gemas Ruby; consulta la lista de complementos agrupados.

El agente lee los registros almacenados en archivos de registro mediante la instancia de VM a través del complemento incorporado in_tail de fluentd. Cada registro se convierte en una estructura de entrada de registro para Stackdriver Logging. El contenido de cada registro se registra en la carga útil de las entradas de registro, que también contienen elementos estándar como la marca de tiempo y gravedad. El agente de Stackdriver Logging requiere que cada registro se etiquete con una etiqueta con formato de string; todos los filtros y los complementos de salida coinciden con un conjunto de etiquetas específico. En general, el nombre de registro respeta el formato projects/[PROJECT-ID]/logs/[TAG]. Por ejemplo, este nombre de registro incluye la etiqueta structured-log:

    projects/my-sample-project-12345/logs/structured-log

El complemento de salida transforma cada mensaje estructurado interiorizado en una entrada de registro en Stackdriver Logging. La carga útil se convierte en el texto o carga útil de JSON.

En las secciones siguientes de esta página, se analiza la configuración predeterminada en detalle.

Definiciones de la configuración predeterminada

En las secciones siguientes, se describen las definiciones de configuración predeterminadas para syslog, el complemento de entrada directa, las configuraciones de entrada destinadas a registros de aplicación de terceros, como los de la lista de registros predeterminados y nuestro complemento de entrada fluentd de Google Cloud.

Configuración de Syslog

  • Ubicaciones del archivo de configuración:

    • Linux: /etc/google-fluentd/config.d/syslog.conf
    • Windows: C:\Program Files (x86)\Stackdriver\LoggingAgent\fluent.conf

      Si ejecutas un agente de Logging antes de v1-5, la ubicación es: C:\GoogleStackdriverLoggingAgent\fluent.conf

  • Descripción: este archivo incluye la configuración para especificar syslog como entrada de registro.

  • Consulta el repositorio de configuración.

Nombre de la configuración Tipo Predeterminado Descripción
format string /^(?<message>(?<time>[^ ]*\s*[^ ]* [^ ]*) .*)$/ El formato del syslog.
path string /var/log/syslog La ruta del archivo syslog.
pos_file string /var/lib/google-fluentd/pos/syslog.pos La ruta del archivo de posición para esta entrada de registro. fluentd registrará la posición que lea en última instancia en este archivo. Consulta la documentación fluentd detallada.
read_from_head bool true Si se debe comenzar a leer los registros desde el encabezado del archivo en vez de desde el final. Consulta la documentación fluentd detallada.
tag string syslog La etiqueta del registro para esta entrada de registro.

Configuración el complemento de entrada in_forward

  • Ubicación del archivo de configuración: /etc/google-fluentd/config.d/forward.conf
  • Descripción: este archivo incluye la configuración para establecer el complemento de entrada in_forward fluentd. El complemento de entrada in_forward te permite pasar los registros a través de un socket TCP.
  • Consulta la documentación fluentd detallada para este complemento y el repositorio de configuración.
Nombre de la configuración Tipo Predeterminado Descripción
port int 24224 El puerto que se debe supervisar.
bind string 127.0.0.1 La dirección de vínculo que se debe supervisar. Por configuración predeterminada, solo se aceptan las conexiones de localhost. Para abrirlo, la configuración tiene que cambiar a 0.0.0.0.

Configura la entrada de registro de aplicación de terceros

  • Ubicación del archivo de configuración: /etc/google-fluentd/config.d/[APPLICATION_NAME].conf.
  • Descripción: este directorio incluye archivos de configuración para especificar archivos de registro de las aplicaciones de terceros como entradas de registro. Cada archivo, excepto syslog.conf y forward.conf, representan una aplicación (por ej., apache.conf para la aplicación Apache).
  • Consulta el repositorio de configuración.
Nombre de la configuración Tipo Predeterminado Descripción
format string Varía por aplicación El formato del registro. Consulta la documentación fluentd detallada.
path string Varía por aplicación La ruta del archivo de registro. Se pueden especificar múltiples rutas, separadas por ‘,’. * y el formato strftime se puede incluir para agregar o quitar el archivo de visualización de manera dinámica. Consulta la documentación fluentd detallada.
pos_file string Varía por aplicación La ruta del archivo de posición para esta entrada de registro. fluentd registrará la posición que lea en última instancia en este archivo. Consulta la documentación fluentd detallada.
read_from_head bool true Si se debe comenzar a leer los registros desde el encabezado del archivo en vez de desde el final. Consulta la documentación fluentd detallada.
tag string Varía; el nombre de la aplicación. La etiqueta del registro para esta entrada de registro.

Configura complementos de salida fluentd de Google Cloud

  • Ubicación del archivo de configuración: /etc/google-fluentd/google-fluentd.conf
  • Descripción: este archivo incluye opciones de configuración para controlar el comportamiento del complemento de salida fluentd de Google Cloud.
  • Consulta el repositorio de configuración.
Nombre de la configuración Tipo Predeterminado Descripción
buffer_chunk_limit string 1M A medida que ingresan los registros, aquellos que no puedan escribirse en los componentes posteriores con la rapidez necesaria, se enviarán a una cola de fragmentos. Esta configuración establece el límite de tamaño de cada fragmento. Por configuración predeterminada, establecemos el límite de los fragmentos para evitar exceder el tamaño del fragmento recomendado de 5 MB por solicitud de escritura en la API de Logging. Un fragmento de búfer se limpia si se cumple una de las dos condiciones siguientes:
1. Si se activa flush_interval.
2. Si el tamaño del búfer alcanza buffer_chunk_limit.
flush_interval string 5s A medida que ingresan los registros, aquellos que no puedan escribirse en los componentes posteriores con la rapidez necesaria, se enviarán a una cola de fragmentos. La configuración establece cuánto tiempo tenemos antes de limpiar un búfer de fragmento. Un fragmento de búfer se limpia si se cumple una o más de las condiciones siguientes:
1. Si se activa flush_interval.
2. Si el tamaño del búfer alcanza buffer_chunk_limit.
disable_retry_limit bool false Aplica un límite en la cantidad de reintentos de limpiezas fallidas de los fragmentos de búfer. Consulta especificaciones más detalladas en retry_limit, retry_wait y max_retry_wait.
retry_limit int 3 Cuando falla la limpieza de un fragmento de búfer, por configuración predeterminada, fluentd volverá a intentarlo más tarde. Esta configuración establece cuántos reintentos se deben realizar antes de descartar un fragmento de búfer problemático.
retry_wait int 10s Cuando falla la limpieza de un fragmento de búfer, por configuración predeterminada, fluentd volverá a intentarlo más tarde. Esta configuración establece el intervalo de espera en segundos antes del primer reintento. El intervalo de espera se duplicará en cada reintento siguiente (20 s, 40 s…) hasta que se alcance retry_ limit o max_retry_wait.
max_retry_wait int 300 Cuando falla la limpieza de un fragmento de búfer, por configuración predeterminada, fluentd volverá a intentarlo más tarde. El intervalo de espera se duplicará en cada reintento siguiente (20 s, 40 s…) Esta configuración establece el máximo de intervalos de espera en segundos. Si el intervalo de espera alcanza ese límite, la duplicación se detiene.
num_threads int 8 La cantidad de limpiezas de registro simultáneas que se pueden procesar por el complemento de salida.
use_grpc bool true Si se debe usar gRPC en vez de REST/JSON para comunicarte con la API de Logging. Con gRPC habilitado, el uso de la CPU en general es más bajo.
partial_success bool true Si es compatible con el éxito parcial de la transferencia de registros. Si es true, las entradas de registro no válidas en un conjunto completo se descartan y las entradas de registro válidas se transfieren con éxito a la API de Logging. Si es false, el conjunto completo se descarta si contenía alguna entrada de registro no válida.
enable_monitoring bool true Cuando se establece en true, el agente de Logging expondrá dos métricas, una métrica de recuento de solicitud que controla la cantidad de entradas de registro solicitadas para enviarse a Stackdriver Logging y un recuento de entrada transferida que controla la cantidad real de las entradas de registro que Stackdriver Logging transfirió con éxito. Cuando es false, esas métricas no se exponen.
monitoring_type string prometheus El tipo de supervisión. La única opción en la actualidad es prometheus, pero en el futuro puede que hayan más opciones compatibles. Si enable_monitoring es true y monitoring_type es prometheus, el agente de Logging expondrá algunas métricas locales en el formato Prometheus en localhost:24231/metrics. Consulta los detalles.
autoformat_stackdriver_trace bool true Cuando se establece en true, el seguimiento se reformateará si el valor del campo de carga útil estructurado logging.googleapis.com/trace coincide con el formato traceId de ResourceTrace. Puedes encontrar los detalles del autoformato en Campos especiales en las cargas útiles estructuradas.

Procesa cargas útiles

La mayoría de los registros compatibles en la configuración predeterminada del agente de Logging son de archivos de registro y se transfieren como cargas útiles sin estructura (de texto) en las entradas de registro.

La única excepción es que el complemento de entrada in_forward, que también está habilitado por configuración predeterminada, solo acepta registros estructurados y los transfiere como cargas útiles (JSON) estructuradas en las entradas de registro. Consulta Registros estructurados de transmisión (JSON) a través del complemento in_forward para obtener más información sobre este complemento.

Puedes personalizar la configuración del agente a fin de que sea compatible con la transferencia de registros estructurados de recursos adicionales. Consulta Registro estructurados de transmisión (JSON) para Stackdriver Logging a fin de obtener más detalles.

La carga útil de los registros trasmitida por un agente de Logging con configuración personalizada puede ser un mensaje de texto sin estructura (textPayload) o un mensaje JSON estructurado (jsonPayload).

Campos especiales en cargas útiles estructuradas

Cuando el agente de Logging recibe un registro estructurado, trata a los campos siguientes de manera especial y te permite establecer campos específicos en el objeto LogEntry que se escribe en la API de Logging.

Todos los campos en la tabla siguiente se eliminan de la carga útil si están presentes.

Campo de registro JSON Campo LogEntry Función del agente de Logging
severity severity El agente de Logging intenta que coincidan una variedad de strings de gravedad comunes. Eso incluye la lista de strings LogSeverity reconocidas por la API de Logging.
message textPayload (o parte de jsonPayload) En caso de que después de borrar campos con propósito especial permanece solo un campo message, ese message se guarda como textPayload. Si tu entrada de registro contiene un seguimiento de pila de excepciones, esa pila se debe establecer en este campo de registro JSON message, para que se pueda analizar y guardar en Stackdriver Error Reporting.
log textPayload (o parte de jsonPayload) Solo aplica a Cloud Functions y Google Kubernetes Engine: en caso de que después de eliminar campos con propósito especial permanece solo un campo log, ese log se guarda como textPayload.
httpRequest httpRequest Se borra de jsonPayload y se asigna al campo LogEntry HttpRequest.
campos relacionados con la hora timestamp Para obtener más detalles, consulta campos relacionados con el tiempo.
logging.googleapis.com/trace trace Se elimina logging.googleapis.com/trace de jsonPayload y se asigna al campo LogEntry trace. Por ejemplo, supone que el valor de logging.googleapis.com/trace es [V]. [V] se debe formatear como projects/[PROJECT-ID]/traces/[TRACE-ID], para que lo pueda usar el visor de registros y el Visor de seguimiento a fin de agrupar entradas de registro y mostrarlas en línea con los seguimientos. Si autoformat_stackdriver_trace es true y [V] coincide con el formato de ResourceTrace traceId, el campo LogEntry trace tendrá el valor projects/[PROJECT-ID]/traces/[V].
logging.googleapis.com/spanId spanId Este campo se borra de jsonPayload y se asigna al campo spanId LogEntry.
logging.googleapis.com/operation operation Se borra de jsonPayload y se asigna a LogEntryOperation. Este campo también lo usa el visor de registros para agrupar entradas de registro relacionadas.
logging.googleapis.com/sourceLocation sourceLocation Se borra de jsonPayload y se asigna a LogEntrySourceLocation.

Cualquier campo de registro estructurado pendiente se convierte formará parte de jsonPayload. Si solo queda un campo message pendiente, el valor de ese campo se almacena como textPayload en la entrada de registro.

Campos relacionados con la hora

El agente de Logging puede recibir y procesar campos relacionados con la hora en varios formatos JSON. Si alguna de las representaciones de marca de tiempo JSON siguientes está presente en un registro estructurado, el agente de Logging borra los campos de jsonPayload y los contrae en una sola representación en el campo timestamp en el objeto LogEntry:

  • jsonPayload contiene un campo timestamp que incluye los campos seconds y nanos, que representan un número firmado de segundos del ciclo de entrenamiento UTC y un número no negativo de segundos fraccionarios:

    {
      "timestamp": {
        "seconds": CURRENT_SECONDS,
        "nanos": CURRENT_NANOS
      }
    }
    
  • jsonPayload contiene los campos timestampSeconds y timestampNanos:

    {
       "timestampSeconds": CURRENT_SECONDS,
       "timestampNanos": CURRENT_NANOS
    }
    
  • jsonPayload contiene un campo time que consta de la misma información de segundos y nanosegundos escrita como una string: "[-]sssssssss.nnnnnnnnn".

    {
        "time": CURRENT_TIME
    }
    

Una vez que el agente de Logging detecta una representación de marca de tiempo, no se produce ninguna operación de borrado más relacionada con marcas de tiempo, aun si existieran representaciones de formatos aceptables adicionales en el registro estructurado.

Personaliza la configuración del agente

Además de la lista de registros predeterminados que el agente de Logging transmite por configuración predeterminada, puedes personalizar el agente de Logging para enviar registros adicionales a Logging o con el fin de ajustar la configuración del agente mediante más configuraciones de entrada.

Las definiciones de la configuración en estas secciones aplican solo al complemento de salida fluent-plugin-google-cloud y especifican cuántos se transforman los registros y se transfieren a Stackdriver Logging.

  • Ubicación del archivo de configuración: /etc/google-fluentd/google-fluentd.conf
  • Descripción: este archivo incluye opciones de configuración para controlar el comportamiento del complemento de salida fluent-plugin-google-cloud.
  • Consulta el repositorio de configuración.

Transmite registros desde salidas adicionales

Puedes personalizar el agente de Logging para que envíe registros adicionales a Logging cuando agrega configuraciones de entrada.

Transmite registros sin estructura (texto) a través de archivos de registro

  1. Crea un archivo de registro con el comando siguiente:

    $ touch /tmp/test-unstructured-log.log
    
  2. Crea un archivo de configuración nuevo en /etc/google-fluentd/config.d con la configuración siguiente. También puedes agregar la configuración en cualquiera de los archivos de configuración en /etc/google-fluentd:

    $ sudo vim /etc/google-fluentd/config.d/test-unstructured-log.conf
    $ cat /etc/google-fluentd/config.d/test-unstructured-log.conf
    <source>
        @type tail
        # Format 'none' indicates the log is unstructured (text).
        format none
        # The path of the log file.
        path /tmp/test-unstructured-log.log
        # The path of the position file that records where in the log file
        # we have processed already. This is useful when the agent
        # restarts.
        pos_file /var/lib/google-fluentd/pos/test-unstructured-log.pos
        read_from_head true
        # The log tag for this log input.
        tag unstructured-log
    </source>
    
  3. Reinicia el agente para aplicar los cambios en la configuración:

    $ sudo service google-fluentd restart
    
  4. Genera un registro en el archivo de registro:

    $ echo 'This is a log from the log file at test-unstructured-log.log' >> /tmp/test-unstructured-log.log
    
  5. Verifica el visor de registros para ver la entrada de registro transferida:

      {
       insertId:  "eps2n7g1hq99qp"
       labels: {
        compute.googleapis.com/resource_name:  "add-unstructured-log-resource"
       }
       logName:  "projects/my-sample-project-12345/logs/unstructured-log"
       receiveTimestamp:  "2018-03-21T01:47:11.475065313Z"
       resource: {
        labels: {
         instance_id:  "3914079432219560274"
         project_id:  "my-sample-project-12345"
         zone:  "us-central1-c"
        }
        type:  "gce_instance"
       }
       textPayload:  "This is a log from the log file at test-unstructured-log.log"
       timestamp:  "2018-03-21T01:47:05.051902169Z"
      }
    

Transmite registros estructurados (JSON) a través de archivos de registro

Puedes habilitar un registro estructurado para ciertas entradas de registro cuando instalas el agente de Logging. Para obtener más información, consulta Registro estructurado.

También puedes personalizar el agente de Logging para que agregue una entrada de registro JSON. La creación de esta configuración hace que el agente espere que cada registro sea un objeto JSON:

  1. Crea un archivo de registro:

    $ touch /tmp/test-structured-log.log
    
  2. Crea un archivo de configuración nuevo en /etc/google-fluentd/config.d con la configuración siguiente. También puedes agregar la configuración en cualquiera de los archivos de configuración en /etc/google-fluentd:

    $ sudo vim /etc/google-fluentd/config.d/test-structured-log.conf
    $ cat /etc/google-fluentd/config.d/test-structured-log.conf
    <source>
        @type tail
        # Format 'JSON' indicates the log is structured (JSON).
        format json
        # The path of the log file.
        path /tmp/test-structured-log.log
        # The path of the position file that records where in the log file
        # we have processed already. This is useful when the agent
        # restarts.
        pos_file /var/lib/google-fluentd/pos/test-structured-log.pos
        read_from_head true
        # The log tag for this log input.
        tag structured-log
    </source>
    
  3. Reinicia el agente para aplicar los cambios en la configuración:

    $ sudo service google-fluentd restart
    
  4. Genera un registro en el archivo de registro:

    $ echo '{"code": "structured-log-code", "message": "This is a log from the log file at test-structured-log.log"}' >> /tmp/test-structured-log.log
    
  5. Verifica el visor de registros para ver la entrada de registro transferida:

    {
     insertId:  "1m9mtk4g3mwilhp"
     jsonPayload: {
      code:  "structured-log-code"
      message:  "This is a log from the log file at test-structured-log.log"
     }
     labels: {
      compute.googleapis.com/resource_name:  "add-structured-log-resource"
     }
     logName:  "projects/my-sample-project-12345/logs/structured-log"
     receiveTimestamp:  "2018-03-21T01:53:41.118200931Z"
     resource: {
      labels: {
       instance_id:  "5351724540900470204"
       project_id:  "my-sample-project-12345"
       zone:  "us-central1-c"
      }
      type:  "gce_instance"
     }
     timestamp:  "2018-03-21T01:53:39.071920609Z"
    }
    

A fin de obtener más opciones para personalizar el formato de entrada de registro en aplicaciones de terceros comunes, consulta Formatos de registro comunes y cómo analizarlos.

Transmite registros estructurados (JSON) a través del complemento in_forward

Además, puedes enviar registros a través del complemento fluentd in_forward. fluentd-cat es una herramienta incorporada que ayuda a enviar con facilidad registros al complemento in_forward. La documentación de fluentd contiene más detalles sobre esta herramienta.

Para enviar registros a través del complemento fluentd in_forward, consulta las instrucciones a continuación:

  1. Ejecuta el comando siguiente en la VM con el agente de Logging instalado:

     $ echo '{"code": "send-log-via-fluent-cat", "message": "This is a log from in_forward plugin."}' | /opt/google-fluentd/embedded/bin/fluent-cat log-via-in-forward-plugin
    
  2. Verifica el visor de registros para ver la entrada de registro transferida:

      {
       insertId:  "1kvvmhsg1ib4689"
       jsonPayload: {
        code:  "send-log-via-fluent-cat"
        message:  "This is a log from in_forward plugin."
       }
       labels: {
        compute.googleapis.com/resource_name:  "add-structured-log-resource"
       }
       logName:  "projects/my-sample-project-12345/logs/log-via-in-forward-plugin"
       receiveTimestamp:  "2018-03-21T02:11:27.981020900Z"
       resource: {
        labels: {
         instance_id:  "5351724540900470204"
         project_id:  "my-sample-project-12345"
         zone:  "us-central1-c"
        }
        type:  "gce_instance"
       }
       timestamp:  "2018-03-21T02:11:22.717692494Z"
      }
    

Transmite registros estructurados (JSON) desde el código de aplicación

Puedes habilitar conectores en varios lenguajes a fin de enviar registros estructurados desde el código de aplicación; para obtener más información, consulta la documentación de fluentd. Esos conectores se compilan según el complemento in_forward.

Configura etiquetas de entrada de registro

Las opciones de configuración que se muestran a continuación te permiten anular las etiquetas LogEntry y las MonitoredResource cuando transfieres los registros a Stackdriver Logging. Todas las entradas de registro están asociadas con recursos supervisados; para obtener más información, consulta la lista de Tipos de recursos supervisados de Stackdriver Logging.

Nombre de la configuración Tipo Predeterminado Descripción
label_map hash nil label_map (especificado como un objeto JSON) es un conjunto sin ordenar de nombres de campo fluentd cuyos valores se envían como etiquetas, en vez de como parte de una carga útil estructurada. Cada entrada en el mapa es un par {field_name: label_name}. Cuando se encuentra field_name (como analizado por el complemento de entrada), se agrega una etiqueta con el label_name correspondiente a la entrada de registro. El valor del campo se usa como el valor de la etiqueta. El mapa te da la flexibilidad adicional a la hora de especificar nombres de etiquetas que incluyen la capacidad de usar caracteres que no serían legales como parte de los nombres de campo fluentd. Consulta Configura etiquetas en entradas de registro estructuradas para obtener un ejemplo.
labels hash nil labels (especificado como un objeto JSON) es un conjunto de etiquetas personalizadas que se proporcionan al momento de la configuración. Te permite incorporar información ambiental adicional en cada mensaje o personalizar etiquetas que de otro modo se detectan de forma automática. Cada entrada en el mapa es un par {label_name: label_value}.

El complemento de salida del agente de Logging es compatible con tres formas de configurar etiquetas LogEntry:

Configura etiquetas en entradas de registro estructuradas

Supón que escribes una carga útil de entrada de registro estructurada como la que se muestra a continuación:

{ "message": "This is a log message", "timestamp": "Aug 10 20:07:00", "env": "production" }

Y, también, que quieres traducir el campo de carga útil env anterior a una etiqueta de metadatos environment. Para lograrlo, agrega la información siguiente a la configuración del complemento de salida en /etc/google-fluentd/google-fluentd.conf:

  # Configure all sources to output to Stackdriver Logging
  <match **>
    type google_cloud
    label_map {
      "env": "environment"
    }
    ...
  </match>

La configuración label_map aquí reemplaza la etiqueta env en la carga útil con environment, para que la entrada de registro resultante tenga una etiqueta environment con el valor production.

Configura etiquetas de manera estática

Si no cuentas con esta información en la carga útil y solo quieres agregar una etiqueta de metadatos estática llamada environment, agrega la información siguiente a la configuración del complemento de salida en /etc/google-fluentd/google-fluentd.conf:

  # Configure all sources to output to Stackdriver Logging
  <match **>
    type google_cloud
    labels {
      "environment": "production"
    }
    ...
  </match>

En este caso, en vez de usar un mapa para reemplazar una etiqueta con otra, usamos una configuración labels a fin de adjuntar una etiqueta con un valor literal dado a una entrada de registro, sin importar si la entrada ya tiene una etiqueta o no. Este método se puede usar aun si envías registros sin estructura.

Para obtener más información sobre cómo configurar labels, label_map y otra configuración de agente de Logging, consulta Configura las etiquetas de entrada de registro.

Modifica los registros

Fluentd proporciona complementos de filtro integrados que se pueden usar para modificar las entradas de registro.

El complemento de filtro que más se usa es filter_record_transformer. Te permite ejecutar las siguientes acciones:

  • Agregar campos nuevos a entradas de registro
  • Actualizar campos en entradas de registro
  • Borrar campos de entradas de registro

Algunos complementos de salida también te permiten modificar las entradas de registro. El complemento de salida fluent-plugin-record-reformer proporciona una funcionalidad similar a la del complemento de filtro filter_record_transformer, excepto que también te permite modificar etiquetas de registro. Se espera un uso de recursos mayor con este complemento: cada vez que se actualiza una etiqueta de registro, se genera una entrada de registro nueva con una etiqueta nueva. Ten en cuenta que el campo tag se requiere en la configuración; también recomendamos que modifiques este campo para evitar ingresar en un ciclo muerto.

El complemento de salida fluent-plugin-detect-exceptions analiza una transmisión de registro sin estructura (texto) o con registros con formato JSON para seguimientos de pila de excepción multilínea. Si una secuencia consecutiva de entradas de registro forma un seguimiento de pila de excepción, las entradas de registro se reenvían como un mensaje de registro único y combinado. De lo contrario, la entrada de registro se reenvía como en el estado en que se estaba.

Definiciones de configuración avanzadas (no predeterminadas)

Si quieres personalizar la configuración de tu agente de Logging más allá de su configuración predeterminada, consulta las secciones siguientes.

Las opciones de configuración que se muestran a continuación te permiten ajustar el mecanismo de almacenamiento en el búfer interno del agente de Logging.

Nombre de la configuración Tipo Predeterminado Descripción
buffer_type string buf_memory Los registros que no se pueden escribir en la API de Logging con la rapidez suficiente se enviarán a un búfer. El búfer se puede encontrar en la memoria o en los archivos reales. Valor recomendado: buf_file. El buf_memory predeterminado es rápido, pero no persistente. Existe un riesgo de perder registros. Si buffer_type es buf_file, buffer_path necesita que se especifique también.
buffer_path string Especificado por el usuario La ruta en la que están almacenados los fragmentos de búfer. Este parámetro se requiere si buffer_type es file. Esta configuración debe ser única para evitar una condición de carrera.
buffer_queue_limit int 64 Especifica la longitud del límite de la cola del fragmento. Cuando la cola del búfer alcanza esa cantidad de fragmentos, el comportamiento del búfer lo controla buffer_queue_full_action. Por configuración predeterminada, arrojará excepciones.
buffer_queue_full_action string exception Controla el comportamiento del búfer cuando la cola del búfer está completa. Valores posibles:
1. exception: arroja BufferQueueLimitError cuando la cola está completa. La manera en la que se controla BufferQueueLimitError depende de los complementos de entrada. Por ejemplo, el complemento de entrada in_tail deja de leer líneas nuevas cuando el complemento de entrada in_forward muestra un error.
2. block: este modo detiene el subproceso de complemento de entrada hasta que la condición completa del búfer se resuelva. Esta acción es buena para casos prácticos por lotes. fluentd no recomienda el uso de acciones de bloqueo a fin de evitar BufferQueueLimitError. Si encuentras BufferQueueLimitError con mucha frecuencia, significa que la capacidad de destino no es suficiente para tu tráfico.
3. drop_oldest_chunk: este modo reduce los fragmentos más antiguos.

Las opciones de configuración que se muestran a continuación te permiten especificar de manera manual un proyecto y ciertos campos del objeto MonitoredResource. El agente de Logging recopila estos valores de forma automática; no se recomienda que los especifiques de manera manual.

Nombre de la configuración Tipo Predeterminado Descripción
project_id string nil Si se especifica, eso anula el project_id que identifica el proyecto subyacente de GCP o AWS en el que se ejecuta el agente de Logging.
zone string nil Si se especifica, anula la zona.
vm_id string nil Si se especifica, anula el ID de la VM.
vm_name string nil Si se especifica, anula el nombre de la VM.

Otras opciones de configuración de complemento de salida

Nombre de la configuración Tipo Predeterminado Descripción
detect_json1 bool false Si se debe intentar detectar si el registro es una entrada de registro de texto con contenido JSON que necesita analizarse. Si esta configuración es true y se detecta una entrada de registro sin estructura (texto) como en formato JSON, se analizará y se enviará como una carga útil estructurada JSON.
coerce_to_utf8 bool true Si permitir caracteres que no sean UTF-8 en registros de usuario. Si se configura en true, cualquier carácter que no sea UTF-8 se reemplazará por la string que especifica non_utf8_replacement_string. Si se configura en false, cualquier carácter que no sea UTF-8 activará el complemento para que falle.
require_valid_tags bool false Si se deben rechazar entradas de registro con etiquetas no válidas. Si esta opción se configura en false, las etiquetas serán válidas cuando se convierta cualquier etiqueta que no sea una string en una string y cuando se inmunice cualquier carácter que no sea UTF-8 o no válido.
non_utf8_replacement_string string ""(espacio) Si coerce_to_utf8 se configura en true, cualquier carácter que no sea UTF-8 se reemplazará con la string especificada aquí.

1Cuando el registro tiene un solo campo de mensaje de texto, a veces, el complemento de salida puede detectar cuándo este mensaje es JSON y transformar la carga útil a JSON. Esta característica se habilita por configuración predeterminada en las instancias de VM que se ejecutan en el entorno flexible de App Engine y en Google Kubernetes Engine.

Aplica una configuración de agente personalizada

Personalizar el agente de Logging te permite agregar tus propios archivos de configuración fluentd:

Instancia de Linux

  1. Copia tus archivos de configuración en el directorio siguiente:

    /etc/google-fluentd/config.d/
    
  2. Reinicia el agente mediante la ejecución del comando siguiente:

    sudo service google-fluentd force-reload
    

La secuencia de comandos de instalación del agente de Logging propaga este directorio con los archivos de configuración genéricos predeterminados. Para obtener más información, consulta Obtén el código fuente del agente de Logging.

Instancia de Windows

  1. Copia tus archivos de configuración en el subdirectorio config.d de tu directorio de instalación de agente. Si aceptaste el directorio de instalación predeterminado, ese directorio es el siguiente:

    C:\Program Files (x86)\Stackdriver\LoggingAgent\config.d\
    
  2. Reinicia el agente mediante la ejecución de los comandos siguientes en una línea de comandos de shell:

    net stop  StackdriverLogging
    net start StackdriverLogging
    

Para obtener más información sobre los archivos de configuración fluentd, consulta la documentación de la sintaxis del archivo de configuración fluentd.

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Stackdriver Logging
¿Necesitas ayuda? Visita nuestra página de asistencia.