En este documento se describe cómo crear métricas definidas por el usuario y cómo escribir estos datos de métricas mediante la API Cloud Monitoring. Las métricas definidas por el usuario usan los mismos elementos que las métricas integradas de Cloud Monitoring:
- Un conjunto de puntos de datos.
- Información de tipo métrica, que indica qué representan los puntos de datos.
- Información de recursos monitorizados, que indica de dónde proceden los puntos de datos.
Las métricas definidas por el usuario, a veces denominadas métricas personalizadas, se pueden usar de la misma forma que las métricas integradas. Es decir, puedes crear gráficos y alertas con estos datos de métricas.
Las métricas basadas en registros son un tipo de métricas definidas por el usuario, pero no se pueden crear con la API Cloud Monitoring. Las métricas basadas en registros obtienen datos de métricas de las entradas de registro, pero la API Monitoring no ofrece ninguna forma de especificar cómo extraer datos de métricas de las entradas de registro. En su lugar, usa Cloud Logging para crear métricas basadas en registros. Cuando creas una métrica basada en registros, Logging crea las estructuras descritas en este documento y envía los datos de la métrica a Cloud Monitoring. Para obtener información sobre cómo crear métricas basadas en registros, consulta los siguientes documentos:
Para instrumentar tu aplicación, te recomendamos que uses un framework de instrumentación de código abierto independiente del proveedor, como OpenTelemetry, en lugar de APIs o bibliotecas de cliente específicas de un proveedor o un producto. Para obtener información sobre cómo instrumentar tu aplicación, consulta Instrumentación y observabilidad.
Antes de empezar
Para obtener información sobre las estructuras subyacentes a todas las métricas, consulte Métricas, series temporales y recursos.
Para usar Cloud Monitoring, debes tener un Google Cloud proyecto con la facturación habilitada. Cuando sea necesario, haz lo siguiente:
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Comprueba que la API Monitoring esté habilitada. Para obtener más información, consulta el artículo sobre cómo habilitar la API Monitoring.
- En el caso de las aplicaciones que se ejecutan fuera de Google Cloud, tu proyecto Google Cloud debe autenticar tu aplicación mediante credenciales de aplicación predeterminadas (ADC) locales. Para obtener más información, consulta el artículo Configurar ADC para un entorno local u otro proveedor de servicios en la nube.
Crear un tipo de métrica definida por el usuario
Para crear una métrica definida por el usuario, puede definir un objeto MetricDescriptor
que especifique diversa información sobre la métrica o escribir datos de métricas. Cuando escribes datos de métricas, Monitoring crea el descriptor de métricas en función de la estructura de los datos que proporciones.
Para obtener información sobre cómo diseñar un descriptor de métrica, consulta Descriptores de métricas definidas por el usuario.
Creación automática de descriptores de métricas
Si escribe datos de métricas cuando aún no existe un descriptor de métricas para esa métrica definida por el usuario, se creará automáticamente un descriptor de métricas. Sin embargo, es posible que este nuevo descriptor de métrica no sea exactamente lo que quiere, ya que la creación automática de descriptores de métricas implica algunas suposiciones y valores predeterminados.
Cloud Monitoring crea un nuevo MetricDescriptor
cuando el objeto TimeSeries
incluido en una llamada a timeSeries.create
hace referencia a un objeto Metric
que especifica un nombre de tipo de métrica que no existe.
Cloud Monitoring usa las siguientes reglas para rellenar el MetricDescriptor
:
type
: El tipo se copia del campotype
del objetoMetric
.name
: el nombre se crea a partir del ID de proyecto en la llamada al método y del valor detype
en el objetoMetric
.labels
: las etiquetas que aparecen en el objetoMetric
. Cada descriptor de etiqueta del nuevo descriptor de métrica tiene los siguientes campos:key
: la clave de la etiqueta del objetoMetric
.valueType
:STRING
description
: no se ha configurado
metricKind
: el tipo de métrica esGAUGE
a menos que especifiques el parámetrometricKind
del objetoTimeSeries
. Cuando especifiques elmetricKind
, la nueva métrica tendrá ese tipo. Solo puedes especificar los tiposGAUGE
yCUMULATIVE
.valueType
: el tipo de valor se toma del valor escrito delPoint
. El tipo de valor debe serBOOL
,INT64
,DOUBLE
oDISTRIBUTION
. Cuando especifiques un tipo de valor en el campovalueType
deTimeSeries
, ese tipo debe coincidir con el tipo dePoint
.unit
: no se ha configuradodescription
:"Auto created custom metric."
.displayName
: no se ha configurado
En una sola llamada timeSeries.create
, puede incluir varios objetos TimeSeries
que hagan referencia al mismo tipo de métrica inexistente. En ese caso, las etiquetas del nuevo descriptor de métricas se componen de la unión de todas las etiquetas de los objetos Metric
de todas las series temporales de esta llamada a create
.
Paso siguiente: Consulta Escribir métricas definidas por el usuario.
Creación manual de descriptores de métricas
Para crear un descriptor de métrica, siga estos pasos:
Determina la estructura del descriptor de métricas. Para tomar estas decisiones, puede consultar las métricas integradas y ver sus datos de serie temporal:
Elige un nombre de métrica para tu métrica definida por el usuario.
Elige un nombre visible y una descripción para la métrica. El nombre visible se usa en la consola. Google Cloud
Elige el proyecto o los proyectos en los que quieras definir la métrica definida por el usuario y escribe sus datos de serie temporal. Si necesitas la misma métrica en varios proyectos, crea definiciones idénticas de la métrica en cada proyecto.
Determina el tipo, el tipo de valor y (opcionalmente) las unidades de la métrica. No se admiten todos los tipos de valor y de métrica para las métricas definidas por el usuario. Para obtener más información sobre estos campos, consulta el artículo sobre los tipos de valores y los tipos de métricas.
Elige las etiquetas de la métrica, sus nombres, tipos de valor y descripciones.
Determina los recursos monitorizados en los que se escriben los datos de métricas. Elige una de las siguientes opciones:
aws_ec2_instance
: Instancia de Amazon EC2.dataflow_job
: Tarea de Dataflow.gae_instance
: instancia de App Engine.gce_instance
: Instancia de Compute Engine.generic_node
: nodo de computación especificado por el usuario.generic_task
: Tarea definida por el usuario.gke_container
: Instancia de contenedor de GKE.global
: Usa este recurso cuando no haya otro tipo de recurso adecuado. En la mayoría de los casos,generic_node
ogeneric_task
son mejores opciones queglobal
.k8s_cluster
: Clúster de Kubernetes.k8s_container
: Contenedor de Kubernetes.k8s_node
: Nodo de Kubernetes.k8s_pod
: Pod de Kubernetes.
Crea un objeto
MetricDescriptor
y, a continuación, pásalo como argumento a una llamada al métodometricDescriptors.create
.
Normalmente, es un error llamar a metricDescriptors.create
con el mismo nombre de tipo que un descriptor de métrica. Sin embargo, si todos los campos del nuevo objeto MetricDescriptor
coinciden exactamente con los campos del descriptor, no se producirá ningún error, pero tampoco tendrá ningún efecto.
En el siguiente ejemplo, se crea una métrica de tipo Gauge.
Protocolo
Para crear un descriptor de métrica, usa el método metricDescriptors.create
.
Puedes ejecutar este método mediante el widget Explorador de APIs de la página de referencia del método. Consulta Explorador de APIs para obtener más información.
Estos son los parámetros de ejemplo de metricDescriptors.create
:
- name (URL):
projects/[PROJECT_ID]
Cuerpo de la solicitud: proporciona un objeto
MetricDescriptor
como el siguiente:{ "name": "", "description": "Daily sales records from all branch stores.", "displayName": "Sales", "type": "custom.googleapis.com/stores/sales", "metricKind": "GAUGE", "valueType": "DOUBLE", "unit": "{USD}", "labels": [ { "key": "store_id", "valueType": "STRING", "description": "The ID of the store." }, ], }
Proporciona estos valores en los campos del widget. Usa el ID de tu proyecto
en lugar de [PROJECT_ID
]:
Haz clic en el botón Ejecutar para ejecutar el método.
Cuando se crea una métrica, se ignora el campo name
de MetricDescriptor
y se puede omitir. El método create
devuelve el nuevo descriptor de métrica con el campo name
rellenado, que en este ejemplo sería el siguiente:
"name": "projects/[PROJECT_ID]/metricDescriptors/custom.googleapis.com/stores/daily_sales"
Por ejemplo, si quieres obtener el descriptor de una métrica, debes usar este nombre.
C#
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Go
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
PHP
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Ruby
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Si tienes problemas, consulta el artículo Solucionar problemas con las llamadas a la API.
Paso siguiente: Consulta Escribir métricas definidas por el usuario.
Escribir métricas definidas por el usuario
Solo puede escribir datos en tipos de métricas de métricas definidas por el usuario. Para escribir tus datos, usa el método timeSeries.create
.
Si la serie temporal ya existe, este método añade un nuevo punto de datos a la serie temporal. Si la serie temporal no existe, este método la crea y añade los datos.
Para escribir puntos de datos, debes enviar una lista de objetos TimeSeries
a timeSeries.create
.
El tamaño máximo de la lista es de 200 y cada objeto de la lista debe especificar una serie temporal diferente:
- Los valores de los campos
metric
yresource
identifican un objetoTimeSeries
específico. Estos campos representan el tipo de métrica de los datos y el recurso monitorizado del que se han recogido los datos. - Omite los campos
metricKind
yvalueType
, ya que se ignoran al escribir puntos de datos. Cada objeto
TimeSeries
debe contener solo un objetoPoint
:- El valor y el intervalo de tiempo del punto deben ser coherentes con la definición del tipo de métrica. Para obtener información sobre los intervalos de tiempo de los distintos tipos de métricas, consulta
TimeInterval
. - El intervalo de tiempo del punto debe ser posterior a cualquier punto que ya esté en la serie temporal.
- La hora de finalización del intervalo no debe ser de hace más de 25 horas ni de más de cinco minutos.
- El valor y el intervalo de tiempo del punto deben ser coherentes con la definición del tipo de métrica. Para obtener información sobre los intervalos de tiempo de los distintos tipos de métricas, consulta
Para escribir más de un punto en la misma serie temporal, usa una llamada independiente al método
timeSeries.create
para cada punto. No escribas datos en una sola serie temporal a una velocidad superior a un punto cada 5 segundos. Cuando añades puntos de datos a diferentes series temporales, no hay limitación de frecuencia.
Protocolo
Para escribir datos de métricas, usa el método timeSeries.create
.
Puedes ejecutar este método mediante el widget Explorador de APIs de la página de referencia del método. Consulta más información en el explorador de APIs.
Para escribir un punto en la métrica stores/daily_sales
creada en la sección Creación manual de descriptores de métricas, sigue estos pasos:
- Ve a la página de referencia de
timeSeries.create
. - Proporciona los parámetros que se indican a continuación al widget Explorador de APIs.
- Haz clic en el botón Ejecutar.
Usa los siguientes parámetros de ejemplo:
- name:
projects/[PROJECT_ID]
Cuerpo de la solicitud: incluye una lista de objetos
TimeSeries
. El siguiente ejemplo solo tiene una serie temporal en la lista.{ "timeSeries": [ { "metric": { "type": "custom.googleapis.com/my_metric", "labels": { "my_label": "my_value" } }, "resource": { "type": "gce_instance", "labels": { "project_id": "[PROJECT_ID]", "instance_id": "1234567890123456789", "zone": "us-central1-f" } }, "points": [ { "interval": { "endTime": "2018-06-01T10:00:00-04:00" }, "value": { "doubleValue": 123.45 } } ] } ] }
C#
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Go
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
PHP
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Ruby
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Si tienes problemas, consulta el artículo Solucionar problemas con las llamadas a la API.
Eliminar métricas definidas por el usuario
Para eliminar una métrica definida por el usuario, elimina su descriptor de métrica. No puedes eliminar los datos de serie temporal almacenados en tu proyecto Google Cloud . Sin embargo, si eliminas el descriptor de métricas, no se podrá acceder a los datos. Los datos caducan y se eliminan de acuerdo con la política de conservación de datos.
No puedes eliminar el descriptor de métricas de una métrica integrada.
Para eliminar el descriptor de métrica, llama al método metricDescriptors.delete
.
Protocolo
Para eliminar un descriptor de métrica, utiliza el método metricDescriptors.delete
.
Puedes ejecutar este método mediante el widget Explorador de APIs de la página de referencia del método. Consulta más información en el explorador de APIs.
Para eliminar la métrica stores/daily_sales
creada en Creación manual de descriptores de métricas, siga estos pasos:
- Ve a la
página de referencia de
metricDescriptors.delete
: Proporciona el nombre del descriptor de métricas al widget Explorador de APIs:
name:
projects/[PROJECT_ID]/metricDescriptors/custom.googleapis.com/stores/daily_sales
Haz clic en el botón Ejecutar.
C#
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Go
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
PHP
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Ruby
Para autenticarte en Monitoring, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Si tienes problemas, consulta el artículo Solucionar problemas con las llamadas a la API.
Modificar una métrica definida por el usuario
Para modificar una métrica definida por el usuario, debes actualizar el objeto MetricDescriptor
que define la métrica.
La única modificación admitida es añadir etiquetas.
Para añadir etiquetas a una métrica definida por el usuario, utilice el método timeSeries.create
e incluya las nuevas etiquetas con los datos de la serie temporal. Las etiquetas se añaden al descriptor de métrica cuando las etiquetas que intentas escribir son válidas y el número total de etiquetas es inferior a 30.
A continuación, los datos de la serie temporal se escriben como si la etiqueta hubiera estado ahí desde el principio.
Si quieres hacer algo más que añadir etiquetas, debes eliminar y volver a crear el descriptor de métrica. En este caso, perderá todos los datos de series temporales que se hayan recogido anteriormente del descriptor de métrica antiguo. Consulta más información en el artículo Eliminar métricas definidas por el usuario.
No puedes cambiar el nombre de una métrica.