For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/public-cloud/containers-orchestration/managed-kubernetes/monitoring-instances-prometheus-grafana.md.

Collecter des métriques d'instances Public Cloud avec Prometheus sur un Managed Kubernetes Service OVHcloud

Voir en Markdown

Découvrez comment collecter des métriques depuis des VPS, des instances Public Cloud ou des serveurs dédiés avec Prometheus sur un Managed Kubernetes Service OVHcloud

Objectif

Ce tutoriel vous montre comment configurer l'opérateur Prometheus pour monitorer un exporter statique, des VPS OVHcloud, des serveurs dédiés OVHcloud ou des instances Public Cloud OpenStack.

Avant de commencer

Ce tutoriel suppose que :

Warning

Information importante :

  • Ce processus node exporter doit être sécurisé ; cela ne fait pas l'objet de ce tutoriel.
Warning

Information importante :

  • Utilisez au minimum la version 0.75.1 de l'opérateur Prometheus prometheus-community/kube-prometheus-stack. Vous pouvez utiliser l'option --set prometheusOperator.image.tag="v0.75.1" lors de l'installation du chart pour la définir.
Info

Ce tutoriel utilise à titre d'exemple un nœud-exporter à scraper, mais il peut être adapté à n'importe quel exporter, en ajustant l'IP et le port d'écoute.

À l'étape suivante, vous avez besoin du nom de release de votre chart. Pour l'obtenir, utilisez simplement la commande suivante :

helm list -A
NAME                                NAMESPACE     REVISION    UPDATED                                 STATUS      CHART                           APP VERSION
kube-prometheus-stack-1720169205    prometheus    1           2024-07-05 10:47:00.03314 +0200 CEST    deployed    kube-prometheus-stack-61.2.0    v0.75.0

Ici, le nom de release est kube-prometheus-stack-1720169205, référencé dans les étapes suivantes sous la forme <release_name>.

En pratique

Générer la configuration pour un exporter statique

Supposons que vous souhaitiez scraper l'exporter suivant : prometheus.demo.do.prometheus.io:9090.

Créez un fichier nommé static.yaml avec le contenu suivant :

apiVersion: monitoring.coreos.com/v1alpha1
kind: ScrapeConfig
metadata:
    name: static-config
    namespace: prometheus
    labels:
        release: `<release_name>`
spec:
    staticConfigs:
        - labels:
              job: prometheus
          targets:
              - prometheus.demo.do.prometheus.io:9090

Appliquez cette ressource personnalisée (CR) avec la commande suivante :

$ kubectl apply -f static.yaml
scrapeconfig.monitoring.coreos.com/static-config created

$ kubectl get -A scrapeconfig -n prometheus
NAMESPACE    NAME            AGE
prometheus   static-config   7m51s

Le rechargement automatique de la configuration Prometheus peut prendre quelques minutes.

Après quelques minutes, en vérifiant l'interface HTTP des cibles Prometheus, vous devriez pouvoir observer quelque chose comme ceci dans l'interface utilisateur (UI) de Prometheus :

Cible statique Prometheus

Générer la configuration pour OpenStack

Créez un utilisateur dédié dans votre projet Public Cloud avec le rôle Infrastructure Supervisor :

  1. Connectez-vous à l', rendez-vous dans la section Public Cloud, puis sélectionnez votre projet.
  2. Dans le menu de gauche, cliquez sur Utilisateurs & Rôles.
  3. Cliquez sur Ajouter un utilisateur, renseignez un nom d'utilisateur et une description facultative, puis cliquez sur Confirmer.
  4. Une fois l'utilisateur créé, cliquez sur le bouton ... situé à côté de celui-ci, puis sélectionnez Modifier les rôles.
  5. Activez le rôle Infrastructure Supervisor, puis enregistrez.

Créez un fichier openstack_user_password.yaml avec le contenu suivant :

apiVersion: v1
kind: Secret
metadata:
    name: openstack-user-password
    namespace: prometheus
type: Opaque
stringData:
    password: <user_password>

Appliquez ce secret à votre namespace Prometheus dans votre cluster Kubernetes avec la commande suivante :

kubectl apply -f openstack_user_password.yaml -n prometheus

Récupérez les informations de votre utilisateur OpenStack depuis l'outil en ligne de commande (consultez le guide Configurer les variables d'environnement OpenStack) pour la région que vous souhaitez scraper.

Cet exemple utilise la région GRA11.

Pour télécharger le fichier OpenRC, rendez-vous dans Utilisateurs & Rôles de votre projet Public Cloud, cliquez sur le bouton ... situé à côté de l'utilisateur, puis sélectionnez Télécharger le fichier RC OpenStack. Dans la fenêtre qui s'affiche, choisissez la région que vous souhaitez scraper (cet exemple utilise la région GRA11), puis confirmez le téléchargement.

$ source openrc.sh
Enter your OpenStack Password:

