Administra los permisos de las métricas con la API

En este documento, se describe cómo usar los métodos de alcance de métricas en la API de Cloud Monitoring para administrar el alcance de las métricas de un proyecto de Google Cloud. Esta página está dirigida a desarrolladores y administradores de sistemas.

Para conectar una cuenta de AWS al alcance de métricas de un proyecto de Google Cloud, debes usar Google Cloud Console. Si deseas obtener más información, consulta Visualiza métricas para cuentas de AWS.

Antes de comenzar

  • Si no estás familiarizado con los términos alcance de las métricas y proyectos de alcance, consulta Alcances de las métricas.

  • Asegúrate de que la función de administración de identidades y accesos (IAM) en el proyecto de alcance te permita modificar el alcance de las métricas del proyecto.

  • En cada proyecto que desees agregar como proyecto supervisado, asegúrate de que la función de IAM te permita modificar el alcance de las métricas del proyecto. Para obtener información sobre las funciones de IAM necesarias, consulta Opciones de configuración del alcance de métricas.

  • Los métodos de alcance de métricas de la API de Cloud Monitoring que recuperan información son síncronos. Sin embargo, las API que cambian de estado son asíncronas. Para obtener información sobre cómo determinar cuándo se completa un método asíncrono y cómo determinar su estado, consulta Métodos de API asíncronos.

Parámetros del comando curl

Puedes invocar las API de alcances de métricas directamente. En esta página, se proporcionan comandos de muestra que usan curl. Cada comando curl incluye un conjunto de argumentos seguido de la URL de un recurso de API:

curl -H "Authorization: Bearer ${TOKEN}" <other_args> \
https://monitoring.googleapis.com/v1/locations/global/metricsScopes/<resource>

Los ejemplos de esta página se basan en las siguientes variables de entorno:

  • TOKEN: Almacena el token de autenticación.
  • SCOPING_PROJECT_ID_OR_NUMBER: Almacena el número o ID del proyecto para un proyecto de alcance de un alcance de métricas.
  • MONITORED_PROJECT_ID_OR_NUMBER: Almacena el ID del proyecto o el número de un proyecto que se agregará o quitará a un alcance de las métricas.

Es posible que también debas especificar otros argumentos, por ejemplo, el tipo de solicitud HTTP (por ejemplo, -X DELETE). La solicitud predeterminada es GET, por lo que los ejemplos no lo especifican.

Si deseas obtener información sobre la configuración requerida para los ejemplos, consulta Configuración del comando curl.

Obtén un alcance de métricas

Para obtener información sobre el alcance de una métrica, envía una solicitud GET al extremo locations.global.metricsScopes.get:

curl -H "Authorization: Bearer ${TOKEN}" \
https://monitoring.googleapis.com/v1/locations/global/metricsScopes/${SCOPING_PROJECT_ID_OR_NUMBER}

Cuando se ejecuta de forma correcta, la respuesta es un objeto MetricsScope.

Este método no hace que se escriba una entrada en los registros de auditoría del proyecto de alcance. Para registrar estas acciones en el registro de auditoría, habilita Lectura de datos para la API de Cloud Resource Manager. Para obtener más información, consulta Configura registros de auditoría de acceso a los datos.

Enumerar todos los permisos de las métricas que incluyen un proyecto

Para obtener una lista de los permisos de las métricas que pueden ver las métricas de un proyecto, envía una solicitud GET al extremo locations.global.metricsScopes.listMetricsScopesByMonitoredProject y, luego, incluye la consulta. que especifica el proyecto.

curl -H "Authorization: Bearer ${TOKEN}" \
https://monitoring.googleapis.com/v1/locations/global/metricsScopes:listMetricsScopesByMonitoredProject?monitored_resource_container=projects/${PROJECT_ID_OR_NUMBER}

Cuando se ejecuta de forma correcta, la respuesta es un arreglo de objetos MetricsScope.

Este método no hace que se escriba una entrada en los registros de auditoría del proyecto de alcance. Para registrar estas acciones en el registro de auditoría, habilita Lectura de datos para la API de Cloud Resource Manager. Para obtener más información, consulta Configura registros de auditoría de acceso a los datos.

Agrega un proyecto a un permiso de métricas

Para agregar un proyecto de Google Cloud a un alcance de métricas, envía una solicitud POST al extremo locations.global.metricsScopes.projects.create. En el siguiente ejemplo, el proyecto identificado por la variable de entorno MONITORED_PROJECT_ID_OR_NUMBER se agrega como proyecto supervisado:

curl -H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" -X POST \
-d "{'name': 'locations/global/metricsScopes/${SCOPING_PROJECT_ID_OR_NUMBER}/projects/${MONITORED_PROJECT_ID_OR_NUMBER}'}" \
https://monitoring.googleapis.com/v1/locations/global/metricsScopes/${SCOPING_PROJECT_ID_OR_NUMBER}/projects

La respuesta de este método asíncrono es un objeto Operation.

Las aplicaciones que llaman a este método deben sondear el extremo operation.get hasta que el valor del campo Operation.done sea true. Cuando el campo Operation.done se establece en false, indica que la operación está en curso. Para obtener más información, consulta Comandos de API asíncronos.

