6.2. Configuration de la collection de métriques pour les projets définis par l’utilisateur


Dans un projet défini par l’utilisateur, vous pouvez créer une ressource ServiceMonitor pour gratter des métriques à partir d’un point de terminaison de service. Cela suppose que votre application utilise une bibliothèque cliente 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 la façon dont ce service doit être surveillé.

6.2.1. Déploiement d’un service d’échantillonnage

Afin de tester la surveillance d’un service dans un projet défini par l’utilisateur, vous pouvez déployer un service d’échantillonnage.

Conditions préalables

  • En tant qu’utilisateur, vous avez accès au cluster avec le rôle cluster-admin ou en tant qu’utilisateur avec des autorisations administratives pour l’espace de noms.

Procédure

  1. Créez un fichier YAML pour la configuration du service. Dans cet exemple, il est appelé promesseheus-example-app.yaml.
  2. Ajoutez les détails de configuration de déploiement et de service suivants au fichier:

    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.2
            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
    Copy to Clipboard Toggle word wrap

    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 de version personnalisée.

  3. Appliquer la configuration au cluster:

    $ oc apply -f prometheus-example-app.yaml
    Copy to Clipboard Toggle word wrap

    Il faut du temps pour déployer le service.

  4. Il est possible de vérifier que le pod est en cours d’exécution:

    $ oc -n ns1 get pod
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    NAME                                      READY     STATUS    RESTARTS   AGE
    prometheus-example-app-7857545cb7-sbgwq   1/1       Running   0          81m
    Copy to Clipboard Toggle word wrap

6.2.2. Indiquer comment un service est surveillé

Afin d’utiliser les métriques exposées par votre service, vous devez configurer la surveillance OpenShift Dedicated pour gratter les métriques du point de terminaison /metrics. Il est possible de le faire à l’aide d’une définition de ressource personnalisée (CRD) de ServiceMonitor qui spécifie la façon dont un service doit être surveillé, ou un CRD PodMonitor qui spécifie comment un pod doit être surveillé. Le premier nécessite un objet Service, tandis que le second ne le fait pas, permettant à Prometheus de gratter directement les métriques à partir du point de terminaison métrique 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

  • En tant qu’utilisateur, vous avez accès au cluster avec le rôle dédié-admin ou le rôle de suivi-édition.
  • Dans cet exemple, vous avez déployé le service d’échantillons d’applications de promesseheus-example dans le projet ns1.

    Note

    Le service d’échantillon d’applications prometheus-example ne prend pas en charge l’authentification TLS.

Procédure

  1. Créez un nouveau fichier de configuration YAML nommé example-app-service-monitor.yaml.
  2. Ajouter une ressource ServiceMonitor au fichier YAML. L’exemple suivant crée un moniteur de service nommé prometheus-example-monitor pour gratter les métriques exposées par le service prometheus-example-app dans l’espace de noms ns1:

    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      name: prometheus-example-monitor
      namespace: ns1 
    1
    
    spec:
      endpoints:
      - interval: 30s
        port: web 
    2
    
        scheme: http
      selector: 
    3
    
        matchLabels:
          app: prometheus-example-app
    Copy to Clipboard Toggle word wrap
    1
    Indiquez un espace de noms défini par l’utilisateur où votre service s’exécute.
    2
    Indiquez les ports de point de terminaison à gratter par Prometheus.
    3
    Configurez un sélecteur pour correspondre à votre service en fonction de ses étiquettes de métadonnées.
    Note

    La 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. Autrement dit, le champ namespaceSelector de la ressource ServiceMonitor est toujours ignoré.

  3. Appliquer la configuration au cluster:

    $ oc apply -f example-app-service-monitor.yaml
    Copy to Clipboard Toggle word wrap

    Il faut du temps pour déployer la ressource ServiceMonitor.

  4. Assurez-vous que la ressource ServiceMonitor est en cours d’exécution:

    $ oc -n <namespace> get servicemonitor
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    NAME                         AGE
    prometheus-example-monitor   81m
    Copy to Clipboard Toggle word wrap

En utilisant les définitions de ressources personnalisées (CRD) de ServiceMonitor et PodMonitor, vous pouvez configurer l’authentification des points de terminaison de service pour la surveillance des projets définis par l’utilisateur.

Les échantillons suivants montrent différents paramètres d’authentification pour une ressource ServiceMonitor. Chaque échantillon montre comment configurer un objet secret correspondant qui contient des informations d’authentification et d’autres paramètres pertinents.

