5.13. Configuration de la surveillance intégrée avec Prometheus
Ce guide décrit la prise en charge de la surveillance intégrée fournie par le SDK Operator à l'aide de l'opérateur Prometheus et détaille l'utilisation pour les auteurs d'opérateurs basés sur Go et Ansible.
5.13.1. Assistance à l'opérateur Prometheus Copier lienLien copié sur presse-papiers!
Prometheus est une boîte à outils open-source de surveillance des systèmes et d'alerte. L'opérateur Prometheus crée, configure et gère des clusters Prometheus fonctionnant sur des clusters basés sur Kubernetes, tels que OpenShift Container Platform.
Des fonctions d'aide existent par défaut dans le SDK de l'opérateur pour configurer automatiquement les métriques dans tout opérateur Go généré pour une utilisation sur les clusters où l'opérateur Prometheus est déployé.
5.13.2. Exposition de mesures personnalisées pour les opérateurs basés sur Go Copier lienLien copié sur presse-papiers!
					En tant qu'auteur d'un opérateur, vous pouvez publier des mesures personnalisées en utilisant le registre Prometheus global de la bibliothèque controller-runtime/pkg/metrics.
				
Conditions préalables
- Opérateur basé sur Go généré à l'aide de l'Operator SDK
 - Prometheus Operator, qui est déployé par défaut sur les clusters d'OpenShift Container Platform
 
Procédure
Dans votre projet Operator SDK, décompressez la ligne suivante dans le fichier
config/default/kustomization.yaml:../prometheus
../prometheusCopy to Clipboard Copied! Toggle word wrap Toggle overflow Créez une classe de contrôleur personnalisée pour publier des mesures supplémentaires à partir de l'opérateur. L'exemple suivant déclare les collecteurs
widgetsetwidgetFailuresen tant que variables globales, puis les enregistre avec la fonctioninit()dans le package du contrôleur :Exemple 5.18.
controllers/memcached_controller_test_metrics.gofichierCopy to Clipboard Copied! Toggle word wrap Toggle overflow Record to these collectors from any part of the reconcile loop in the
maincontroller class, which determines the business logic for the metric :Exemple 5.19.
controllers/memcached_controller.gofichierCopy to Clipboard Copied! Toggle word wrap Toggle overflow Construire et pousser l'opérateur :
make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>
$ make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Déployer l'opérateur :
make deploy IMG=<registry>/<user>/<image_name>:<tag>
$ make deploy IMG=<registry>/<user>/<image_name>:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer des définitions de rôle et de liaison de rôle pour permettre au moniteur de service de l'opérateur d'être scanné par l'instance Prometheus du cluster OpenShift Container Platform.
Les rôles doivent être attribués de manière à ce que les comptes de service disposent des autorisations nécessaires pour analyser les métriques de l'espace de noms :
Exemple 5.20.
config/prometheus/role.yamlrôleCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple 5.21.
config/prometheus/rolebinding.yamll'obligation de rôleCopy to Clipboard Copied! Toggle word wrap Toggle overflow Appliquer les rôles et les liaisons de rôles pour l'opérateur déployé :
oc apply -f config/prometheus/role.yaml
$ oc apply -f config/prometheus/role.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f config/prometheus/rolebinding.yaml
$ oc apply -f config/prometheus/rolebinding.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Définissez les étiquettes pour l'espace de noms que vous souhaitez analyser, ce qui active la surveillance du cluster OpenShift pour cet espace de noms :
oc label namespace <operator_namespace> openshift.io/cluster-monitoring="true"
$ oc label namespace <operator_namespace> openshift.io/cluster-monitoring="true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
Vérification
- 
							Interroger et visualiser les métriques dans la console web d'OpenShift Container Platform. Vous pouvez utiliser les noms définis dans la classe de contrôleur personnalisé, par exemple 
widgets_totaletwidget_failures_total. 
5.13.3. Exposer des métriques personnalisées pour les opérateurs basés sur Ansible Copier lienLien copié sur presse-papiers!
					En tant qu'auteur d'opérateurs créant des opérateurs basés sur Ansible, vous pouvez utiliser le module osdk_metrics de l'Operator SDK pour exposer des métriques personnalisées d'opérateurs et d'opérandes, émettre des événements et prendre en charge la journalisation.
				
