14.13. Exposition de mesures personnalisées pour les machines virtuelles
OpenShift Container Platform comprend une pile de surveillance préconfigurée, préinstallée et auto-actualisée qui assure la surveillance des composants de base de la plate-forme. Cette pile de surveillance est basée sur le système de surveillance Prometheus. Prometheus est une base de données de séries temporelles et un moteur d'évaluation de règles pour les métriques.
En plus d'utiliser la pile de surveillance d'OpenShift Container Platform, vous pouvez activer la surveillance pour des projets définis par l'utilisateur à l'aide de la CLI et demander des mesures personnalisées qui sont exposées pour les machines virtuelles par le biais du service node-exporter
.
14.13.1. Configuration du service d'exportation de nœuds Copier lienLien copié sur presse-papiers!
L'agent node-exporter est déployé sur chaque machine virtuelle du cluster à partir de laquelle vous souhaitez collecter des métriques. Configurez l'agent node-exporter en tant que service pour exposer les mesures et processus internes associés aux machines virtuelles.
Conditions préalables
-
Install the OpenShift Container Platform CLI
oc
. -
Connectez-vous au cluster en tant qu'utilisateur disposant des privilèges
cluster-admin
. -
Créez l'objet
cluster-monitoring-config
ConfigMap
dans le projetopenshift-monitoring
. -
Configurez l'objet
user-workload-monitoring-config
ConfigMap
dans le projetopenshift-user-workload-monitoring
en réglantenableUserWorkload
surtrue
.
Procédure
Créez le fichier YAML
Service
. Dans l'exemple suivant, le fichier s'appellenode-exporter-service.yaml
.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Le service d'exportation de nœuds qui expose les métriques des machines virtuelles.
- 2
- L'espace de noms dans lequel le service est créé.
- 3
- L'étiquette du service. Le site
ServiceMonitor
utilise ce label pour faire correspondre ce service. - 4
- Le nom donné au port qui expose les métriques sur le port 9100 pour le service
ClusterIP
. - 5
- Le port cible utilisé par
node-exporter-service
pour écouter les demandes. - 6
- Le numéro de port TCP de la machine virtuelle configurée avec l'étiquette
monitor
. - 7
- L'étiquette utilisée pour faire correspondre les pods de la machine virtuelle. Dans cet exemple, tout module de machine virtuelle portant l'étiquette
monitor
et la valeurmetrics
sera pris en compte.
Créer le service node-exporter :
oc create -f node-exporter-service.yaml
$ oc create -f node-exporter-service.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.13.2. Configuration d'une machine virtuelle avec le service d'exportation de nœuds Copier lienLien copié sur presse-papiers!
Téléchargez le fichier node-exporter
sur la machine virtuelle. Ensuite, créez un service systemd
qui exécute le service node-exporter lorsque la machine virtuelle démarre.
Conditions préalables
-
Les pods du composant sont en cours d'exécution dans le projet
openshift-user-workload-monitoring
. -
Attribuez le rôle
monitoring-edit
aux utilisateurs qui doivent surveiller ce projet défini par l'utilisateur.
Procédure
- Connectez-vous à la machine virtuelle.
Téléchargez le fichier
node-exporter
sur la machine virtuelle en utilisant le chemin d'accès au répertoire qui s'applique à la version du fichiernode-exporter
.wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
$ wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Extraire l'exécutable et le placer dans le répertoire
/usr/bin
.sudo tar xvf node_exporter-1.3.1.linux-amd64.tar.gz \ --directory /usr/bin --strip 1 "*/node_exporter"
$ sudo tar xvf node_exporter-1.3.1.linux-amd64.tar.gz \ --directory /usr/bin --strip 1 "*/node_exporter"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un fichier
node_exporter.service
dans le répertoire suivant :/etc/systemd/system
. Ce fichier de servicesystemd
exécute le service node-exporter lorsque la machine virtuelle redémarre.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Activez et démarrez le service
systemd
.sudo systemctl enable node_exporter.service sudo systemctl start node_exporter.service
$ sudo systemctl enable node_exporter.service $ sudo systemctl start node_exporter.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
Vérifiez que l'agent node-exporter rapporte les métriques de la machine virtuelle.
curl http://localhost:9100/metrics
$ curl http://localhost:9100/metrics
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
go_gc_duration_seconds{quantile="0"} 1.5244e-05 go_gc_duration_seconds{quantile="0.25"} 3.0449e-05 go_gc_duration_seconds{quantile="0.5"} 3.7913e-05
go_gc_duration_seconds{quantile="0"} 1.5244e-05 go_gc_duration_seconds{quantile="0.25"} 3.0449e-05 go_gc_duration_seconds{quantile="0.5"} 3.7913e-05
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.13.3. Création d'une étiquette de surveillance personnalisée pour les machines virtuelles Copier lienLien copié sur presse-papiers!
Pour permettre l'interrogation de plusieurs machines virtuelles à partir d'un seul service, ajoutez une étiquette personnalisée dans le fichier YAML de la machine virtuelle.
Conditions préalables
-
Install the OpenShift Container Platform CLI
oc
. -
Connectez-vous en tant qu'utilisateur disposant des privilèges
cluster-admin
. - Accès à la console web pour arrêter et redémarrer une machine virtuelle.
Procédure
Modifiez la spécification
template
de votre fichier de configuration de la machine virtuelle. Dans cet exemple, l'étiquettemonitor
a la valeurmetrics
.spec: template: metadata: labels: monitor: metrics
spec: template: metadata: labels: monitor: metrics
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Arrêtez et redémarrez la machine virtuelle pour créer un nouveau pod avec le nom d'étiquette donné à l'étiquette
monitor
.
14.13.3.1. Interroger le service node-exporter pour obtenir des métriques Copier lienLien copié sur presse-papiers!
Les mesures sont exposées pour les machines virtuelles par le biais d'un point de terminaison de service HTTP sous le nom canonique /metrics
. Lorsque vous demandez des métriques, Prometheus récupère directement les métriques à partir du point de terminaison des métriques exposé par les machines virtuelles et présente ces métriques pour affichage.
Conditions préalables
-
Vous avez accès au cluster en tant qu'utilisateur disposant des privilèges
cluster-admin
ou du rôlemonitoring-edit
. - Vous avez activé la surveillance du projet défini par l'utilisateur en configurant le service node-exporter.
Procédure
Obtenir le point de terminaison du service HTTP en spécifiant l'espace de noms du service :
oc get service -n <namespace> <node-exporter-service>
$ oc get service -n <namespace> <node-exporter-service>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour obtenir la liste de toutes les mesures disponibles pour le service node-exporter, interrogez la ressource
metrics
.curl http://<172.30.226.162:9100>/metrics | grep -vE "^#|^$"
$ curl http://<172.30.226.162:9100>/metrics | grep -vE "^#|^$"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.13.4. Création d'une ressource ServiceMonitor pour le service d'exportation de nœuds Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser une bibliothèque client Prometheus et récupérer des métriques à partir du point de terminaison /metrics
pour accéder aux métriques exposées par le service node-exporter et les afficher. Utilisez une définition de ressource personnalisée (CRD) ServiceMonitor
pour surveiller le service d'exportation de nœuds.
Conditions préalables
-
Vous avez accès au cluster en tant qu'utilisateur disposant des privilèges
cluster-admin
ou du rôlemonitoring-edit
. - Vous avez activé la surveillance du projet défini par l'utilisateur en configurant le service node-exporter.
Procédure
Créez un fichier YAML pour la configuration de la ressource
ServiceMonitor
. Dans cet exemple, le moniteur de services correspond à tout service portant l'étiquettemetrics
et interroge le portexmet
toutes les 30 secondes.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez la configuration
ServiceMonitor
pour le service node-exporter.oc create -f node-exporter-metrics-monitor.yaml
$ oc create -f node-exporter-metrics-monitor.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.13.4.1. Accès au service d'exportateur de nœuds en dehors du cluster Copier lienLien copié sur presse-papiers!
Vous pouvez accéder au service node-exporter en dehors du cluster et visualiser les métriques exposées.
Conditions préalables
-
Vous avez accès au cluster en tant qu'utilisateur disposant des privilèges
cluster-admin
ou du rôlemonitoring-edit
. - Vous avez activé la surveillance du projet défini par l'utilisateur en configurant le service node-exporter.
Procédure
Exposer le service node-exporter.
oc expose service -n <namespace> <node_exporter_service_name>
$ oc expose service -n <namespace> <node_exporter_service_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Obtenir le FQDN (Fully Qualified Domain Name) pour l'itinéraire.
oc get route -o=custom-columns=NAME:.metadata.name,DNS:.spec.host
$ oc get route -o=custom-columns=NAME:.metadata.name,DNS:.spec.host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME DNS node-exporter-service node-exporter-service-dynamation.apps.cluster.example.org
NAME DNS node-exporter-service node-exporter-service-dynamation.apps.cluster.example.org
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Utilisez la commande
curl
pour afficher les mesures du service node-exporter.curl -s http://node-exporter-service-dynamation.apps.cluster.example.org/metrics
$ curl -s http://node-exporter-service-dynamation.apps.cluster.example.org/metrics
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
go_gc_duration_seconds{quantile="0"} 1.5382e-05 go_gc_duration_seconds{quantile="0.25"} 3.1163e-05 go_gc_duration_seconds{quantile="0.5"} 3.8546e-05 go_gc_duration_seconds{quantile="0.75"} 4.9139e-05 go_gc_duration_seconds{quantile="1"} 0.000189423
go_gc_duration_seconds{quantile="0"} 1.5382e-05 go_gc_duration_seconds{quantile="0.25"} 3.1163e-05 go_gc_duration_seconds{quantile="0.5"} 3.8546e-05 go_gc_duration_seconds{quantile="0.75"} 4.9139e-05 go_gc_duration_seconds{quantile="1"} 0.000189423
Copy to Clipboard Copied! Toggle word wrap Toggle overflow