Solución de problemas de instalación del agente

En esta página, se te ayuda a diagnosticar problemas en la instalación o ejecución del agente de supervisión.

Lista de tareas

Si tienes problemas para instalar o usar el agente de supervisión, aquí hay algunas cuestiones que debes verificar:

  • Si los comandos de instalación dan como resultado errores, asegúrate de que en Linux describas los comandos de instalación con sudo.

  • Si no estás seguro de si el proceso del daemon del agente está en ejecución en tu instancia de VM de Linux, usa el siguiente comando:

    sudo service stackdriver-agent status
    

    Si el agente no se ejecutó, es posible que debas reiniciarlo. En Linux, usa el siguiente comando:

    sudo service stackdriver-agent restart
    

    Si el reinicio falla, reinstala el agente. Consulta la siguiente sección, Reinstala el agente.

  • Ve si el agente daemon ha escrito mensajes de error en los registros. El agente de supervisión en Linux es un paquete collectd y registra los mensajes en /var/log/syslog o /var/log/messages. Los mensajes de registro tienen el prefijo collectd o stackdriver-agent:

    • Si ves errores HTTP 429, es posible que hayas excedido tus cuotas de API de Monitoring. Puedes ver tu cuota disponible cuando seleccionas API y servicios > Panel en la GCP Console. Elige la API de Monitoring.

    • Si ves problemas con el proxy, verifica que hayas configurado correctamente tu proxy HTTP. Las instrucciones son parte de las secciones Instala en Linux o Instala en Windows.

    • Si ves problemas de acceso a la API o de autorización, o mensajes de error como "No se puede determinar el extremo collectd", consulta la siguiente sección, Verifica proyecto y credenciales.

    • Si ves errores en los registros de "combinación de tipo o complemento de collectd no admitido" o "ID de collectd no admitido", es posible que hayas enviado métricas de agentes no admitidos. Esto puede suceder si modificaste una de las configuraciones de la aplicación de terceros del agente. Para revertir los cambios, puedes reinstalar la configuración del complemento específico si sigues las instrucciones en la página de documentación relevante. Si deseas usar el agente para enviar esa métrica a Monitoring, busca convertirlos en métricas personalizadas.

  • Si parece que el agente se ejecuta normalmente, pero no obtienes datos o tus políticas de alertas no actúan como deberían, entonces debes verificar que el agente envíe los datos al proyecto correcto. Consulta la siguiente sección, Verifica proyecto y credenciales.

Verifica el proyecto y las credenciales

Si el agente informa errores de acceso o autorización, o si parece que el agente se ejecuta normalmente, pero no hay datos o tus políticas de alertas no funcionan como esperabas, entonces deberías verificar si las credenciales de tu instancia de VM son correctas, incluso si especifican el proyecto correcto:

  • Para ver si los datos llegan a Monitoring, intenta leer algunos de los datos de las series temporales. Para obtener instrucciones, consulta Verifica la conexión de agente a proyecto. Si ves datos, entonces el problema no está en el agente.

  • Si usas una instancia de VM de Google Compute Engine con credenciales estándar (no de clave privada), es poco probable que los datos vayan al proyecto incorrecto, pero tus credenciales aún pueden ser deficientes. Para obtener más información sobre las credenciales, consulta Autoriza el agente. Para verificar tus credenciales, consulta Verifica credenciales de Compute Engine.

  • Si usas una instancia de VM de Amazon EC2, o si usas credenciales de clave privada en tu instancia de Google Compute Engine, entonces las credenciales podrían no ser válidas o podrían ser del proyecto incorrecto. Para las cuentas de AWS, el proyecto usado por el agente debe ser el proyecto conector de AWS, normalmente nombrado "AWS Link...". Para obtener más información sobre las credenciales, consulta Autoriza el agente. Para verificar tus credenciales, consulta Verifica credenciales de clave privada.

Si aún no resuelves tu problema, consulta Reinstala el agente.

Verifica los datos del agente

Para verificar que el agente envíe las métricas correctamente, usa el método timeseries.list de la API de supervisión para buscar datos de series temporales de la instancia de VM. Puedes llamar al método con el formulario de Explorador de API en la parte inferior de la página de documentación del método. Si no ves ningún dato, es posible que el agente envíe los datos al proyecto incorrecto. Para comprobarlo, consulta Verifica proyecto y credenciales.

Aquí hay instrucciones detalladas para usar el método timeseries.list:

  1. Determina el ID de instancia de la instancia de VM donde instalaste el agente:

    • Compute Engine: Ve a la página de detalles de Compute Engine para tu instancia. En la parte inferior de la página, haz clic en REST equivalente. El ID es un número de 19 dígitos.

    • Amazon EC2: El ID para cada instancia se muestra en la lista de instancias. El ID se ve así i-1a2b3c4d.

  2. Ve a la página de documentación para el método timeseries.list:

    Abrir la página timeseries.list

  3. En la sección Pruébalo, haz clic en el conmutador Autoriza solicitudes con OAuth 2.0. Acepta el formulario sin cambios y haz clic en Autorizar.

  4. Llena el formulario del Explorador de API:

    1. Establece un nombre para el proyecto que contiene tu instancia de VM, con el prefijo de projects/. Por ejemplo, projects/[YOUR_PROJECT_ID]. Para instancias de Amazon EC2 debes usar el proyecto de conector AWS de tu cuenta de Amazon que generalmente tiene un nombre que comienza con "AWS Link".

    2. Establece el filtro en la siguiente línea para elegir una métrica de agente de tu instancia de VM. Cópialo y pégalo en el Explorador de API, y luego cambia el ID de instancia de VM:

      metric.type = "agent.googleapis.com/memory/bytes_used" AND resource.label.instance_id = "[YOUR-VM-INSTANCE-ID]"
      
    3. Establece el intervalo de tiempo de búsqueda. Quieres un intervalo de aproximadamente cinco minutos:

      • Configura el interval.endTime a la hora GMT actual que puedes encontrar en time.is/GMT. La hora debe estar en un formato como el del siguiente ejemplo. No incluyas el tiempo entre comillas:

        2016-10-31T14:10:00Z
        
      • Configura el interval.startTime aproximadamente cinco minutos antes de la hora de finalización con el mismo formato.

    4. Deja todos los otros campos en blanco.

  5. Haz clic en Ejecutar.

Deberías ver un resultado como el siguiente:

