En este documento, se describe cómo usar Google Cloud CLI o la La API de Cloud Monitoring para configurar el permiso de las métricas de un proyecto de Google Cloud. Esta página está dirigida a desarrolladores y administradores del sistema.
Los comandos de esta página hacen referencia a un contenedor de recursos, que siempre es un proyecto de Google Cloud.
Antes de comenzar
Si no estás familiarizado con los términos alcance de las métricas y proyecto de alcance, consulta alcances de métricas.
Asegúrate de que los roles de Identity and Access Management (IAM) proyecto de permisos y en cada proyecto agregar como proyecto supervisado incluye todos los permisos en el Administrador de Monitoring (
roles/monitoring.admin
). Para obtener más información, consulta Parámetros de configuración de los permisos de las 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. Los comandos de Google Cloud CLI se bloquean hasta que se complete la operación asíncrona. Para obtener información sobre cómo determinar cuándo se completa un método de API asíncrono y cómo determinar su estado consulta Métodos de API asíncronos.
Si planeas invocar la API de Cloud Monitoring con
curl
o si usar las muestras de esta página y, luego, completa los Pasos de la configuración del comandocurl
.
Enumera todos los permisos de las métricas que incluyen un proyecto
gcloud
Para obtener una lista de permisos de métricas que pueden visualizar las métricas de un
contenedor de recursos, como un proyecto de Google Cloud, ejecuta el
Comando gcloud beta monitoring metrics-scopes list
:
gcloud beta monitoring metrics-scopes list MONITORED_RESOURCE_CONTAINER_NAME
Antes de ejecutar el comando, ingresa el identificador del
de recursos en la variable MONITORED_RESOURCE_CONTAINER_NAME.
Cuando el contenedor de recursos es un proyecto de Google Cloud,
ingresa projects/PROJECT_ID_OR_NUMBER
.
Por ejemplo, para enumerar los permisos de métricas que incluyen el proyecto
my-project
, ejecuta el siguiente comando:
gcloud beta monitoring metrics-scopes list projects/my-project
La siguiente respuesta indica que el proyecto my-project
se incluye en
dos permisos de métricas:
metricsScopes:
- createTime: '2018-08-06T17:13:42Z'
name: locations/global/metricsScopes/012345012345
updateTime: '2018-08-18T16:20:37.032928Z'
- createTime: '2021-04-13T15:37:26.869Z'
name: locations/global/metricsScopes/9876543210
updateTime: '2021-04-13T15:37:27.284239Z'
Para obtener información detallada sobre un permiso de métricas, ejecuta el
Comando gcloud beta monitoring metrics-scopes describe
.
curl
Para obtener una lista de los alcances de 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 array 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 en la API de Cloud Resource Manager. Para obtener más información, consulta el artículo Configuración de registros de auditoría de acceso a los datos.
Obtén detalles sobre un permiso de métricas
gcloud
Para obtener información detallada sobre un permiso de métricas, ejecuta el
Comando gcloud beta monitoring metrics-scopes describe
:
gcloud beta monitoring metrics-scopes describe METRICS_SCOPE_ID
Antes de ejecutar el comando, ingresa el nombre completamente calificado de un permiso de métricas en la variable METRICS_SCOPE_ID. Lo siguiente Este es un ejemplo de un nombre completamente calificado:
locations/global/metricsScopes/012345012345
El siguiente es un ejemplo de respuesta. En este ejemplo, los permisos de las métricas contiene un proyecto, y el ID del permiso de métricas y del proyecto son los igual:
createTime: '2018-08-06T17:13:42Z'
monitoredProjects:
- createTime: '2018-08-06T17:13:42Z'
name: locations/global/metricsScopes/012345012345/projects/012345012345
name: locations/global/metricsScopes/012345012345
updateTime: '2018-08-18T16:20:37.032928Z'
Para identificar el proyecto de Google Cloud a partir de su ID, ejecuta el siguiente comando:
Comando gcloud projects list
y filtra por el ID del proyecto. Por ejemplo, para
Para obtener el nombre del proyecto 012345012345
, ejecuta el siguiente comando:
gcloud projects list --filter="012345012345" -format="value(NAME)"
curl
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 en la API de Cloud Resource Manager. Para obtener más información, consulta el artículo Configuración de registros de auditoría de acceso a los datos.
Agrega un proyecto a un permiso de métricas
gcloud
Para agregar un contenedor de recursos, como un proyecto de Google Cloud, a un permiso de métricas,
Ejecuta el comando gcloud beta monitoring metrics-scopes create
:
gcloud beta monitoring metrics-scopes create MONITORED_RESOURCE_CONTAINER_NAME --project=SCOPING_PROJECT_ID_OR_NUMBER
Antes de ejecutar el comando anterior, haz lo siguiente:
Ingresa el nombre o el ID del proyecto de Google Cloud del que deseas acceder a las métricas se modificará en la variable SCOPING_PROJECT_ID_OR_NUMBER.
Ingresa el identificador del contenedor de recursos en la variable MONITORED_RESOURCE_CONTAINER_NAME Cuando un contenedor de recursos es un proyecto de Google Cloud, ingresa
projects/PROJECT_ID_OR_NUMBER
.
Por ejemplo, el siguiente comando agrega el proyecto my-monitored-project
al
el permiso de métricas del proyecto llamado my-staging-projects
:
gcloud beta monitoring metrics-scopes create projects/my-monitored-project --project=my-staging-projects
La respuesta al comando anterior confirma que el comando se completó correctamente:
Created monitored project [locations/global/metricsScopes/my-staging-projects/projects/my-monitored-project].
curl
Para agregar un proyecto de Google Cloud a un permiso 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
, eso indica que la operación está en progreso. Para obtener más información, consulta Comandos de la API asíncronos.
El siguiente es un ejemplo de la respuesta cuando se agrega un proyecto supervisado:
{ "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 establece en true
. Este valor indica que el comando está completo. Debido a que el comando se completó con éxito, el campo Operation.response
se establece 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
muestra el nombre del proyecto supervisado.
Invocar este método da como resultado una entrada en los registros de auditoría del proyecto de alcance. La consola de Google Cloud no invoca este método de API. Por lo tanto, las modificaciones que se hacen a un permiso de métricas cuando se usa La consola de Google Cloud no se incluye en los registros de auditoría.
Quita un proyecto de un permiso de métricas
gcloud
Para quitar un contenedor de recursos, como un proyecto de Google Cloud,
de un permiso de métricas, ejecuta el
Comando gcloud beta monitoring metrics-scopes delete
:
gcloud beta monitoring metrics-scopes delete MONITORED_RESOURCE_CONTAINER_NAME --project=SCOPING_PROJECT_ID_OR_NUMBER
Antes de ejecutar el comando anterior, haz lo siguiente:
Ingresa el nombre o el ID del proyecto de Google Cloud del que deseas acceder a las métricas se modificará en la variable SCOPING_PROJECT_ID_OR_NUMBER.
Ingresa el identificador del contenedor de recursos en la variable MONITORED_RESOURCE_CONTAINER_NAME Cuando un contenedor de recursos es un proyecto de Google Cloud, ingresa
projects/PROJECT_ID_OR_NUMBER
.
Por ejemplo, el siguiente comando quita el proyecto my-monitored-project
del permiso de métricas del proyecto llamado my-staging-projects
:
gcloud beta monitoring metrics-scopes delete projects/my-monitored-project --project=my-staging-projects
La respuesta al comando anterior confirma que el comando se completó correctamente:
Deleted monitored project [locations/global/metricsScopes/my-staging-projects/projects/my-monitored-project].
Se informa el siguiente error cuando el proyecto de permisos no está supervisando. el proyecto que especifica la variable MONITORED_RESOURCE_CONTAINER_NAME:
NOT_FOUND: Requested entity was not found.
curl
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 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
, eso indica que la operación está en progreso. Para obtener más información, consulta Comandos de la API asíncronos.
El siguiente es un ejemplo de la respuesta cuando la eliminación de un proyecto supervisado se realiza de forma 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 establece en true
. Este valor indica que el comando está completo. Debido a que el comando se completó con éxito, el campo Operation.response
se establece y contiene un campo @type
.
Invocar este método da como resultado una entrada en los registros de auditoría del proyecto de alcance. La consola de Google Cloud no invoca este método de API. Por lo tanto, las modificaciones que se hacen a un permiso de métricas cuando se usa La consola de Google Cloud no se incluye en los registros de auditoría.
Métodos de la 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 del comando es un objeto Operation
.
Las aplicaciones que llaman a un método de API asíncrono deben sondear el extremo operation.get
hasta que el valor del campo Operation.done
sea true
:
Cuando
done
estáfalse
, la operación está en progreso.Para actualizar la información de estado, envía una solicitud
GET
al extremooperation.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 campoOperation.name
.Cuando
done
estrue
, la operación está completa y el campoerror
oresponse
está configurado:error
: Cuando se configura, falla la operación asíncrona. El valor de este campo es un objetoStatus
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 curl en este documento. Cada comando curl
de esta página incluye un conjunto de
argumentos seguidos de la URL de un recurso de API:
curl -H "Authorization: Bearer ${TOKEN}" <other_args> \
https://monitoring.googleapis.com/v1/locations/global/metricsScopes/<resource>
Configura estas variables de entorno para simplificar la creación de los comandos curl
:
Crea la variable de entorno para almacenar el ID o el número del proyecto de alcance:
SCOPING_PROJECT_ID_OR_NUMBER=SCOPING_PROJECT_ID_OR_NUMBER
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=MONITORED_PROJECT_ID_OR_NUMBER
Autentica en la CLI de Google Cloud:
gcloud auth login
Opcional. Para evitar tener que especificar el ID del proyecto con cada
gcloud
establece tu ID del proyecto como predeterminado con gcloud CLI:gcloud config set project ${SCOPING_PROJECT_ID_OR_NUMBER}
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, entonces vuelve a emitir este comando.
Para verificar que cuentas con un token de acceso, reproduce la variable
TOKEN
:echo ${TOKEN} ya29.GluiBj8o....
Quizás también debas especificar otros argumentos, por ejemplo, para especificar la
el tipo de solicitud HTTP (por ejemplo, -X DELETE
). La solicitud predeterminada
es GET
, por lo que los ejemplos no lo especifican.
¿Qué sigue?
Para obtener información sobre el uso de Google Cloud con Terraform, consulta los siguientes recursos: