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

  1. Créez un fichier YAML pour la configuration du service. Dans cet exemple, il s'appelle prometheus-example-app.yaml.
  2. 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 projet ns1 défini par l'utilisateur. Ce service expose la métrique personnalisée version.

  3. Appliquer la configuration au cluster :

    $ oc apply -f prometheus-example-app.yaml

    Le déploiement du service prend un certain temps.

  4. 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 ou monitoring-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 projet ns1.

    Note

    L'exemple de service prometheus-example-app ne prend pas en charge l'authentification TLS.

Procédure

  1. Créez un fichier YAML pour la configuration de la ressource ServiceMonitor. Dans cet exemple, le fichier s'appelle example-app-service-monitor.yaml.
  2. 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'échantillonnage prometheus-example-app, qui inclut la métrique version.

    Note

    Une 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 champ namespaceSelector de la ressource ServiceMonitor est toujours ignoré.

  3. Appliquer la configuration au cluster :

    $ oc apply -f example-app-service-monitor.yaml

    Le déploiement de la ressource ServiceMonitor prend un certain temps.

  4. 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

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.