En este documento, se describe cómo usar Google Cloud CLI o la API de Cloud Monitoring para configurar el permiso de 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 tus roles de Identity and Access Management (IAM) en el proyecto de alcance y en cada proyecto que deseas agregar como proyecto supervisado incluyan todos los permisos del rol de administrador de supervisión (
roles/monitoring.admin
). Para obtener más información, consulta Configuraciones de alcance 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 completa 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 la API asíncronos.
Si planeas invocar la API de Cloud Monitoring con
curl
o si deseas usar los ejemplos de esta página, 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 los permisos de métricas que pueden ver 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 contenedor de recursos en la variable MONITORED_RESOURCE_CONTAINER_NAME.
Cuando el contenedor de recursos sea un proyecto de Google Cloud,
ingresa projects/PROJECT_ID_OR_NUMBER
.
Por ejemplo, para enumerar los alcances de las 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 alcances 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 el alcance de una métrica, 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 el alcance de una métrica, 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 alcance de métricas en la variable METRICS_SCOPE_ID. El siguiente es un ejemplo de un nombre completamente calificado:
locations/global/metricsScopes/012345012345
A continuación, se muestra un ejemplo de respuesta. En este ejemplo, el permiso de métricas contiene un proyecto, y el ID del permiso de métricas y el proyecto son los mismos:
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
comando gcloud projects list
y filtra por el ID del proyecto. Por ejemplo, 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
Si usas App Hub, para ver las métricas del sistema desde App Hub, debes configurar el proyecto de host de App Hub y el alcance de las métricas. Agregar un proyecto de servicio de App Hub a un proyecto host de App Hub no modifica el alcance de las métricas del proyecto. Del mismo modo, agregar un proyecto a un permiso de métricas no modifica la lista de proyectos de servicio de App Hub adjuntos al proyecto host de App Hub. Para obtener información sobre cómo configurar un proyecto host de App Hub, consulta Agrega o quita proyectos de servicio.
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 cuyo alcance de métricas se modificará en la variable SCOPING_PROJECT_ID_OR_NUMBER.
Ingresa el identificador de tu contenedor 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, el siguiente comando agrega el proyecto my-monitored-project
al
alcance 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 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 realizan a un alcance de métricas cuando se usa la consola de Google Cloud no se registran en los registros de auditoría.
Quita un proyecto de un permiso de métricas
Si usas App Hub, antes de quitar un proyecto del permiso de métricas, asegúrate de que una aplicación de App Hub no lo esté usando. Quitar el proyecto del permiso de métricas no afectará a la aplicación. Sin embargo, no podrás ver las métricas del sistema de esa aplicación desde el contexto del proyecto host de App Hub. Para obtener información sobre cómo configurar un proyecto host de App Hub, consulta Agrega o quita proyectos de servicio.
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 cuyo alcance de métricas se modificará en la variable SCOPING_PROJECT_ID_OR_NUMBER.
Ingresa el identificador de tu contenedor 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, 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 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 definición de alcance no supervisa el proyecto especificado por 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 realizan a un alcance de métricas cuando se usa la consola de Google Cloud no se registran 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, seguido de la URL de un recurso de la 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 de tu proyecto con cada comando
gcloud
, configúralo 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....
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.
¿Qué sigue?
Para obtener información sobre el uso de Google Cloud con Terraform, consulta los siguientes recursos: