14.12. Requêtes Prometheus pour les ressources virtuelles
OpenShift Virtualization fournit des métriques que vous pouvez utiliser pour surveiller la consommation des ressources de l'infrastructure du cluster, y compris les vCPU, le réseau, le stockage et le swapping de la mémoire invitée. Vous pouvez également utiliser les métriques pour interroger l'état de la migration en direct.
Utilisez le tableau de bord de surveillance d'OpenShift Container Platform pour interroger les métriques de virtualisation.
14.12.1. Conditions préalables
-
Pour utiliser la métrique vCPU, l'argument noyau
schedstats=enable
doit être appliqué à l'objetMachineConfig
. Cet argument du noyau permet d'activer les statistiques du planificateur utilisées pour le débogage et le réglage des performances et ajoute une charge supplémentaire mineure au planificateur. Voir la documentation sur les tâches de configuration de la machine OpenShift Container Platform pour plus d'informations sur l'application d'un argument de noyau. - Pour que les requêtes de permutation de la mémoire des invités renvoient des données, la permutation de la mémoire doit être activée sur les invités virtuels.
14.12.2. A propos de l'interrogation des métriques
Le tableau de bord de surveillance d'OpenShift Container Platform vous permet d'exécuter des requêtes Prometheus Query Language (PromQL) pour examiner les mesures visualisées sur un graphique. Cette fonctionnalité fournit des informations sur l'état d'un cluster et de toute charge de travail définie par l'utilisateur que vous surveillez.
En tant que cluster administrator, vous pouvez interroger les métriques pour tous les projets principaux d'OpenShift Container Platform et les projets définis par l'utilisateur.
En tant que developer, vous devez spécifier un nom de projet lorsque vous interrogez les métriques. Vous devez disposer des privilèges requis pour afficher les métriques du projet sélectionné.
14.12.2.1. Interroger les métriques de tous les projets en tant qu'administrateur de cluster
En tant qu'administrateur de cluster ou en tant qu'utilisateur disposant de permissions de visualisation pour tous les projets, vous pouvez accéder aux métriques pour tous les projets par défaut d'OpenShift Container Platform et les projets définis par l'utilisateur dans l'interface utilisateur des métriques.
Conditions préalables
-
Vous avez accès au cluster en tant qu'utilisateur avec le rôle
cluster-admin
ou avec des permissions de visualisation pour tous les projets. -
Vous avez installé l'OpenShift CLI (
oc
).
Procédure
- Sélectionnez la perspective Administrator dans la console web de OpenShift Container Platform.
-
Sélectionnez Observe
Metrics. - Sélectionnez Insert Metric at Cursor pour afficher une liste de requêtes prédéfinies.
Pour créer une requête personnalisée, ajoutez votre requête Prometheus Query Language (PromQL) au champ Expression.
NoteLorsque vous saisissez une expression PromQL, des suggestions d'autocomplétion apparaissent dans une liste déroulante. Ces suggestions incluent des fonctions, des métriques, des étiquettes et des jetons de temps. Vous pouvez utiliser les flèches du clavier pour sélectionner l'un des éléments suggérés, puis appuyer sur Entrée pour l'ajouter à votre expression. Vous pouvez également déplacer le pointeur de votre souris sur un élément suggéré pour afficher une brève description de cet élément.
- Pour ajouter plusieurs requêtes, sélectionnez Add Query.
- Pour dupliquer une requête existante, sélectionnez à côté de la requête, puis choisissez Duplicate query.
- Pour supprimer une requête, sélectionnez à côté de la requête, puis choisissez Delete query.
- Pour empêcher l'exécution d'une requête, sélectionnez à côté de la requête et choisissez Disable query.
Pour exécuter les requêtes que vous avez créées, sélectionnez Run Queries. Les métriques des requêtes sont visualisées sur le graphique. Si une requête n'est pas valide, l'interface utilisateur affiche un message d'erreur.
NoteLes requêtes qui portent sur de grandes quantités de données peuvent dépasser le temps imparti ou surcharger le navigateur lors de l'affichage de graphiques de séries temporelles. Pour éviter cela, sélectionnez Hide graph et calibrez votre requête en utilisant uniquement le tableau des métriques. Ensuite, après avoir trouvé une requête réalisable, activez le tracé pour dessiner les graphiques.
- Facultatif : L'URL de la page contient maintenant les requêtes que vous avez exécutées. Pour réutiliser cet ensemble de requêtes à l'avenir, enregistrez cette URL.
14.12.2.2. Interroger les métriques pour des projets définis par l'utilisateur en tant que développeur
Vous pouvez accéder aux métriques d'un projet défini par l'utilisateur en tant que développeur ou en tant qu'utilisateur disposant d'autorisations de visualisation du projet.
Dans la perspective Developer, l'interface utilisateur Metrics comprend des requêtes prédéfinies sur l'unité centrale, la mémoire, la bande passante et les paquets réseau pour le projet sélectionné. Vous pouvez également exécuter des requêtes Prometheus Query Language (PromQL) personnalisées pour l'unité centrale, la mémoire, la bande passante, les paquets réseau et les métriques d'application pour le projet.
Les développeurs ne peuvent utiliser que la perspective Developer et non la perspective Administrator. En tant que développeur, vous ne pouvez interroger les métriques que pour un seul projet à la fois dans la page Observe -→ Metrics de la console web pour votre projet défini par l'utilisateur.
Conditions préalables
- Vous avez accès au cluster en tant que développeur ou en tant qu'utilisateur disposant d'autorisations de visualisation pour le projet dont vous consultez les métriques.
- Vous avez activé la surveillance pour les projets définis par l'utilisateur.
- Vous avez déployé un service dans un projet défini par l'utilisateur.
-
Vous avez créé une définition de ressource personnalisée (CRD)
ServiceMonitor
pour le service afin de définir la manière dont le service est surveillé.
Procédure
- Sélectionnez la perspective Developer dans la console web de OpenShift Container Platform.
-
Sélectionnez Observe
Metrics. - Dans la liste Project:, sélectionnez le projet pour lequel vous souhaitez afficher les mesures.
- Sélectionnez une requête dans la liste Select query ou créez une requête PromQL personnalisée basée sur la requête sélectionnée en sélectionnant Show PromQL.
Optionnel : Sélectionnez Custom query dans la liste Select query pour saisir une nouvelle requête. Au fur et à mesure de la saisie, des suggestions d'autocomplétion apparaissent dans une liste déroulante. Ces suggestions comprennent des fonctions et des mesures. Cliquez sur un élément suggéré pour le sélectionner.
NoteDans la perspective Developer, vous ne pouvez exécuter qu'une seule requête à la fois.
14.12.3. Mesures de virtualisation
Les descriptions des mesures suivantes comprennent des exemples de requêtes en Prometheus Query Language (PromQL). Ces mesures ne constituent pas une API et peuvent changer d'une version à l'autre.
Les exemples suivants utilisent les requêtes topk
qui spécifient une période de temps. Si des machines virtuelles sont supprimées au cours de cette période, elles peuvent toujours apparaître dans le résultat de la requête.
14.12.3.1. métriques vCPU
La requête suivante permet d'identifier les machines virtuelles qui attendent une entrée/sortie (E/S) :
kubevirt_vmi_vcpu_wait_seconds
- Renvoie le temps d'attente (en secondes) pour le vCPU d'une machine virtuelle. Type : Compteur.
Une valeur supérieure à '0' signifie que la vCPU veut s'exécuter, mais que le planificateur de l'hôte ne peut pas encore le faire. Cette impossibilité d'exécution indique qu'il y a un problème au niveau des entrées/sorties.
Pour interroger la métrique vCPU, l'argument de noyau schedstats=enable
doit d'abord être appliqué à l'objet MachineConfig
. Cet argument du noyau permet d'activer les statistiques de l'ordonnanceur utilisées pour le débogage et le réglage des performances et ajoute une charge supplémentaire mineure à l'ordonnanceur.
Exemple de requête sur le temps d'attente vCPU
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_vcpu_wait_seconds[6m]))) > 0 1
- 1
- Cette requête renvoie les 3 premières machines virtuelles en attente d'E/S à chaque instant sur une période de six minutes.
14.12.3.2. Mesures du réseau
Les requêtes suivantes permettent d'identifier les machines virtuelles qui saturent le réseau :
kubevirt_vmi_network_receive_bytes_total
- Renvoie la quantité totale de trafic reçu (en octets) sur le réseau de la machine virtuelle. Type : Compteur.
kubevirt_vmi_network_transmit_bytes_total
- Renvoie la quantité totale de trafic transmise (en octets) sur le réseau de la machine virtuelle. Type : Compteur.
Exemple d'interrogation sur le trafic réseau
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_network_receive_bytes_total[6m])) sum by (name, namespace) (rate(kubevirt_vmi_network_transmit_bytes_total[6m]))) > 0 1
- 1
- Cette requête renvoie les trois machines virtuelles qui transmettent le plus de trafic réseau à chaque instant sur une période de six minutes.
14.12.3.3. Mesures de stockage
14.12.3.3.1. Trafic lié au stockage
Les requêtes suivantes permettent d'identifier les machines virtuelles qui écrivent de grandes quantités de données :
kubevirt_vmi_storage_read_traffic_bytes_total
- Renvoie la quantité totale (en octets) du trafic lié au stockage de la machine virtuelle. Type : Compteur.
kubevirt_vmi_storage_write_traffic_bytes_total
- Renvoie la quantité totale d'écritures de stockage (en octets) du trafic lié au stockage de la machine virtuelle. Type : Compteur.
Exemple d'interrogation sur le trafic lié au stockage
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_storage_read_traffic_bytes_total[6m])) sum by (name, namespace) (rate(kubevirt_vmi_storage_write_traffic_bytes_total[6m]))) > 0 1
- 1
- Cette requête renvoie les 3 machines virtuelles qui effectuent le plus de trafic de stockage à chaque instant sur une période de six minutes.
14.12.3.3.2. Données de l'instantané de stockage
kubevirt_vmsnapshot_disks_restored_from_source_total
- Renvoie le nombre total de disques de machine virtuelle restaurés à partir de la machine virtuelle source. Type : Jauge.
kubevirt_vmsnapshot_disks_restored_from_source_bytes
- Renvoie la quantité d'espace en octets restaurée à partir de la machine virtuelle source. Type : Jauge.
Exemples de requêtes de données d'instantanés de stockage
kubevirt_vmsnapshot_disks_restored_from_source_total{vm_name="simple-vm", vm_namespace="default"} 1
- 1
- Cette requête renvoie le nombre total de disques de la machine virtuelle restaurés à partir de la machine virtuelle source.
kubevirt_vmsnapshot_disks_restored_from_source_bytes{vm_name="simple-vm", vm_namespace="default"} 1
- 1
- Cette requête renvoie la quantité d'espace en octets restaurée à partir de la machine virtuelle source.
14.12.3.3.3. Performance des E/S
Les requêtes suivantes permettent de déterminer les performances d'E/S des périphériques de stockage :
kubevirt_vmi_storage_iops_read_total
- Renvoie la quantité d'opérations d'E/S en écriture que la machine virtuelle effectue par seconde. Type : Compteur.
kubevirt_vmi_storage_iops_write_total
- Renvoie la quantité d'opérations d'E/S en lecture que la machine virtuelle effectue par seconde. Type : Compteur.
Exemple de requête sur les performances des E/S
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_storage_iops_read_total[6m])) sum by (name, namespace) (rate(kubevirt_vmi_storage_iops_write_total[6m]))) > 0 1
- 1
- Cette requête renvoie les 3 machines virtuelles effectuant le plus grand nombre d'opérations d'E/S par seconde à chaque instant sur une période de six minutes.
14.12.3.4. Mesures de permutation de la mémoire invitée
Les requêtes suivantes permettent d'identifier les invités autorisés à permuter qui effectuent le plus de permutations de mémoire :
kubevirt_vmi_memory_swap_in_traffic_bytes_total
- Renvoie la quantité totale (en octets) de mémoire que l'invité virtuel est en train d'échanger. Type : Jauge.
kubevirt_vmi_memory_swap_out_traffic_bytes_total
- Renvoie la quantité totale (en octets) de mémoire que l'invité virtuel est en train d'échanger. Type : Jauge.
Exemple de requête de permutation de mémoire
topk(3, sum by (name, namespace) (rate(kubevirt_vmi_memory_swap_in_traffic_bytes_total[6m])) sum by (name, namespace) (rate(kubevirt_vmi_memory_swap_out_traffic_bytes_total[6m]))) > 0 1
- 1
- Cette requête renvoie les 3 principales machines virtuelles pour lesquelles l'invité effectue le plus de permutations de mémoire à chaque instant sur une période de six minutes.
La permutation de la mémoire indique que la machine virtuelle est soumise à une pression de mémoire. L'augmentation de l'allocation de mémoire de la machine virtuelle peut atténuer ce problème.
14.12.4. Mesures de migration en temps réel
Les paramètres suivants peuvent être interrogés pour connaître l'état de la migration en temps réel :
kubevirt_migrate_vmi_data_processed_bytes
- La quantité de données du système d'exploitation invité (OS) qui a migré vers la nouvelle machine virtuelle (VM). Type : Jauge.
kubevirt_migrate_vmi_data_remaining_bytes
- Quantité de données du système d'exploitation invité restant à migrer. Type : Jauge.
kubevirt_migrate_vmi_dirty_memory_rate_bytes
- La vitesse à laquelle la mémoire devient sale dans le système d'exploitation invité. La mémoire sale est constituée de données qui ont été modifiées mais qui n'ont pas encore été écrites sur le disque. Type : Jauge.
kubevirt_migrate_vmi_pending_count
- Le nombre de migrations en attente. Type : Jauge.
kubevirt_migrate_vmi_scheduling_count
- Le nombre de migrations d'ordonnancement. Type : Jauge.
kubevirt_migrate_vmi_running_count
- Le nombre de migrations en cours. Type : Jauge.
kubevirt_migrate_vmi_succeeded
- Le nombre de migrations effectuées avec succès. Type : Jauge.
kubevirt_migrate_vmi_failed
- Le nombre de migrations qui ont échoué. Type : Jauge.