Solución de problemas del agente

En esta página, se proporcionan instrucciones para solucionar problemas comunes que se encontraron al momento de instalar el agente de Stackdriver Logging o interactuar con él.

Verifica la instalación del agente

Para comprobar que la instalación se realizó con éxito, busca la entrada de registro de prueba del agente en el Visor de registros.

Ir al Visor de registros

  1. En la parte superior de la página, elige el proyecto que contiene tu instancia de VM:

    • Para las instancias de VM de Compute Engine, elige el proyecto que contiene la instancia de VM.
    • Para las instancias de VM de Amazon EC2, elige el proyecto AWS LINK que Stackdriver crea cuando conectas tu cuenta de AWS a un lugar de trabajo.
    • No elijas un proyecto de lugar de trabajo, a menos que el proyecto contenga tu instancia de VM de Compute Engine.
  2. En las pestañas de ventanas, elige el recurso para tu instancia de VM:

    • Para Compute Engine, elige Instancia de VM en GCE.
    • Para Amazon EC2, elige instancia de AWS EC2.
    • Selecciona syslog (Linux), fluent.info (Windows) o Todos los registros.

Si ves una entrada de registro que muestre “Se envió con éxito gRPC a la API de Stackdriver Logging”, entonces la instalación del agente finalizó. Este mensaje se genera una vez cuando se instala el agente y cada vez que este se reinicia.

Para obtener más información sobre el Visor de registros, consulta Visualiza registros.

Prueba el agente

Si sospechas que el agente no funciona, verifica que esté en ejecución y, luego, intenta enviar un mensaje de prueba a Stackdriver Logging:

Instancia de Linux

El siguiente procedimiento funciona en las instancias de VM de Amazon EC2 y Compute Engine que se ejecutan en Linux:

  1. Verifica que el agente de Logging funcione mediante la ejecución de los siguientes comandos en tu instancia de VM:

    ps ax | grep fluentd
    

    Deberías ver un resultado similar al siguiente:

     2284 ?        Sl     0:00 /opt/google-fluentd/embedded/bin/ruby /usr/sbin/google-fluentd [...]
     2287 ?        Sl    42:44 /opt/google-fluentd/embedded/bin/ruby /usr/sbin/google-fluentd [...]
    
  2. Envía un mensaje de registro de prueba con el siguiente comando en tu instancia de VM:

    logger "Some test message"
    

Instancia de Windows

El agente de Logging tiene los siguientes dos nombres de servicio de Windows:

  • StackdriverLogging para las versiones v1-5 y posteriores
  • fluentdwinsvc para las versiones anteriores

Debes ejecutar un servicio de agente. Ejecuta los siguientes comandos en tu instancia de VM con PowerShell:

  1. Solicita el estado de ambos servicios. Si sabes cuál es el servicio que debería ejecutarse, puedes usar solo el nombre de ese servicio:

    Get-Service StackdriverLogging,fluentdwinsvc
    
  2. Si un servicio no está en ejecución, verás un mensaje de error. Si lo está, verás una respuesta como la siguiente:

    Status    Name                DisplayName
    ------    ----                -----------
    Running  StackdriverLogging   Stackdriver Logging
    
  3. Si consultas ambos servicios, deberías ver un mensaje de error y un estado Running:

    • Si no ves un estado Running, el agente de Logging no está en ejecución.
    • Si ves que StackdriverLogging está en ejecución, significa que ejecutas una versión reciente del agente. Para determinar la versión específica, consulta Obtén la versión.
    • Si ves que fluentdwinsvc está en ejecución, deberías actualizar tu agente a la última versión.
  4. Requiere privilegios de administrador: si una versión del agente está en ejecución, envía un mensaje de registro de prueba con los siguientes comandos de PowerShell:

    New-EventLog   -LogName Application -Source "Test Source"
    Write-EventLog -LogName Application -Source "Test Source" -EntryType Information -EventID 1 -Message "Testing 123 Testing."
    

Encuentra tu mensaje de prueba

