8.2. Mise en place de la collecte de métriques pour des projets définis par l'utilisateur
Vous pouvez créer une ressource ServiceMonitor
pour extraire des métriques d'un point d'extrémité de service dans un projet défini par l'utilisateur. Cela suppose que votre application utilise une bibliothèque client Prometheus pour exposer les métriques au nom canonique /metrics
.
Cette section décrit comment déployer un exemple de service dans un projet défini par l'utilisateur, puis créer une ressource ServiceMonitor
qui définit comment ce service doit être contrôlé.
8.2.1. Déploiement d'un exemple de service
Pour tester la surveillance d'un service dans un projet défini par l'utilisateur, vous pouvez déployer un exemple de service.
Procédure
-
Créez un fichier YAML pour la configuration du service. Dans cet exemple, il s'appelle
prometheus-example-app.yaml
. Ajoutez au fichier les détails de déploiement et de configuration des services suivants :
apiVersion: v1 kind: Namespace metadata: name: ns1 --- apiVersion: apps/v1 kind: Deployment metadata: labels: app: prometheus-example-app name: prometheus-example-app namespace: ns1 spec: replicas: 1 selector: matchLabels: app: prometheus-example-app template: metadata: labels: app: prometheus-example-app spec: containers: - image: ghcr.io/rhobs/prometheus-example-app:0.4.1 imagePullPolicy: IfNotPresent name: prometheus-example-app --- apiVersion: v1 kind: Service metadata: labels: app: prometheus-example-app name: prometheus-example-app namespace: ns1 spec: ports: - port: 8080 protocol: TCP targetPort: 8080 name: web selector: app: prometheus-example-app type: ClusterIP
Cette configuration déploie un service nommé
prometheus-example-app
dans le projetns1
défini par l'utilisateur. Ce service expose la métrique personnaliséeversion
.Appliquer la configuration au cluster :
$ oc apply -f prometheus-example-app.yaml
Le déploiement du service prend un certain temps.
Vous pouvez vérifier que le pod fonctionne :
$ oc -n ns1 get pod
Exemple de sortie
NAME READY STATUS RESTARTS AGE prometheus-example-app-7857545cb7-sbgwq 1/1 Running 0 81m
8.2.2. Spécifier comment un service est contrôlé
Pour utiliser les métriques exposées par votre service, vous devez configurer la surveillance de OpenShift Container Platform pour récupérer les métriques à partir du point de terminaison /metrics
. Vous pouvez le faire en utilisant une définition de ressource personnalisée (CRD) ServiceMonitor
qui spécifie comment un service doit être surveillé, ou une CRD PodMonitor
qui spécifie comment un pod doit être surveillé. La première nécessite un objet Service
, tandis que la seconde n'en nécessite pas, ce qui permet à Prometheus de récupérer directement des métriques à partir du point de terminaison de métriques exposé par un pod.
Cette procédure vous montre comment créer une ressource ServiceMonitor
pour un service dans un projet défini par l'utilisateur.
Conditions préalables
-
Vous avez accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin
oumonitoring-edit
. - Vous avez activé la surveillance pour les projets définis par l'utilisateur.
Pour cet exemple, vous avez déployé le service exemple
prometheus-example-app
dans le projetns1
.NoteL'exemple de service
prometheus-example-app
ne prend pas en charge l'authentification TLS.
Procédure
-
Créez un fichier YAML pour la configuration de la ressource
ServiceMonitor
. Dans cet exemple, le fichier s'appelleexample-app-service-monitor.yaml
. Ajoutez les détails de configuration de la ressource
ServiceMonitor
suivants :apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: labels: k8s-app: prometheus-example-monitor name: prometheus-example-monitor namespace: ns1 spec: endpoints: - interval: 30s port: web scheme: http selector: matchLabels: app: prometheus-example-app
Ceci définit une ressource
ServiceMonitor
qui récupère les métriques exposées par le service d'échantillonnageprometheus-example-app
, qui inclut la métriqueversion
.NoteUne ressource
ServiceMonitor
dans un espace de noms défini par l'utilisateur ne peut découvrir que des services dans le même espace de noms. En d'autres termes, le champnamespaceSelector
de la ressourceServiceMonitor
est toujours ignoré.Appliquer la configuration au cluster :
$ oc apply -f example-app-service-monitor.yaml
Le déploiement de la ressource
ServiceMonitor
prend un certain temps.Vous pouvez vérifier que la ressource
ServiceMonitor
est en cours d'exécution :$ oc -n ns1 get servicemonitor
Exemple de sortie
NAME AGE prometheus-example-monitor 81m