Soluciona problemas de credenciales

En este documento, se proporciona información para ayudarte a solucionar problemas de credenciales y de autorización del agente de operaciones en tus instancias de VM de Compute Engine.

Si el agente de operaciones informa errores de acceso o autorización, o si parece que el agente se ejecuta de forma normal, 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:

  • Si usas una instancia de VM de 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 información sobre las credenciales, consulta Autoriza el agente de operaciones. Si deseas verificar tus credenciales, consulta Verifica credenciales de Compute Engine.

  • Si usas credenciales de clave privada en tu instancia de Compute Engine, es posible que las credenciales no sean válidas o que provengan del proyecto incorrecto. Para obtener información sobre las credenciales, consulta Autoriza el agente de operaciones. Para verificar tus credenciales, consulta Verifica credenciales de clave privada.

Verifica las credenciales de Compute Engine

Usa la página Instancias de VM de Compute Engine de la consola de Google Cloud para verificar que tu instancia de VM de Compute Engine tenga las credenciales adecuadas para el agente de operaciones. Por lo general, las credenciales se agregan en la cuenta de servicio predeterminada de todas las nuevas instancias de VM de Compute Engine, pero es posible reemplazar esos valores predeterminados cuando creas una instancia.

En el panel de navegación de la consola de Google Cloud, elige Compute Engine y, luego, Instancias de VM.

Ir a Instancias de VM

  1. Si es necesario, cambia el proyecto actual de Google Cloud para que se asocie 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. Aparecerá la página de detalles de tu instancia de VM.
  3. En la página Detalles de la instancia de VM, busca en el encabezado Permisos de acceso a la API de Cloud:
    • Si ves “Permitir acceso completo a todas las API de Cloud”, significa que tienes las credenciales adecuadas.
    • Si al lado de la API de Stackdriver Monitoring (un nombre anterior para la API de Cloud Monitoring) ves que tienes permiso de Solo escritura o Completo, entonces tienes las credenciales adecuadas.
    • 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 directo a Instala en Linux y 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 que ya no son válidas se pueden revocar en la sección IAM y administración > Cuentas de servicio de la consola de Google Cloud. 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, el campo project_id es tu proyecto de Google Cloud, client_email identifica la cuenta de servicio en el proyecto y private_key_id identifica la clave privada en la cuenta de servicio. Haz coincidir esta información con lo que se muestra en la sección IAM y administración > Cuentas de servicio de la consola de Google Cloud.

El archivo de credenciales no es válido si se cumplen algunas de las siguientes condiciones:

  • Verificas una instancia de Compute Engine, pero el proyecto de Google Cloud en el archivo de credenciales no es el proyecto que contiene tu instancia.
  • La cuenta de servicio de la lista no existe. Quizás se borró.
  • La cuenta de servicio listada no tiene las funciones correctas habilitadas. Debería tener al menos roles/monitoring.metricWriter (escritor de métricas de supervisión) para la recopilación de métricas y roles/logging.logWriter (escritor de registros) para escribir registros.
  • 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 (instancias de Compute Engine que se crearon sin incluir el permiso de acceso https://www.googleapis.com/auth/monitoring.write) crea una cuenta de servicio y genera una clave privada, si aún no existen. Siga los pasos que se indican a continuación:
    1. En el panel de navegación de la consola de Google Cloud, selecciona Monitoring y, luego,  Configuración de Monitoring:

      Ir a Configuración de Monitoring

    2. Seleccionar la pestaña Resumen. Identifica el proyecto que contiene los recursos de Compute Engine en cuestión y ve a la consola de Google Cloud.
    3. Ve a la página Cuentas de servicio de IAM de la consola de Google Cloud, selecciona tu proyecto de Google Cloud, crea una cuenta de servicio nueva y, luego, genera una clave privada nueva para esa cuenta de servicio.

      Para realizar estos pasos, realiza una de las siguientes acciones:

      • Ve a la página Cuentas de servicio de IAM, selecciona tu proyecto de Google Cloud y, luego, sigue los pasos que se indican en Crea una cuenta de servicio:

        Ir a Cuentas de servicio de IAM

      • Haz clic en el siguiente botón y, luego, selecciona el proyecto de Google Cloud:

        Crea una cuenta de servicio y descarga la clave

        El botón anterior automatiza el proceso de creación y descarga de una clave en tu sistema local para la cuenta de servicio específica del agente. Si es necesario, el proceso también crea la cuenta de servicio requerida y garantiza que la cuenta de servicio tenga los permisos correctos. Las cuentas de servicio específicas del agente tienen un nombre similar a stackdriver-1234@PROJECT_ID.iam.gserviceaccount.com. Recibirás una notificación de la finalización de estas acciones con un diálogo similar al siguiente:

        Un banner que notifica al usuario que se crearon una cuenta de servicio y una clave.

  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. Para obtener más información, consulta Copia la clave privada en tu instancia.
  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 Cloud Monitoring.

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

Para verificar que la clave privada es correcta, consulta ¿Las credenciales están presentes? En particular, haz lo siguiente:

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