Después de enviar un mensaje de prueba, búscalo en el Visor de registros:

Ir al Visor de registros

  1. En la parte superior de la página, elige el proyecto que contiene tu instancia de VM:

    • Para las instancias de VM de Compute Engine, elige el proyecto que contiene la instancia de VM.
    • Para las instancias de VM de Amazon EC2, elige el proyecto AWS LINK que Stackdriver crea cuando conectas tu cuenta de AWS a un lugar de trabajo.
    • No elijas un proyecto de lugar de trabajo, a menos que sea el proyecto que contenga tu instancia de VM de Compute Engine.
  2. En las pestañas de ventanas, elige el recurso para tu instancia de VM:

    • Para Compute Engine, elige Instancia de VM en GCE.
    • Para Amazon EC2, elige instancia de AWS EC2.
    • Selecciona syslog (Linux), fluent.info (Windows) o Todos los registros.
  3. Deberías ver una entrada de registro con tu mensaje de prueba. Si es así, significa que el agente de Logging funciona de manera correcta.

Verifica las credenciales de Compute Engine

Para que una instancia de VM de Compute Engine ejecute el agente sin credenciales de clave privada, la instancia debe tener niveles de acceso adecuados. Además, la identidad de la cuenta de servicio que usa la instancia debe tener los permisos de IAM adecuados.

Cuando creas una instancia de VM, la configuración predeterminada de la cuenta de servicio y el nivel es suficiente para ejecutar los agentes. Puede que las instancias muy antiguas o aquellas en las que cambiaste la configuración predeterminada no tengan las credenciales adecuadas.

Verifica los niveles de acceso

Para verificar los niveles de acceso, haz lo siguiente:

  1. Abre la página Compute Engine > Instancias de VM:

    Abrir la página de instancias

  2. Haz clic en el nombre de la instancia de VM. Se mostrará la página de detalles de tu instancia.

  3. Busca en el encabezado niveles de acceso a la API de Cloud en la página.

    1. Si lees “Esta instancia tiene acceso total a la API para todos los servicios de Google Cloud”, tus niveles de acceso son adecuados.
    2. Si ves que al lado de la API de Stackdriver Logging tienes permiso Completo o De solo escritura, los niveles de acceso de tu instancia son adecuados para el agente de Stackdriver Logging.
    3. Si ves que al lado de la API de Stackdriver Monitoring tienes permiso Completo o De solo escritura, los niveles de acceso de tu instancia son adecuados para el agente de Stackdriver Monitoring.

Corrige el problema

Si no tienes niveles de acceso adecuados en tu instancia de Compute Engine, agrega los niveles de acceso necesarios a tu instancia.

En la siguiente tabla, se muestran los niveles relevantes para los agentes de Stackdriver Logging y Monitoring:

Nivel de acceso Permisos de agente
https://www.googleapis.com/auth/logging.write Adecuado para el agente de Logging
https://www.googleapis.com/auth/monitoring.write Adecuado para el agente de Monitoring

Verifica el permiso para la cuenta de servicio predeterminada

Aun cuando los niveles de acceso de tu instancia de VM de Compute Engine son adecuados, puede que la cuenta de servicio predeterminada de tu instancia no proporcione los permisos de IAM correctos para el agente.

Lo primero que debes hacer para verificar el permiso de la cuenta de servicio predeterminada es localizarla. Para ello, haz lo siguiente:

  1. Abre el panel de Compute Engine de tu proyecto:

    Abrir la página de instancias de Compute Engine

  2. Haz clic en el nombre de la instancia de VM. Se mostrará la página de detalles de tu instancia.

  3. Busca el encabezado cuenta de servicio en la página. Se muestra la cuenta de servicio predeterminada para la instancia. Podría verse de la siguiente manera:

    [ID]-compute@developer.gserviceaccount.com
    
  4. Abre la página IAM y administración > IAM de tu proyecto. El encabezado de la página es Permisos para el proyecto [PROJECT_NAME]:

    Abrir la página de IAM

  5. Selecciona Ver por: miembros. Deberías ver una lista de personas, grupos y cuentas de servicio. En la columna Función, se muestran las funciones que tiene cada miembro de tu proyecto.

  6. En la fila de la cuenta de servicio predeterminada de tu instancia, deberías ver una o más de las siguientes funciones:

    • Si ves Editor, esa función es adecuada para todos los agentes. Editor es la función predeterminada que se asigna a las cuentas de servicio para Compute Engine.
    • Si ves Escritor de registros, esa función es suficiente para el agente de Logging. Para otras funciones de Logging que incluyen el permiso de escritura, consulta Control de acceso para Stackdriver Logging.
    • Si ves Escritor de métricas de supervisión, esa función es suficiente para el agente de Monitoring. Para otras funciones de Monitoring que incluyen el permiso de escritura, consulta Control de acceso para Stackdriver Monitoring.

Corrige el problema

Si tu cuenta de servicio predeterminada no tiene funciones adecuadas, intenta editar las funciones para tu cuenta de servicio en la página IAM y administración > IAM. Agrega las funciones de Logging o Monitoring adecuadas para autorizar a los agentes: Logging > Escritor de registros o Monitoring > Escritor de métricas de supervisión.

Verifica las credenciales de clave privada

En las instancias de VM de Compute Engine, puedes configurar el agente para usar una cuenta de servicio que no sea predeterminada y que tenga la autorización adecuada. En las instancias de VM de AWS EC2, debes configurar el agente para usar una cuenta de servicio como esa.

Si quieres configurar el agente de esta manera, debes crear credenciales de clave privada para la cuenta de servicio designada y otorgar esas credenciales al agente. El agente buscará las credenciales de dos maneras:

  1. El agente busca una variable de entorno, GOOGLE_APPLICATION_CREDENTIALS, que contenga el nombre de un archivo que tenga las credenciales de clave privada.
  2. Si la variable de entorno no está presente, el agente buscará las credenciales en un archivo estándar:

Linux

 /etc/google/auth/application_default_credentials.json

Windows

C:\ProgramData\Google\Auth\application_default_credentials.json

La siguiente información te ayudará a diagnosticar problemas de credenciales de clave privada:

  1. ¿La clave privada está en su lugar?
  2. ¿La clave privada aún es válida para la cuenta de servicio?
  3. ¿La cuenta de servicio tiene las funciones necesarias para el agente?

Para verificar que las credenciales de clave privada válidas estén instaladas en tu instancia de VM, primero, verifica que el archivo de credenciales exista en la ubicación esperada y, luego, que la información en el archivo de credenciales sea válida. Las credenciales que ya no son válidas se pueden revocar mediante la sección IAM y administración > Cuentas de servicio de GCP Console. Si las credenciales válidas no están presentes, consulta Agrega credenciales para reemplazar las credenciales existentes o agregar nuevas.

¿Las credenciales están presentes?

Para ver si las credenciales de la cuenta de servicio de clave privada están en tu instancia, ejecuta los siguientes comandos de Linux en ella:

sudo cat $GOOGLE_APPLICATION_CREDENTIALS
sudo cat /etc/google/auth/application_default_credentials.json

Si alguno de los comandos muestra un archivo como el que aparece a continuación, tu instancia podría tener credenciales de clave privada válidas. Si ambos comandos muestran un archivo, se usa el archivo indicado por GOOGLE_APPLICATION_CREDENTIALS.

{
  "type": "service_account",
  "project_id": "[YOUR-PROJECT-ID]",
  "private_key_id": "[YOUR-PRIVATE-KEY-ID]",
  "private_key": "[YOUR-PRIVATE-KEY]",
  "client_email": "[YOUR-PROJECT-NUMBER]-[YOUR-KEY@DEVELOPER].gserviceaccount.com",
  "client_id": "[YOUR-CLIENT-ID]",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "{x509-cert-url}",
  "client_x509_cert_url": "{client-x509-cert-url}"
}

