La création de métriques définies par l'utilisateur (également appelées métriques personnalisées) avec l'API Cloud Monitoring vous permet de capturer des mesures spécifiques à l'application, et de les représenter sous forme de graphique ou de créer des alertes, tout comme les métriques Cloud Monitoring intégrées. Comme les métriques intégrées, chaque métrique définie par l'utilisateur combine des points de données, un type de métrique qui définit ce que les points représentent et une ressource surveillée qui identifie l'origine des données.
Pour instrumenter votre application, nous vous recommandons d'utiliser un framework d'instrumentation Open Source neutre du point du vue du fournisseur, tel qu'OpenTelemetry, plutôt que des API spécifiques aux fournisseurs et aux produits ou des bibliothèques clientes. Pour en savoir plus sur ces frameworks, consultez Observabilité pour les développeurs d'applications et Choisir une approche d'instrumentation.
Vous ne pouvez pas utiliser l'API Monitoring pour créer des métriques basées sur les journaux, qui dérivent les données de métriques à partir des entrées de journal. À la place, Cloud Logging crée les structures de métriques et envoie les données à Cloud Monitoring pour vous. Consultez Créer des métriques de compteur et Créer des métriques de distribution.
Avant de commencer
Pour en savoir plus sur les structures qui sous-tendent toutes les métriques, consultez Métriques, séries temporelles et ressources.
Pour utiliser Cloud Monitoring, vous devez disposer d'un projet Google Cloud avec la facturation activée. Si nécessaire, procédez comme suit :
-
Dans la console Google Cloud , sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud .
Rôles requis pour sélectionner ou créer un projet
- Sélectionner un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
-
Créer un projet : pour créer un projet, vous devez disposer du rôle "Créateur de projet" (
roles/resourcemanager.projectCreator), qui contient l'autorisationresourcemanager.projects.create. Découvrez comment attribuer des rôles.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud .
- Assurez-vous que l'API Monitoring est activée. Pour en savoir plus, consultez la page Activer l'API Monitoring.
- Pour les applications exécutées en dehors de Google Cloud, votre projet Google Cloud doit authentifier votre application à l'aide des Identifiants par défaut de l'application (ADC) locaux. Pour en savoir plus, consultez Configurer les ADC pour un fournisseur de services cloud sur site ou pour un autre fournisseur.
Créer un type de métrique défini par l'utilisateur
Pour créer une métrique définie par l'utilisateur, vous devez soit définir un objet MetricDescriptor qui spécifie diverses informations sur la métrique, soit écrire des données de métrique. Lorsque vous écrivez des données de métriques, Monitoring crée le descripteur de la métrique pour vous en fonction de la structure des données que vous fournissez.
Pour en savoir plus sur la conception d'un descripteur de la métrique, consultez Descripteurs de métriques pour les métriques définies par l'utilisateur.
Création automatique de descripteurs de métriques
Si vous écrivez des données de métrique alors qu'un descripteur de la métrique pour cette métrique définie par l'utilisateur n'existe pas encore, un descripteur de la métrique est créé automatiquement. Toutefois, ce nouveau descripteur de la métrique peut ne pas correspondre exactement à ce que vous souhaitez. La création automatique de descripteurs de métriques implique certaines hypothèses et valeurs par défaut.
Cloud Monitoring crée un MetricDescriptor lorsque l'objet TimeSeries inclus dans un appel à timeSeries.create fait référence à un objet Metric qui spécifie un nom de type de métrique inexistant.
Cloud Monitoring utilise les règles suivantes pour renseigner le champ MetricDescriptor :
type: le type est copié à partir du champtypede l'objetMetric.name: le nom est créé à partir de l'ID du projet dans l'appel de méthode et de la valeur detypedans l'objetMetric.labels: étiquettes qui s'affichent dans l'objetMetric. Chaque descripteur de libellé du nouveau descripteur de métrique comporte les champs suivants :key: clé de libellé dans l'objetMetricvalueType:STRINGdescription: non défini
metricKind: le genre de métrique est défini surGAUGE, sauf si vous spécifiez le paramètremetricKindde l'objetTimeSeries. Lorsque vous spécifiezmetricKind, la nouvelle métrique est de ce genre. Vous ne pouvez spécifier que les typesGAUGEetCUMULATIVE.valueType: le type de valeur est extrait de la valeur saisie de l'Pointen cours d'écriture. Le type de valeur doit êtreBOOL,INT64,DOUBLEouDISTRIBUTION. Lorsque vous spécifiez un type de valeur dans le champvalueTypedeTimeSeries, ce type doit correspondre au type dePoint.unit: non définidescription:"Auto created custom metric.".displayName: non défini
Vous pouvez, dans un seul appel timeSeries.create, inclure plusieurs objets TimeSeries faisant référence au même type de métrique inexistant. Dans ce cas, les étiquettes du nouveau descripteur de la métrique sont constituées de l'union de toutes les étiquettes des objets Metric de toutes les séries temporelles de cet appel à create.
Étape suivante : consultez Écrire des métriques définies par l'utilisateur.
Création manuelle de descripteurs de métriques
Pour créer un descripteur de la métrique, procédez comme suit :
Déterminez la structure de votre descripteur de la métrique. Pour vous aider à faire ces choix, vous pouvez parcourir les métriques intégrées et examiner leurs données de séries temporelles :
Choisissez un nom de métrique pour votre métrique définie par l'utilisateur.
Choisissez le nom à afficher et la description de votre métrique. Le nom à afficher est utilisé dans la console Google Cloud .
Choisissez un ou plusieurs projets dans lesquels définir votre métrique définie par l'utilisateur et écrire ses données de série temporelle. Lorsque vous avez besoin de la même métrique dans plusieurs projets, créez des définitions identiques de la métrique dans chaque projet.
Déterminez le type, le type de valeur et (facultatif) les unités de la métrique. Tous les types de valeurs et de métriques ne sont pas compatibles avec les métriques définies par l'utilisateur. Pour en savoir plus sur ces champs, consultez la page Types de valeurs et genres de métriques.
Définissez les libellés de la métrique : noms, types de valeur et descriptions.
Déterminez les ressources surveillées sur lesquelles les données de métriques sont écrites. Faites votre choix dans la liste suivante :
aws_ec2_instance: instance Amazon EC2.dataflow_job: job Dataflow.gae_instance: instance App Engine.gce_instance: instance Compute Engine.generic_node: nœud de calcul spécifié par l'utilisateur.generic_task: tâche définie par l'utilisateur.gke_container: instance de conteneur GKE.global: utilisez cette ressource lorsqu'aucun autre type de ressource ne convient. Pour la plupart des cas d'utilisation,generic_nodeougeneric_tasksont de meilleurs choix queglobal.k8s_cluster: cluster Kubernetes.k8s_container: conteneur Kubernetes.k8s_node: nœud Kubernetes.k8s_pod: pod Kubernetes.
Créez un objet
MetricDescriptor, puis transmettez-le en tant qu'argument à un appel de la méthodemetricDescriptors.create.
L'appel de metricDescriptors.create avec le même nom de type qu'un descripteur de la métrique existant est généralement une erreur. Notez qu'une erreur ne survient pas si tous les champs du nouvel objet MetricDescriptor correspondent exactement aux champs du descripteur existant, mais l'appel n'a alors aucun effet.
Dans l'exemple suivant, vous allez créer une métrique de jauge.
Protocole
Pour créer un descripteur de la métrique, utilisez la méthode metricDescriptors.create.
Vous pouvez exécuter cette méthode à l'aide du widget APIs Explorer sur la page de référence de la méthode. Pour en savoir plus, consultez APIs Explorer.
Voici des exemples de paramètres pour metricDescriptors.create :
- name (URL) :
projects/[PROJECT_ID] Corps de la requête : fournissez un objet
MetricDescriptor, comme suit :{ "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." }, ], }
Indiquez ces valeurs dans les champs du widget, en utilisant l'ID de votre projet à la place de [PROJECT_ID] :
Cliquez sur le bouton Execute (Exécuter) pour exécuter la méthode.
Lors de la création d'une métrique, le champ name de MetricDescriptor est ignoré et peut être omis. La méthode create affiche le nouveau descripteur de métrique avec le champ name renseigné qui, dans cet exemple, se présente comme suit :
"name": "projects/[PROJECT_ID]/metricDescriptors/custom.googleapis.com/stores/daily_sales"
Par exemple, si vous souhaitez obtenir le descripteur d'une métrique, vous devez utiliser ce nom.
C#
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Go
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
PHP
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Ruby
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
En cas de problème, consultez Résoudre les problèmes liés aux appels d'API.
Étape suivante : consultez Écrire des métriques définies par l'utilisateur.
Écrire des métriques définies par l'utilisateur
Vous ne pouvez écrire des données que dans des types de métriques définis par l'utilisateur. Pour écrire vos données, utilisez la méthode timeSeries.create.
Lorsque la série temporelle existe, cette méthode ajoute un nouveau point de données à la série temporelle existante. Si la série temporelle n'existe pas, cette méthode la crée et ajoute les données.
Vous pouvez écrire des points de données en spécifiant une liste d'objets TimeSeries avec la méthode timeSeries.create.
La taille maximale de la liste est de 200 objets, et chacun doit spécifier une série temporelle différente :
- Les valeurs des champs
metricetresourceidentifient un objetTimeSeriesspécifique. Ces champs représentent le type de métrique des données et la ressource surveillée à partir de laquelle les données ont été collectées. - Il est inutile de renseigner les champs
metricKindetvalueType, car ils sont ignorés lors de l'écriture des points de données. Chaque objet
TimeSeriesne doit contenir qu'un seul objetPoint:- La valeur et l'intervalle de temps spécifiés pour le point doivent être cohérents avec la définition du type de métrique. Pour en savoir plus sur les intervalles de temps correspondant aux différents genres de métriques, consultez la page
TimeInterval. - L'intervalle de temps du point doit être ultérieur à tout point déjà présent dans la série temporelle.
- L'heure de fin de l'intervalle ne doit pas aller au-delà de 25 heures dans le passé ou de 5 minutes dans le futur.
- La valeur et l'intervalle de temps spécifiés pour le point doivent être cohérents avec la définition du type de métrique. Pour en savoir plus sur les intervalles de temps correspondant aux différents genres de métriques, consultez la page
Pour écrire plusieurs points dans la même série temporelle, utilisez un appel distinct à la méthode
timeSeries.createpour chaque point. N'écrivez pas de données dans une série temporelle unique plus rapidement qu'un point pour chaque tranche de 5 secondes. Lorsque vous ajoutez des points de données à différentes séries temporelles, il n'y a pas de limitation du débit.
Protocole
Pour écrire des données de métrique, utilisez la méthode timeSeries.create.
Vous pouvez exécuter cette méthode à l'aide du widget APIs Explorer sur la page de référence de la méthode. Pour en savoir plus, consultez APIs Explorer.
Pour écrire un point dans la métrique stores/daily_sales créée dans Création manuelle de descripteurs de métriques :
- Accédez à la page de référence sur
timeSeries.create. - Indiquez les paramètres ci-dessous au widget APIs Explorer.
- Cliquez sur le bouton Execute (Exécuter).
Utilisez les exemples de paramètres suivants :
- name :
projects/[PROJECT_ID] Corps de la requête : incluez une liste d'objets
TimeSeries. L'exemple suivant ne comporte qu'une seule série temporelle.{ "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#
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Go
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
PHP
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Ruby
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
En cas de problème, consultez Résoudre les problèmes liés aux appels d'API.
Supprimer des métriques définies par l'utilisateur
Pour supprimer une métrique définie par l'utilisateur, supprimez son descripteur de la métrique. Vous ne pouvez pas supprimer les données de séries temporelles stockées dans votre projet Google Cloud . Toutefois, la suppression du descripteur de la métrique rend les données inaccessibles. Les données expirent et sont supprimées conformément aux règles de conservation des données.
Vous ne pouvez pas supprimer le descripteur de la métrique d'une métrique intégrée.
Pour supprimer votre descripteur de la métrique, appelez la méthode metricDescriptors.delete.
Protocole
Pour supprimer un descripteur de la métrique, utilisez la méthode metricDescriptors.delete.
Vous pouvez exécuter cette méthode à l'aide du widget APIs Explorer sur la page de référence de la méthode. Pour en savoir plus, consultez APIs Explorer.
Pour supprimer la métrique stores/daily_sales créée dans Création manuelle de descripteurs de métriques :
- Accédez à la page de référence de
metricDescriptors.delete. Indiquez le nom du descripteur de la métrique dans le widget APIs Explorer :
name :
projects/[PROJECT_ID]/metricDescriptors/custom.googleapis.com/stores/daily_salesCliquez sur le bouton Execute (Exécuter).
C#
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Go
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
PHP
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Ruby
Pour vous authentifier auprès de Monitoring, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
En cas de problème, consultez Résoudre les problèmes liés aux appels d'API.
Modifier une métrique définie par l'utilisateur
Pour modifier une métrique définie par l'utilisateur, vous devez mettre à jour l'objet MetricDescriptor qui définit la métrique.
La seule modification possible est l'ajout de libellés.
Pour ajouter des étiquettes à une métrique existante définie par l'utilisateur, utilisez la méthode timeSeries.create et incluez les nouvelles étiquettes avec les données de séries temporelles. Les étiquettes sont ajoutées au descripteur de métrique lorsque les étiquettes que vous tentez d'écrire sont valides et que le nombre total d'étiquettes est inférieur à 30.
Les données de séries temporelles sont ensuite écrites comme si l'étiquette avait été présente depuis le début.
Si vous souhaitez effectuer d'autres opérations que l'ajout d'étiquettes, vous devez supprimer et recréer le descripteur de la métrique. Dans ce cas, vous perdez toutes les données de séries temporelles précédemment collectées pour l'ancien descripteur de la métrique. Pour en savoir plus, consultez Supprimer des métriques définies par l'utilisateur.
Vous ne pouvez pas renommer une métrique.