{
 "timeSeries": [
  {
   "metric": {
    "labels": {
     "state": "buffered"
    },
    "type": "agent.googleapis.com/memory/bytes_used"
   },
   "resource": {
    "type": "[GCP-OR-AWS-INSTANCE-TYPE]",
    "labels": {
     "instance_id": "[YOUR-VM-INSTANCE-ID]",
     "zone": "[YOUR-INSTANCE-ZONE]",
     "project_id": "[YOUR-PROJECT-ID]"
    }
   },
   "metricKind": "GAUGE",
   "valueType": "DOUBLE",
   "points": [
    {
     "interval": {
      "startTime": "[START_TIME]",
      "endTime": "[END_TIME]"
     },
     "value": {
      "doubleValue": 27451392
     }
    },
    ...

Si la llamada a la API muestra datos de series temporales de tu instancia de VM, como se muestra arriba, entonces tu agente funciona correctamente y habrás finalizado.

Si no ves ningún dato de series temporales, verifica lo siguiente:

  • Si tu llamada a la API da como resultado un mensaje de error, esto no indica un problema del agente. Comprueba que los campos del Explorador de API se llenaron correctamente. Verifica la ortografía y el formato del ID del proyecto, el filtro y las dos marcas de tiempo. Los errores "No autorizado" pueden significar que escribiste incorrectamente el ID del proyecto. Los errores "No encontrado" pueden indicar que omitiste los prefijos projects/ requeridos en el campo "nombre". Soluciona los problemas y vuelve a intentar la llamada a la API.

  • Si la llamada a la API es correcta, pero solo ves una respuesta vacía, { }, entonces verifica que tu filtro y el intervalo de tiempo sean correctos. Los errores en el formato de las marcas de tiempo pueden hacer que no se muestren datos. Si todo parece correcto, pero no obtuviste los datos, entonces el agente no envió los datos de métrica o al menos no al proyecto que esperabas. Esto podría indicar un problema de credenciales. Consulta Verifica credenciales de clave privada.

Verifica las credenciales de Compute Engine

Usa la página de Compute Engine > instancias de VM de GCP Console para verificar que tu instancia de VM de Compute Engine tenga las credenciales adecuadas del agente de supervisión. Generalmente, las credenciales se agregan en la cuenta de servicio predeterminada de todas las instancias de VM de Compute Engine nuevas, pero es posible reemplazar esos valores predeterminados cuando creas una instancia.

Abrir la página de instancias de Compute Engine

  1. Si es necesario, cambia el proyecto de GCP actual para que sea el asociado con tu instancia de VM de Compute Engine. Por ejemplo, si se te solicita Habilitar la facturación, significa que el proyecto actual no tiene ninguna instancia de VM de Compute Engine.
  2. En la página de Instancias de VM, haz clic en el nombre de tu instancia de VM. Aparece la página de detalles de tu instancia de VM.
  3. En la página de detalles de la instancia de VM, busca en el encabezado del nivel de acceso a la API de Cloud:
    1. Si ves "Permitir acceso completo a todas las API de Cloud", entonces tienes las credenciales adecuadas.
    2. Si ves al lado de la API de Stackdriver Monitoring que tienes permiso de Solo escritura o Completo, entonces tienes las credenciales adecuadas.
    3. De lo contrario, la cuenta de servicio predeterminada de tu instancia no tiene las credenciales que necesita el agente. Para usar el agente en tu instancia, debes agregar credenciales de cuenta de servicio de clave privada. Para obtener instrucciones, consulta Agrega credenciales.

Si tienes las credenciales predeterminadas correctas, ve a Instala en Linux o Instala en Microsoft Windows.

Verifica las credenciales de clave privada

Para verificar que las credenciales válidas de clave privada estén instaladas en tu instancia de VM, primero verifica que el archivo de credenciales existe en tu ubicación esperada y luego que la información en el archivo de credenciales sea válida. Las credenciales previamente válidas se pueden revocar con 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 tu instancia:

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

Si cualquiera 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 listada no existe. Quizás se borró.
  • La cuenta de servicio listada no tiene las funciones correctas habilitadas. Debería tener al menos el roles/monitoring.metricWriter (Escritor de métricas de supervisión) del agente de supervisión y el roles/logging.logWriter (Escritor de registros) del agente de Logging.
  • La clave privada no existe. Quizás se revocó.

Si la cuenta de servicio es correcta, pero la clave privada se revocó, puedes crear una clave privada nueva y copiarla en tu instancia. De lo contrario, debes crear una cuenta de servicio nueva como se describe en la siguiente sección Agrega credenciales.

Genera credenciales nuevas

Si las credenciales no son válidas, sigue los siguientes pasos:

  1. Para cada proyecto conectado que contenga instancias que deban autorizarse con una clave privada (todos los proyectos del conector AWS y las instancias de Compute Engine creados sin el alcance de supervisión), crea una cuenta de servicio y genera una clave privada, si aún no existen. Sigue los pasos a continuación:

    1. Abre la lista de proyectos conectados a tu lugar de trabajo aquí.
      • Para AWS, usa el vínculo de navegación directa a Cloud Console del proyecto en cuestión.
      • Para GCP, identifica el proyecto que contiene los recursos de Compute Engine en cuestión y ve a Cloud Console.
    2. Desde Cloud Console, navega a la página de Cuentas de servicio de IAM.
    3. Crea una cuenta de servicio nueva y genera una clave privada nueva para ella.

      El enfoque más simple es descargar una clave privada con la configuración correcta. Esta clave se puede obtener con la modificación de la URL de la página actual: Agrega &createStackdriverServiceAccount al final de la URL. Para obtener más información, consulta Crea una cuenta de servicio.

  2. Reemplaza la clave privada en las instancias que correspondan a la cuenta de servicio en cuestión.

    • En Linux, reemplaza la clave privada ubicada en /etc/google/auth/application_default_credentials.json.
    • En Windows, reemplaza la clave privada ubicada en C:\ProgramData\Google\Auth\application_default_credentials.json. Consulta Copia la clave privada a tu instancia para obtener más detalles.
  3. Reinicia el agente

    • En Linux, ejecuta sudo service stackdriver-agent restart.
    • En Windows, ve a la consola de administración de servicios y reinicia el servicio de Stackdriver Monitoring.

Si tienes varios proyectos que necesitan nuevas claves privadas, repite este procedimiento para cada uno de ellos.

Para verificar que la clave privada es correcta, consulta ¿Las credenciales están presentes? Específicamente, ocurre lo siguiente:

  • Lee el archivo JSON de clave privada en la instancia, por ejemplo (en Linux): sudo cat /etc/google/auth/application_default_credentials.json.
  • Asegúrate de que el valor del project-id coincida con el del proyecto supervisado para el que acabas de generar las credenciales.

Reinstala el agente

Instalar la versión más reciente del agente puede resolver muchos problemas:

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Stackdriver Monitoring
Si necesitas ayuda, visita nuestra página de asistencia.