Si no hay archivos de credenciales presentes, consulta Agrega credenciales.

¿Las credenciales son válidas?

En el archivo de credenciales, project_id es tu proyecto de GCP, client_email identifica la cuenta de servicio en el proyecto y private_key_id identifica la clave privada en la cuenta de servicio. Haz que esta información coincida con lo que se muestra en la sección IAM y administración > Cuentas de servicio de GCP Console.

El archivo de credenciales no es válido si se cumple alguna de las siguientes condiciones:

  • Comprobaste una instancia de Compute Engine, pero el proyecto de GCP en el archivo de credenciales no es el proyecto que contiene tu instancia.
  • Comprobaste una instancia de Amazon EC2, pero el proyecto de GCP en el archivo de credenciales no es el proyecto de conector (llamado AWS Link...) para tu cuenta de AWS.
  • La cuenta de servicio que se muestra no existe. Podría haber sido borrada.
  • La cuenta de servicio que se muestra no tiene las funciones correctas habilitadas: Escritor de registros para el agente de Stackdriver Logging y Escritor de métricas de supervisión para el agente de Stackdriver Monitoring.
  • La clave privada no existe. Podría haber sido revocada.

Si la cuenta de servicio es la correcta, pero la clave privada se revocó, puedes crear una clave privada nueva y copiarla en tu instancia. Consulta Crea claves de cuenta de servicio.

De lo contrario, debes crear una cuenta de servicio nueva como se describe en la sección Agrega credenciales.

Otros problemas comunes

En la siguiente tabla, se enumeran algunos problemas comunes que puedes encontrar con el agente de Stackdriver Logging y las posibles soluciones.

En Linux, el agente de Logging registra los errores en /var/log/google-fluentd/google-fluentd.log. La clase de error Google::APIClient::ClientError indica que hay un problema con los permisos o el acceso a la API.

Puede que comiences a ver los errores después de que el agente se ejecute de manera correcta. Por ejemplo, puede que alguien haya revocado los permisos requeridos de tu proyecto o tu instancia de VM.

Error Causa Solución
El instalador del agente en Windows no se ejecuta de manera correcta Puede que hayas descargado el instalador en un directorio del sistema. Mueve el instalador a un directorio que no sea del sistema, como C:\Users\[USERID]\.
El proyecto no habilitó la API No habilitaste la API de Stackdriver Logging en tu proyecto. Dirígete a la Consola de API y cambia el estado de la API de Stackdriver Logging a ACTIVADO.
La solicitud tenía credenciales no válidas
o
No se puede obtener el token de acceso (¿No hay niveles configurados?)
Tu instancia de VM no tiene credenciales adecuadas. Si usas Amazon EC2, debes instalar las credenciales en tus instancias de VM antes de instalar el agente. Consulta Autoriza al agente para instalar credenciales.
No se pudo autorizar Tus credenciales de autorización de clave privada para el agente de Logging no están configuradas de manera correcta. Consulta Verifica las credenciales de clave privada.
El emisor no tiene permiso La cuenta de servicio que se usó para la autorización en tu proyecto no tiene permisos suficientes. Puede ser la cuenta de servicio predeterminada que se usa en Compute Engine o App Engine, o una cuenta de servicio definida por el usuario para la autorización de clave privada. La cuenta debe tener permiso de Edición. Cambia el permiso de la cuenta de servicio en la página de Permisos de tu proyecto.
No se puede obtener el ID del proyecto El agente de Stackdriver Logging no pudo obtener el ID del proyecto del archivo de credenciales de clave privada de una cuenta de servicio. Si quieres agregar o anular un ID del proyecto para el agente, edita el archivo de configuración del agente, /etc/google-fluentd/google-fluentd.conf, en tu instancia de VM. En la sección <coincidir **>, agrega la siguiente línea:
project_id [YOUR_PROJECT_ID]
De lo contrario, consulta Autoriza al agente para arreglar o reemplazar las credenciales.
¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

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