$ openstack user show user-xxxxxxx
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| default_project_id  | <project_id>                     |
| description         | Prometheus Operator.             |
| domain_id           | default                          |
| enabled             | True                             |
| id                  | <user_id>                        |
| name                | user-xxxxxxx                     |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

L'id est utilisé comme userid dans le openstack_sd_config.

Créez un fichier nommé openstack.yaml avec le contenu suivant :

apiVersion: monitoring.coreos.com/v1alpha1
kind: ScrapeConfig
metadata:
    name: openstack-sd-config
    namespace: prometheus
    labels:
        release: `<release_name>`
spec:
    openstackSDConfigs:
        - role: instance
          # specify the Public Cloud region to scrape
          region: "GRA11"
          identityEndpoint: "https://auth.cloud.ovh.net/v3"
          # userid can be found using the previously exposed command
          userid: "`<user_id>`"
          # password is exposed at user creation and can be reset from the OVHcloud Manager
          password:
              name: openstack-user-password
              key: password
    relabelings:
        # This section is used to keep only IPv4 IPs to avoid double scrape with IPv6
        - sourceLabels: [__address__]
          action: keep
          regex: ^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.?\b){4}:\d{1,5}$
        # This section is to force the listen port of the exporter to 9100
        - sourceLabels: [__address__]
          action: replace
          regex: "(.*)((?::))(?:[0-9]+)$"
          replacement: $1:9100
          targetLabel: __address__

Pour plus d'informations, consultez la documentation officielle de Prometheus.

Appliquez cette CR avec la commande suivante :

$ kubectl apply -f openstack.yaml
scrapeconfig.monitoring.coreos.com/openstack-sd-config created

$ kubectl get -A scrapeconfig -n prometheus
NAMESPACE    NAME                  AGE
prometheus   openstack-sd-config   20s
prometheus   static-config         8m7s

Le rechargement automatique de la configuration Prometheus peut prendre quelques minutes.

Après quelques minutes, en vérifiant l'interface HTTP des cibles Prometheus, vous devriez pouvoir observer quelque chose comme ceci dans l'UI de Prometheus :

Cibles OpenStack Prometheus

Générer la configuration pour les VPS OVHcloud

Créez des identifiants de script dédiés (comme décrit ici). Suivez notre tutoriel Premiers pas avec les API OVHcloud pour les générer via la , puis notez l'Application Key, l'Application Secret et la Consumer Key : vous en aurez besoin à l'étape suivante.

Warning

Information importante :

Ce sujet n'est pas couvert par ce tutoriel, mais vous devez restreindre les routes API auxquelles le token a accès.

Créez un fichier nommé ovhcloud_api_credentials.yaml contenant vos secrets API :

apiVersion: v1
kind: Secret
metadata:
    name: ovhcloud-api-credentials
    namespace: prometheus
type: Opaque
stringData:
    consumerKey: xxxxxxxxxxxxxxxxxxxxxxxxx
    applicationSecret: xxxxxxxxxxxxxxxxxxxxxxxxxx

Appliquez ce secret à votre namespace Prometheus dans votre cluster Kubernetes avec la commande suivante :

kubectl apply -f ovhcloud_api_credentials.yaml -n prometheus

Créez un fichier nommé ovhcloud.yaml avec le contenu suivant :

apiVersion: monitoring.coreos.com/v1alpha1
kind: ScrapeConfig
metadata:
    name: ovhcloud
    namespace: prometheus
    labels:
        release: `<release_name>`
spec:
    ovhcloudSDConfigs:
        - applicationKey: "xxxxxxxxxxxxxxxx"
          applicationSecret:
              name: ovhcloud-api-credentials
              key: applicationSecret
          consumerKey:
              name: ovhcloud-api-credentials
              key: consumerKey
          service: "VPS"
          endpoint: "ovh-eu"
    relabelings:
        - sourceLabels: [__address__]
          action: replace
          regex: ([^:]+)(?::\d+)?
          replacement: $1:9100
          targetLabel: __address__

Pour plus d'informations, consultez la documentation officielle de Prometheus.

Appliquez cette CR avec la commande suivante :

$ kubectl apply -f ovhcloud.yaml
scrapeconfig.monitoring.coreos.com/ovhcloud created

$ kubectl get -A scrapeconfig -n prometheus
NAMESPACE    NAME                  AGE
prometheus   openstack-sd-config   6m44s
prometheus   ovhcloud              14s
prometheus   static-config         14m

Le rechargement automatique de la configuration Prometheus peut prendre quelques minutes.

Après quelques minutes, en vérifiant l'interface HTTP des cibles Prometheus, vous devriez pouvoir observer quelque chose comme ceci dans l'UI de Prometheus :

Cibles OVHcloud Prometheus

Aller plus loin

Pour plus d'informations, consultez les liens suivants :

Pour une formation ou une assistance technique sur la mise en œuvre de nos solutions, contactez votre commercial ou consultez la page Professional Services pour obtenir un devis et faire analyser votre projet par nos experts.

Échangez avec notre communauté d'utilisateurs.

Cette page vous a-t-elle aidé ?