El siguiente es un ejemplo de la respuesta cuando un proyecto supervisado tiene éxito:

{
  "name": "operations/6915efde-1915-400a-ad49-7b62041d9bd2",
  "metadata": {
    "@type": "type.googleapis.com/google.monitoring.metricsscope.v1.OperationMetadata",
    "state": "DONE",
    ...
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.monitoring.metricsscope.v1.MonitoredProject",
    "name": "locations/global/metricsScopes/012012012012/projects/678678678678",
    "provider": "GCP",
    "providerAccountId": "...",
    ...
  }
}

En la respuesta anterior, el campo Operation.done se configura como true. Este valor indica que el comando está completo. Debido a que el comando se completó con éxito, el campo Operation.response se configuró y su valor es un objeto MonitoredProject. El campo response.name incluye el identificador del proyecto de alcance y del proyecto supervisado. El campo providerAccountId enumera el nombre del proyecto supervisado.

Invocar este método da como resultado una entrada en los registros de auditoría del proyecto de alcance. Si usas Cloud Console para agregar un proyecto a un alcance de métricas, esa acción no se registra en los registros de auditoría. Cloud Console no invoca este método de la API.

Quita un proyecto de un alcance de métricas

Para quitar un proyecto de Google Cloud de un permiso de métricas, envía una solicitud DELETE al extremo locations.global.metricsScopes.projects.delete:

curl -H "Authorization: Bearer ${TOKEN}" -X DELETE \
https://monitoring.googleapis.com/v1/locations/global/metricsScopes/${SCOPING_PROJECT_ID_OR_NUMBER}/projects/${MONITORED_PROJECT_ID_OR_NUMBER}

La respuesta a este método asíncrono es un objeto Operation.

Las aplicaciones que llaman a este método deben sondear el extremo operation.get hasta que el valor del campo Operation.done sea true. Cuando el campo Operation.done se establece en false, indica que la operación está en curso. Para obtener más información, consulta Comandos de API asíncronos.

El siguiente es un ejemplo de la respuesta que se obtiene cuando la eliminación de un proyecto supervisado es correcta:

{
  "name": "operations/4367ff34-0ff0-4767-b8d3-0638e30f077c",
  "metadata": {
    "@type": "type.googleapis.com/google.monitoring.metricsscope.v1.OperationMetadata",
    "state": "DONE",
    ...
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

En la respuesta anterior, el campo Operation.done se configura como true. Este valor indica que el comando está completo. Debido a que el comando se completó de forma correcta, el campo Operation.response se configuró y contiene un campo @type.

Invocar este método da como resultado una entrada en los registros de auditoría del proyecto de alcance. Si usas Cloud Console para quitar un proyecto de un alcance de métricas, esa acción no se registra en los registros de auditoría. Cloud Console no invoca este método de la API.

Métodos de API asíncronos

Todos los métodos de alcance de métricas de la API de Cloud Monitoring que cambian el estado del sistema, por ejemplo, el comando para agregar un proyecto supervisado a un alcance de métricas son asíncronos. Para estos comandos, la respuesta de comando es un objeto Operation.

Las aplicaciones que llaman a un método asíncrono de API deben sondear el extremo operation.get hasta que el valor del campo Operation.done sea true:

  • Cuando done es false, la operación está en curso.

    Para actualizar la información de estado, envía una solicitud GET al extremo operation.get:

    curl -H "Authorization: Bearer ${TOKEN}" \
    https://monitoring.googleapis.com/v1/${OPERATION_NAME}
    

    En el comando anterior, OPERATION_NAME es una variable de entorno que almacena el valor del campo Operation.name.

  • Cuando done es true, se completa la operación y se establecen los campos error o response:

    • error: Cuando se configuró, falló la operación asíncrona. El valor de este campo es un objeto Status que contiene un código de error de gRPC y un mensaje de error.
    • response: Cuando se establece, la operación asíncrona se completó de forma correcta, y el valor refleja el resultado.

Configuración del comando curl

En esta sección, se describe la configuración que se usó para crear los comandos de curl en este documento.

Configura estas variables de entorno para simplificar la creación de los comandos curl:

  1. Crea la variable de entorno para almacenar el número o ID del proyecto de alcance:

    SCOPING_PROJECT_ID_OR_NUMBER=a-sample-project
    
  2. Opcional. Si planeas agregar o quitar proyectos supervisados, configura la variable de entorno con el ID o el número del proyecto supervisado:

    MONITORED_PROJECT_ID_OR_NUMBER=a-monitored-project
    
  3. Realiza la autenticación en el SDK de Cloud:

    gcloud auth login
    
  4. Opcional Para evitar tener que especificar el ID del proyecto con cada comando gcloud, configúralo como predeterminado mediante el SDK de Cloud:

    gcloud config set project ${SCOPING_PROJECT_ID_OR_NUMBER}
    
  5. Crea un token de autorización y captúralo en una variable de entorno:

    TOKEN=`gcloud auth print-access-token`
    

    Los tokens son válidos por tiempo limitado. Si los comandos que funcionaban de repente informan que no estás autenticado, vuelve a emitir este comando.

  6. Para verificar que cuentas con un token de acceso, reproduce la variable TOKEN:

    echo ${TOKEN}
    ya29.GluiBj8o....