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
../prometheus
Copy 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
widgets
etwidgetFailures
en tant que variables globales, puis les enregistre avec la fonctioninit()
dans le package du contrôleur :Exemple 5.18.
controllers/memcached_controller_test_metrics.go
fichierCopy to Clipboard Copied! Toggle word wrap Toggle overflow Record to these collectors from any part of the reconcile loop in the
main
controller class, which determines the business logic for the metric :Exemple 5.19.
controllers/memcached_controller.go
fichierCopy 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.yaml
rôleCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple 5.21.
config/prometheus/rolebinding.yaml
l'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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f config/prometheus/rolebinding.yaml
$ oc apply -f config/prometheus/rolebinding.yaml
Copy 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_total
etwidget_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.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez une API
metrics
. Cet exemple utilise unkind
nomméTestmetrics
:operator-sdk create api \ --group metrics \ --version v1 \ --kind Testmetrics \ --generate-role
$ operator-sdk create api \ --group metrics \ --version v1 \ --kind Testmetrics \ --generate-role
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Modifiez le fichier
roles/testmetrics/tasks/main.yml
et utilisez le moduleosdk_metrics
pour créer des mesures personnalisées pour votre projet Operator :Exemple 5.22. Exemple de fichier
roles/testmetrics/tasks/main.yml
Copy 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 install
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 une ressource personnalisée (CR)
Testmetrics
:Définir les spécifications du CR :
Exemple 5.23. Exemple de fichier
config/samples/metrics_v1_testmetrics.yaml
Copy 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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Obtenez les détails de la capsule :
oc get pods
$ oc get pods
Copy 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 147m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Obtenir les détails du point de terminaison :
oc get ep
$ oc get ep
Copy 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 150m
Copy 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_counter
Copy 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 2
Copy 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 gauge
Copy 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_metric
etmy_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 Observe
Copy 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 summary
Copy to Clipboard Copied! Toggle word wrap Toggle overflow