Solucionar problemas con las credenciales

Este documento proporciona información para ayudarte a solucionar problemas de autorización y credenciales de Ops Agent en tus instancias de máquina virtual de Compute Engine.

Si el agente de operaciones informa de errores de acceso o autorización, o si parece que el agente se está ejecutando normalmente, pero no hay datos o las políticas de alertas no funcionan como esperabas, comprueba que las credenciales de tu instancia de VM sean correctas y que especifiquen el proyecto adecuado:

  • Si usas una instancia de VM de Compute Engine con credenciales estándar (no de clave privada), es poco probable que los datos se envíen al proyecto incorrecto, pero es posible que tus credenciales sigan siendo insuficientes. Para obtener información sobre las credenciales, consulta Autorizar el agente de operaciones. Para verificar tus credenciales, consulta Verificar las 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 pertenezcan a un proyecto incorrecto. Para obtener información sobre las credenciales, consulta Autorizar el agente de Ops. Para verificar tus credenciales, consulta Verificar credenciales de clave privada.

Verificar las credenciales de Compute Engine

Usa la página Instancias de VM de Compute Engine de la consola de Google Cloud para comprobar que tu instancia de VM de Compute Engine tiene las credenciales adecuadas para el agente de operaciones. Las credenciales se suelen añadir a la cuenta de servicio predeterminada de todas las instancias de VM de Compute Engine nuevas, pero es posible sobrescribir esos valores predeterminados al crear una instancia.

En la Google Cloud consola, ve a la página Instancias de VM:

Ve a Instancias de VM.

Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo sea Compute Engine.

  1. Si es necesario, cambia el proyecto actual Google Cloud para que sea el asociado a tu instancia de VM de Compute Engine. Por ejemplo, si se te pide que habilite la facturación, significa que el proyecto actual no tiene ninguna instancia de VM de Compute Engine.
  2. En la página Instancias de VM, haz clic en el nombre de tu instancia de VM. Aparecerá la página de detalles de la instancia de VM.
  3. En la página Detalles de la instancia de VM, busca la sección Ámbitos de acceso a la API Cloud:
    • Si ves el mensaje "Permitir el acceso completo a todas las APIs de Cloud", significa que tienes las credenciales adecuadas.
    • Si ves, junto a API Stackdriver Monitoring, un nombre anterior de la API Cloud Monitoring y tienes permiso Solo escritura o Completo, significa que tienes las credenciales adecuadas.
    • De lo contrario, la cuenta de servicio predeterminada de tu instancia no tendrá las credenciales que necesita el agente. Para usar el agente en tu instancia, debes añadir credenciales de cuenta de servicio de clave privada. Para obtener instrucciones, consulta Añadir credenciales.

Si tienes las credenciales predeterminadas correctas, ve a la sección Instalar en Linux y Windows.

Verificar credenciales de clave privada

Para verificar que las credenciales de clave privada válidas están instaladas en tu instancia de VM, primero comprueba que el archivo de credenciales se encuentra en la ubicación esperada y, a continuación, verifica que la información del archivo de credenciales es válida. Las credenciales que eran válidas anteriormente se pueden revocar en la sección IAM y administración > Cuentas de servicio de la consola de Google Cloud . Si no hay credenciales válidas, consulta la sección Añadir credenciales para sustituir las credenciales actuales o añadir nuevas.

¿Están presentes las credenciales?

Para comprobar si tu instancia tiene credenciales de cuenta de servicio con clave privada, ejecuta los siguientes comandos de Linux en tu instancia:

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 se muestra a continuación, es posible que tu instancia tenga credenciales de clave privada válidas. Si ambos comandos muestran un archivo, se usará 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 ningún archivo de credenciales, consulta la sección Añadir credenciales.

¿Son válidas las credenciales?

En el archivo de credenciales, el campo project_id es tu Google Cloud proyecto, client_email identifica la cuenta de servicio del proyecto y private_key_id identifica la clave privada de la cuenta de servicio. Compara esta información con la que se muestra en la sección IAM y administración > Cuentas de servicio de la consolaGoogle Cloud .

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

  • Estás comprobando una instancia de VM de Compute Engine, pero elGoogle Cloud proyecto del archivo de credenciales no es el proyecto que contiene tu instancia.
  • La cuenta de servicio indicada no existe. Puede que se haya eliminado.
  • La cuenta de servicio que aparece en la lista no tiene habilitados los roles adecuados. Debe tener al menos roles/monitoring.metricWriter (Escritor de métricas de monitorización) para recoger métricas y roles/logging.logWriter (Escritor de registros) para escribir registros.
  • La clave privada no existe. Es posible que se haya revocado.

Si la cuenta de servicio está bien, pero la clave privada se ha revocado, puedes crear una clave privada nueva y copiarla en tu instancia. De lo contrario, debes crear una cuenta de servicio nueva, tal como se describe en la sección Añadir credenciales.

Generar credenciales

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

  1. En cada proyecto conectado que contenga instancias que deban autorizarse con una clave privada (por ejemplo, instancias de Compute Engine que se hayan creado sin incluir el ámbito de acceso https://www.googleapis.com/auth/monitoring.write), crea una cuenta de servicio y genera una clave privada, si aún no existen. Sigue estos pasos:
    1. En la Google Cloud consola, ve a la página  Configuración:

      Ve a Configuración.

      Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.

    2. Selecciona la pestaña Ámbito de Netric.
    3. Identifica el proyecto que contiene los recursos de Compute Engine en cuestión y ve a la Google Cloud consola.
    4. Ve a la página Cuentas de servicio de gestión de identidades y accesos de la consola Google Cloud , selecciona tu proyecto, crea una cuenta de servicio y genera una clave privada para esa cuenta. Google Cloud

      Para llevar a cabo estos pasos, haz una de las siguientes acciones:

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

        Ir a Cuentas de servicio de IAM

      • Haz clic en el botón siguiente y, a continuación, selecciona tu Google Cloud proyecto:

        Crear una cuenta de servicio y descargar la clave

        El botón anterior automatiza el proceso de crear y descargar 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 necesaria y se asegura de que tenga los permisos correctos. Las cuentas de servicio específicas de agentes tienen un nombre similar a stackdriver-1234@PROJECT_ID.iam.gserviceaccount.com. Se te notificará que se han completado estas acciones con un cuadro de diálogo similar al siguiente:

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

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

    • En Linux, sustituye la clave privada ubicada en /etc/google/auth/application_default_credentials.json.
    • En Windows, sustituye la clave privada ubicada en C:\ProgramData\Google\Auth\application_default_credentials.json. Para obtener más información, consulta Copiar la clave privada en tu instancia.
  3. Reiniciar el agente

    • En Linux, ejecuta sudo service stackdriver-agent restart
    • En Windows, ve a la consola de gestión de servicios y reinicia el servicio Cloud 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 ¿Están presentes las credenciales? En concreto, este cambio afecta a las siguientes acciones:

  • Lee el archivo JSON de la 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 campo project_id coincida con el del proyecto monitorizado para el que acabas de generar las credenciales.