Conditions préalables
- Opérateur basé sur Ansible généré à l'aide de l'Operator SDK
 - Prometheus Operator, qui est déployé par défaut sur les clusters d'OpenShift Container Platform
 
Procédure
Générer un opérateur basé sur Ansible. Cet exemple utilise un domaine
testmetrics.com:operator-sdk init \ --plugins=ansible \ --domain=testmetrics.com$ operator-sdk init \ --plugins=ansible \ --domain=testmetrics.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow Créez une API
metrics. Cet exemple utilise unkindnomméTestmetrics:operator-sdk create api \ --group metrics \ --version v1 \ --kind Testmetrics \ --generate-role$ operator-sdk create api \ --group metrics \ --version v1 \ --kind Testmetrics \ --generate-roleCopy to Clipboard Copied! Toggle word wrap Toggle overflow Modifiez le fichier
roles/testmetrics/tasks/main.ymlet utilisez le moduleosdk_metricspour créer des mesures personnalisées pour votre projet Operator :Exemple 5.22. Exemple de fichier
roles/testmetrics/tasks/main.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
Vérification
Exécutez votre opérateur sur un cluster. Par exemple, pour utiliser la méthode "run as a deployment" :
Construire l'image de l'opérateur et l'envoyer dans un registre :
make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>
$ make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Installer l'opérateur sur un cluster :
make install
$ make installCopy to Clipboard Copied! Toggle word wrap Toggle overflow Déployer l'opérateur :
make deploy IMG=<registry>/<user>/<image_name>:<tag>
$ make deploy IMG=<registry>/<user>/<image_name>:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
Créer une ressource personnalisée (CR)
Testmetrics:Définir les spécifications du CR :
Exemple 5.23. Exemple de fichier
config/samples/metrics_v1_testmetrics.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Créer l'objet :
oc create -f config/samples/metrics_v1_testmetrics.yaml
$ oc create -f config/samples/metrics_v1_testmetrics.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
Obtenez les détails de la capsule :
oc get pods
$ oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME READY STATUS RESTARTS AGE ansiblemetrics-controller-manager-<id> 2/2 Running 0 149m testmetrics-sample-memcached-<id> 1/1 Running 0 147m
NAME READY STATUS RESTARTS AGE ansiblemetrics-controller-manager-<id> 2/2 Running 0 149m testmetrics-sample-memcached-<id> 1/1 Running 0 147mCopy to Clipboard Copied! Toggle word wrap Toggle overflow Obtenir les détails du point de terminaison :
oc get ep
$ oc get epCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME ENDPOINTS AGE ansiblemetrics-controller-manager-metrics-service 10.129.2.70:8443 150m
NAME ENDPOINTS AGE ansiblemetrics-controller-manager-metrics-service 10.129.2.70:8443 150mCopy to Clipboard Copied! Toggle word wrap Toggle overflow Demander un jeton de mesure personnalisé :
token=`oc create token prometheus-k8s -n openshift-monitoring`
$ token=`oc create token prometheus-k8s -n openshift-monitoring`Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifier les valeurs des métriques :
Vérifier la valeur de
my_counter_metric:oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza
$ oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza tion: Bearer $token" 'https://10.129.2.70:8443/metrics' | grep my_counterCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
HELP my_counter_metric Add 3.14 to the counter TYPE my_counter_metric counter my_counter_metric 2
HELP my_counter_metric Add 3.14 to the counter TYPE my_counter_metric counter my_counter_metric 2Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifier la valeur de
my_gauge_metric:oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza
$ oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza tion: Bearer $token" 'https://10.129.2.70:8443/metrics' | grep gaugeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
HELP my_gauge_metric Create my gauge and set it to 2.
HELP my_gauge_metric Create my gauge and set it to 2.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez les valeurs
my_histogram_metricetmy_summary_metric:oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza
$ oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza tion: Bearer $token" 'https://10.129.2.70:8443/metrics' | grep ObserveCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
HELP my_histogram_metric Observe my histogram HELP my_summary_metric Observe my summary
HELP my_histogram_metric Observe my histogram HELP my_summary_metric Observe my summaryCopy to Clipboard Copied! Toggle word wrap Toggle overflow