L’échantillon suivant montre les paramètres de jetons au porteur pour un objet secret nommé example-porter-auth dans l’espace de noms ns1:

Exemple de jeton de porteur secret

apiVersion: v1
kind: Secret
metadata:
  name: example-bearer-auth
  namespace: ns1
stringData:
  token: <authentication_token> 
1
Copy to Clipboard Toggle word wrap

1
Indiquez un jeton d’authentification.

L’échantillon suivant montre les paramètres d’authentification de jetons au porteur pour un CRD ServiceMonitor. L’exemple utilise un objet secret nommé example-porter-auth:

Exemple de paramètres d’authentification de jetons au porteur

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: prometheus-example-monitor
  namespace: ns1
spec:
  endpoints:
  - authorization:
      credentials:
        key: token 
1

        name: example-bearer-auth 
2

    port: web
  selector:
    matchLabels:
      app: prometheus-example-app
Copy to Clipboard Toggle word wrap

1
La clé qui contient le jeton d’authentification dans l’objet secret spécifié.
2
Le nom de l’objet Secret qui contient les identifiants d’authentification.
Important

Il ne faut pas utiliser BearerTokenFile pour configurer le jeton porteur. Lorsque vous utilisez la configuration BearerTokenFile, la ressource ServiceMonitor est rejetée.

6.2.3.2. Échantillon YAML pour l’authentification de base

L’échantillon suivant montre les paramètres d’authentification de base d’un objet secret nommé example-basic-auth dans l’espace de noms ns1:

Exemple de secret d’authentification de base

apiVersion: v1
kind: Secret
metadata:
  name: example-basic-auth
  namespace: ns1
stringData:
  user: <basic_username> 
1

  password: <basic_password>  
2
Copy to Clipboard Toggle word wrap

1
Indiquez un nom d’utilisateur pour l’authentification.
2
Indiquez un mot de passe pour l’authentification.

L’échantillon suivant montre les paramètres d’authentification de base pour un CRD ServiceMonitor. L’exemple utilise un objet secret nommé example-basic-auth:

Exemple de paramètres d’authentification de base

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: prometheus-example-monitor
  namespace: ns1
spec:
  endpoints:
  - basicAuth:
      username:
        key: user 
1

        name: example-basic-auth 
2

      password:
        key: password 
3

        name: example-basic-auth 
4

    port: web
  selector:
    matchLabels:
      app: prometheus-example-app
Copy to Clipboard Toggle word wrap

1
La clé qui contient le nom d’utilisateur dans l’objet secret spécifié.
2 4
Le nom de l’objet Secret qui contient l’authentification de base.
3
La clé qui contient le mot de passe dans l’objet secret spécifié.

6.2.3.3. Exemple d’authentification YAML avec OAuth 2.0

L’échantillon suivant montre les paramètres OAuth 2.0 pour un objet secret nommé example-oauth2 dans l’espace de noms ns1:

Exemple OAuth 2.0 secret

apiVersion: v1
kind: Secret
metadata:
  name: example-oauth2
  namespace: ns1
stringData:
  id: <oauth2_id> 
1

  secret: <oauth2_secret> 
2
Copy to Clipboard Toggle word wrap

1
Indiquez un identifiant Oauth 2.0.
2
Indiquez un secret Oauth 2.0.

L’échantillon suivant montre les paramètres d’authentification OAuth 2.0 pour un CRD ServiceMonitor. L’exemple utilise un objet secret nommé example-oauth2:

Exemple de paramètres d’authentification OAuth 2.0

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: prometheus-example-monitor
  namespace: ns1
spec:
  endpoints:
  - oauth2:
      clientId:
        secret:
          key: id 
1

          name: example-oauth2 
2

      clientSecret:
        key: secret 
3

        name: example-oauth2 
4

      tokenUrl: https://example.com/oauth2/token 
5

    port: web
  selector:
    matchLabels:
      app: prometheus-example-app
Copy to Clipboard Toggle word wrap

1
La clé qui contient l’identifiant OAuth 2.0 dans l’objet secret spécifié.
2 4
Le nom de l’objet secret qui contient les informations d’identification OAuth 2.0.
3
La clé qui contient le secret OAuth 2.0 dans l’objet secret spécifié.
5
L’URL utilisée pour récupérer un jeton avec le clientId et clientSecret spécifiés.
Retour au début
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. Découvrez nos récentes mises à jour.

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 le Blog 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.

Theme

© 2025 Red Hat