En este documento se describe cómo usar Google Cloud CLI o la API Cloud Monitoring para configurar el ámbito de las métricas de un Google Cloud proyecto. Esta página está dirigida a desarrolladores y administradores de sistemas.
También puedes usar Terraform para configurar un ámbito de métricas. Para obtener más información, consulta el registro de Terraform para google_monitoring_monitored_project
.
Ámbitos de aplicaciones y métricas de App Hub
Gestionas el ámbito de las métricas de los proyectos host de App Hub. Puedes gestionar este ámbito mediante la Google Cloud consola o la API Cloud Monitoring.
Google Cloud gestiona el ámbito de las métricas de las carpetas habilitadas para aplicaciones, a menos que no se pueda añadir un proyecto al ámbito de las métricas porque se haya alcanzado la cuota de dicho ámbito. En este caso, puedes solicitar un aumento de la cuota y, a continuación, añadir manualmente proyectos al ámbito de las métricas del proyecto de gestión de la carpeta habilitada para la aplicación. Para obtener más información, consulta Ámbitos de las métricas de las carpetas habilitadas para aplicaciones.
Antes de empezar
Si no conoce los términos ámbito de las métricas y proyecto de ámbito, consulte Ámbitos de las métricas.
Asegúrate de que tus roles de gestión de identidades y accesos (IAM) en el proyecto de ámbito y en cada proyecto que quieras añadir o quitar de un ámbito de métricas incluyan todos los permisos del rol Administrador de Monitoring (
roles/monitoring.admin
). Para obtener más información, consulta Configuraciones de ámbito de las métricas.Los métodos de ámbito de métricas de la API Cloud Monitoring que obtienen información son síncronos, pero las APIs que cambian el estado son asíncronas. Los comandos de la CLI de Google Cloud 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 API asíncronos.
Si tienes previsto invocar la API Cloud Monitoring mediante
curl
o quieres usar los ejemplos de esta página, completa los pasos de configuración del comandocurl
.
Añadir un proyecto a un ámbito de métricas
gcloud
Para añadir un proyecto a un ámbito de métricas, ejecuta el comando gcloud beta monitoring metrics-scopes create
: Google Cloud
gcloud beta monitoring metrics-scopes create MONITORED_PROJECT_ID_OR_NUMBER --project=SCOPING_PROJECT_ID_OR_NUMBER
Antes de ejecutar el comando anterior, haz lo siguiente:
Introduce el nombre o el ID del Google Cloud proyecto cuyo ámbito de métricas se va a modificar en la variable SCOPING_PROJECT_ID_OR_NUMBER. En el caso de las configuraciones de App Hub, seleccione el proyecto host de App Hub o el proyecto de gestión de la carpeta habilitada para aplicaciones.
Introduce el identificador de tu proyecto monitorizado en la variable MONITORED_PROJECT_ID_OR_NUMBER. El formato es
projects/PROJECT_ID_OR_NUMBER
.
Por ejemplo, el siguiente comando añade el proyecto my-monitored-project
al ámbito de las métricas del proyecto 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 ha completado correctamente:
Created monitored project [locations/global/metricsScopes/my-staging-projects/projects/my-monitored-project].
curl
Para añadir un Google Cloud proyecto a un ámbito de métricas, envía una solicitud POST
al punto de conexión locations.global.metricsScopes.projects.create
:
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
En el ejemplo anterior, las variables de entorno se definen de la siguiente manera:
MONITORED_PROJECT_ID_OR_NUMBER
almacena el ID del proyecto que se va a añadir al ámbito de las métricas.SCOPING_PROJECT_ID_OR_NUMBER
almacena el ID del proyecto cuyo ámbito de métricas se está actualizando.
La respuesta de este método asíncrono es un objeto Operation
.
Las aplicaciones que llamen a este método deben sondear el endpoint operation.get
hasta que el valor del campo Operation.done
sea true
.
Si el campo Operation.done
tiene el valor false
, significa que la operación está en curso. Para obtener más información, consulta Comandos de API asíncronos.
A continuación, se muestra un ejemplo de la respuesta cuando se añade un proyecto monitorizado correctamente:
{ "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 ha definido como true
. Este valor indica que el comando se ha completado. Como el comando se ha completado correctamente, el campo Operation.response
se ha definido y su valor es un objeto MonitoredProject
.
El campo response.name
incluye el identificador del proyecto de ámbito y el proyecto monitorizado. En el campo providerAccountId
se muestra el nombre del proyecto monitorizado.
Al invocar este método, se crea una entrada en los registros de auditoría del proyecto de ámbito. La consola Google Cloud no invoca este método de API. Por lo tanto, las modificaciones que se hagan en un ámbito de métricas al usar laGoogle Cloud consola no se registran en los registros de auditoría.
Quitar un proyecto de un ámbito de métricas
gcloud
Para quitar un Google Cloud proyecto
de un ámbito de métricas, ejecuta el comando gcloud beta monitoring metrics-scopes delete
:
gcloud beta monitoring metrics-scopes delete MONITORED_PROJECT_ID_OR_NUMBER --project=SCOPING_PROJECT_ID_OR_NUMBER
Antes de ejecutar el comando anterior, haz lo siguiente:
Introduce el nombre o el ID del Google Cloud proyecto cuyo ámbito de métricas se va a modificar en la variable SCOPING_PROJECT_ID_OR_NUMBER. En el caso de las configuraciones de App Hub, seleccione el proyecto host de App Hub o el proyecto de gestión de la carpeta habilitada para aplicaciones.
Introduce el identificador de tu proyecto monitorizado en la variable MONITORED_PROJECT_ID_OR_NUMBER. El formato es
projects/PROJECT_ID_OR_NUMBER
.
Por ejemplo, el siguiente comando quita el proyecto my-monitored-project
del ámbito de las 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 ha completado correctamente:
Deleted monitored project [locations/global/metricsScopes/my-staging-projects/projects/my-monitored-project].
Se produce el siguiente error cuando el proyecto de ámbito no monitoriza el proyecto especificado por la variable MONITORED_PROJECT_ID_OR_NUMBER:
NOT_FOUND: Requested entity was not found.
curl
Para quitar un proyecto de un ámbito de métricas, envía una solicitud DELETE
al endpoint locations.global.metricsScopes.projects.delete
: Google Cloud
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}
En el ejemplo anterior, las variables de entorno se definen de la siguiente manera:
MONITORED_PROJECT_ID_OR_NUMBER
almacena el ID del proyecto que se va a quitar del ámbito de las métricas.SCOPING_PROJECT_ID_OR_NUMBER
almacena el ID del proyecto cuyo ámbito de métricas se está actualizando.
La respuesta a este método asíncrono es un objeto Operation
.
Las aplicaciones que llamen a este método deben sondear el endpoint operation.get
hasta que el valor del campo Operation.done
sea true
.
Si el campo Operation.done
tiene el valor false
, significa que la operación está en curso. Para obtener más información, consulta Comandos de API asíncronos.
A continuación, se muestra un ejemplo de la respuesta cuando se ha quitado correctamente un proyecto monitorizado:
{ "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 ha definido como true
. Este valor indica que el comando se ha completado. Como el comando se ha completado correctamente, el campo Operation.response
se ha definido y contiene un campo @type
.
Al invocar este método, se crea una entrada en los registros de auditoría del proyecto de ámbito. La consola Google Cloud no invoca este método de API. Por lo tanto, las modificaciones que se hagan en un ámbito de métricas al usar laGoogle Cloud consola no se registran en los registros de auditoría.
Mostrar todos los ámbitos de métricas que incluyan un proyecto
Si quiere saber qué recursos pueden ver los datos almacenados por unGoogle Cloud proyecto, puede enumerar todos los ámbitos de métricas que incluyan el proyecto y, a continuación, consultar los detalles de esos ámbitos. En esta sección se explica cómo enumerar el ámbito de las métricas que incluyen unGoogle Cloud proyecto específico.
gcloud
Para obtener una lista de los ámbitos de las métricas que pueden ver las métricas de unGoogle Cloud proyecto, ejecuta el comando gcloud beta monitoring metrics-scopes list
:
gcloud beta monitoring metrics-scopes list MONITORED_PROJECT_ID_OR_NUMBER
Antes de ejecutar el comando, introduce el identificador del proyecto monitorizado en la variable MONITORED_PROJECT_ID_OR_NUMBER. El formato es projects/PROJECT_ID_OR_NUMBER
.
Por ejemplo, para enumerar los ámbitos 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 ámbitos 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 ámbitos de las métricas que pueden ver las métricas de un proyecto, envía una solicitud GET
al endpoint locations.global.metricsScopes.listMetricsScopesByMonitoredProject
e incluye el parámetro de 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}
En el ejemplo anterior, la variable de entorno PROJECT_ID_OR_NUMBER
almacena el ID del proyecto cuya inclusión en el ámbito de las métricas se
está consultando.
Si la solicitud se realiza correctamente, la respuesta es un array de objetos MetricsScope
.
Este método no da lugar a que se escriba una entrada en los registros de auditoría del proyecto de ámbito. Para que estas acciones se registren en el registro de auditoría, habilita Lectura de datos en la API Cloud Resource Manager. Para obtener más información, consulta el artículo sobre cómo configurar registros de auditoría de acceso a datos.
Obtener detalles sobre un ámbito de métricas
En esta sección se explica cómo encontrar detalles sobre un ámbito de métrica específico.
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, introduce el nombre completo de un ámbito de métricas en la variable METRICS_SCOPE_ID. A continuación, se muestra un ejemplo de nombre completo:
locations/global/metricsScopes/012345012345
A continuación, se muestra un ejemplo de respuesta. En este ejemplo, el ámbito de las métricas contiene un proyecto y el ID del ámbito de las métricas y del proyecto es el mismo:
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 a partir de su ID, ejecuta el comando Google Cloud 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 un ámbito de métricas, envía una solicitud GET
al endpoint locations.global.metricsScopes.get
:
curl -H "Authorization: Bearer ${TOKEN}" \ https://monitoring.googleapis.com/v1/locations/global/metricsScopes/${SCOPING_PROJECT_ID_OR_NUMBER}
En el ejemplo anterior, la variable de entorno SCOPING_PROJECT_ID_OR_NUMBER
almacena el ID del proyecto cuyo ámbito de métricas se está consultando.
Si la solicitud se realiza correctamente, la respuesta es un objeto MetricsScope
.
Este método no da lugar a que se escriba una entrada en los registros de auditoría del proyecto de ámbito. Para que estas acciones se registren en el registro de auditoría, habilita Lectura de datos en la API Cloud Resource Manager. Para obtener más información, consulta el artículo sobre cómo configurar registros de auditoría de acceso a datos.
Métodos de API asíncronos
Todos los métodos de ámbito de métricas de la API Cloud Monitoring que cambian el estado del sistema (por ejemplo, el comando para añadir un proyecto monitorizado a un ámbito de métricas) son asíncronos.
En el caso de estos comandos, la respuesta es un objeto Operation
.
Las aplicaciones que llamen a un método de API asíncrono deben sondear el endpoint operation.get
hasta que el valor del campo Operation.done
sea true
:
Cuando
done
esfalse
, la operación está en curso.Para actualizar la información de estado, envía una solicitud
GET
al endpointoperation.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 se completa y se asigna el valor al campoerror
oresponse
:error
: cuando se establece, la operación asíncrona ha fallado. 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 define, la operación asíncrona se ha completado correctamente y el valor refleja el resultado.
Configuración del comando curl
En esta sección se describe la configuración que se ha usado para crear los comandos curl de este documento. Cada comando curl
de esta página 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>
Define 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 ámbito. Si usa App Hub, defina esta variable con el ID de su proyecto host de App Hub o con el ID del proyecto de gestión de su carpeta habilitada para aplicaciones:
SCOPING_PROJECT_ID_OR_NUMBER=SCOPING_PROJECT_ID_OR_NUMBER
Opcional. Si tienes previsto añadir o quitar proyectos monitorizados, configura la variable de entorno con el ID o el número del proyecto monitorizado:
MONITORED_PROJECT_ID_OR_NUMBER=MONITORED_PROJECT_ID_OR_NUMBER
Autentícate en Google Cloud CLI:
gcloud auth login
Opcional. Para no tener que especificar el ID de proyecto con cada comando
gcloud
, puedes definirlo como predeterminado mediante la CLI de gcloud:gcloud config set project ${SCOPING_PROJECT_ID_OR_NUMBER}
Crea un token de autorización y guárdalo en una variable de entorno:
TOKEN=`gcloud auth print-access-token`
Los tokens son válidos durante un tiempo limitado. Si los comandos que funcionaban de repente informan de que no estás autenticado, vuelve a emitir este comando.
Para verificar que has obtenido un token de acceso, muestra la variable
TOKEN
:echo ${TOKEN} ya29.GluiBj8o....
También es posible que tengas que especificar otros argumentos, como el tipo de solicitud HTTP (por ejemplo, -X DELETE
). La solicitud predeterminada es GET
, por lo que no se especifica en los ejemplos.
Siguientes pasos
Para obtener información sobre el uso de Google Cloud con Terraform, consulta los siguientes recursos: