14.13. Exposition de mesures personnalisées pour les machines virtuelles


OpenShift Container Platform comprend une pile de surveillance préconfigurée, préinstallée et auto-actualisée qui assure la surveillance des composants de base de la plate-forme. Cette pile de surveillance est basée sur le système de surveillance Prometheus. Prometheus est une base de données de séries temporelles et un moteur d'évaluation de règles pour les métriques.

En plus d'utiliser la pile de surveillance d'OpenShift Container Platform, vous pouvez activer la surveillance pour des projets définis par l'utilisateur à l'aide de la CLI et demander des mesures personnalisées qui sont exposées pour les machines virtuelles par le biais du service node-exporter.

14.13.1. Configuration du service d'exportation de nœuds

L'agent node-exporter est déployé sur chaque machine virtuelle du cluster à partir de laquelle vous souhaitez collecter des métriques. Configurez l'agent node-exporter en tant que service pour exposer les mesures et processus internes associés aux machines virtuelles.

Conditions préalables

  • Install the OpenShift Container Platform CLI oc.
  • Connectez-vous au cluster en tant qu'utilisateur disposant des privilèges cluster-admin.
  • Créez l'objet cluster-monitoring-config ConfigMap dans le projet openshift-monitoring.
  • Configurez l'objet user-workload-monitoring-config ConfigMap dans le projet openshift-user-workload-monitoring en réglant enableUserWorkload sur true.

Procédure

  1. Créez le fichier YAML Service. Dans l'exemple suivant, le fichier s'appelle node-exporter-service.yaml.

    kind: Service
    apiVersion: v1
    metadata:
      name: node-exporter-service 1
      namespace: dynamation 2
      labels:
        servicetype: metrics 3
    spec:
      ports:
        - name: exmet 4
          protocol: TCP
          port: 9100 5
          targetPort: 9100 6
      type: ClusterIP
      selector:
        monitor: metrics 7
    1
    Le service d'exportation de nœuds qui expose les métriques des machines virtuelles.
    2
    L'espace de noms dans lequel le service est créé.
    3
    L'étiquette du service. Le site ServiceMonitor utilise ce label pour faire correspondre ce service.
    4
    Le nom donné au port qui expose les métriques sur le port 9100 pour le service ClusterIP.
    5
    Le port cible utilisé par node-exporter-service pour écouter les demandes.
    6
    Le numéro de port TCP de la machine virtuelle configurée avec l'étiquette monitor.
    7
    L'étiquette utilisée pour faire correspondre les pods de la machine virtuelle. Dans cet exemple, tout module de machine virtuelle portant l'étiquette monitor et la valeur metrics sera pris en compte.
  2. Créer le service node-exporter :

    $ oc create -f node-exporter-service.yaml

14.13.2. Configuration d'une machine virtuelle avec le service d'exportation de nœuds

Téléchargez le fichier node-exporter sur la machine virtuelle. Ensuite, créez un service systemd qui exécute le service node-exporter lorsque la machine virtuelle démarre.

Conditions préalables

  • Les pods du composant sont en cours d'exécution dans le projet openshift-user-workload-monitoring.
  • Attribuez le rôle monitoring-edit aux utilisateurs qui doivent surveiller ce projet défini par l'utilisateur.

Procédure

  1. Connectez-vous à la machine virtuelle.
  2. Téléchargez le fichier node-exporter sur la machine virtuelle en utilisant le chemin d'accès au répertoire qui s'applique à la version du fichier node-exporter.

    $ wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
  3. Extraire l'exécutable et le placer dans le répertoire /usr/bin.

    $ sudo tar xvf node_exporter-1.3.1.linux-amd64.tar.gz \
        --directory /usr/bin --strip 1 "*/node_exporter"
  4. Créez un fichier node_exporter.service dans le répertoire suivant : /etc/systemd/system. Ce fichier de service systemd exécute le service node-exporter lorsque la machine virtuelle redémarre.

    [Unit]
    Description=Prometheus Metrics Exporter
    After=network.target
    StartLimitIntervalSec=0
    
    [Service]
    Type=simple
    Restart=always
    RestartSec=1
    User=root
    ExecStart=/usr/bin/node_exporter
    
    [Install]
    WantedBy=multi-user.target
  5. Activez et démarrez le service systemd.

    $ sudo systemctl enable node_exporter.service
    $ sudo systemctl start node_exporter.service

Vérification

  • Vérifiez que l'agent node-exporter rapporte les métriques de la machine virtuelle.

    $ curl http://localhost:9100/metrics

    Exemple de sortie

    go_gc_duration_seconds{quantile="0"} 1.5244e-05
    go_gc_duration_seconds{quantile="0.25"} 3.0449e-05
    go_gc_duration_seconds{quantile="0.5"} 3.7913e-05

14.13.3. Création d'une étiquette de surveillance personnalisée pour les machines virtuelles

Pour permettre l'interrogation de plusieurs machines virtuelles à partir d'un seul service, ajoutez une étiquette personnalisée dans le fichier YAML de la machine virtuelle.

Conditions préalables

  • Install the OpenShift Container Platform CLI oc.
  • Connectez-vous en tant qu'utilisateur disposant des privilèges cluster-admin.
  • Accès à la console web pour arrêter et redémarrer une machine virtuelle.

Procédure

  1. Modifiez la spécification template de votre fichier de configuration de la machine virtuelle. Dans cet exemple, l'étiquette monitor a la valeur metrics.

    spec:
      template:
        metadata:
          labels:
            monitor: metrics
  2. Arrêtez et redémarrez la machine virtuelle pour créer un nouveau pod avec le nom d'étiquette donné à l'étiquette monitor.

14.13.3.1. Interroger le service node-exporter pour obtenir des métriques

Les mesures sont exposées pour les machines virtuelles par le biais d'un point de terminaison de service HTTP sous le nom canonique /metrics. Lorsque vous demandez des métriques, Prometheus récupère directement les métriques à partir du point de terminaison des métriques exposé par les machines virtuelles et présente ces métriques pour affichage.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur disposant des privilèges cluster-admin ou du rôle monitoring-edit.
  • Vous avez activé la surveillance du projet défini par l'utilisateur en configurant le service node-exporter.

Procédure

  1. Obtenir le point de terminaison du service HTTP en spécifiant l'espace de noms du service :

    $ oc get service -n <namespace> <node-exporter-service>
  2. Pour obtenir la liste de toutes les mesures disponibles pour le service node-exporter, interrogez la ressource metrics.

    $ curl http://<172.30.226.162:9100>/metrics | grep -vE "^#|^$"

    Exemple de sortie

    node_arp_entries{device="eth0"} 1
    node_boot_time_seconds 1.643153218e+09
    node_context_switches_total 4.4938158e+07
    node_cooling_device_cur_state{name="0",type="Processor"} 0
    node_cooling_device_max_state{name="0",type="Processor"} 0
    node_cpu_guest_seconds_total{cpu="0",mode="nice"} 0
    node_cpu_guest_seconds_total{cpu="0",mode="user"} 0
    node_cpu_seconds_total{cpu="0",mode="idle"} 1.10586485e+06
    node_cpu_seconds_total{cpu="0",mode="iowait"} 37.61
    node_cpu_seconds_total{cpu="0",mode="irq"} 233.91
    node_cpu_seconds_total{cpu="0",mode="nice"} 551.47
    node_cpu_seconds_total{cpu="0",mode="softirq"} 87.3
    node_cpu_seconds_total{cpu="0",mode="steal"} 86.12
    node_cpu_seconds_total{cpu="0",mode="system"} 464.15
    node_cpu_seconds_total{cpu="0",mode="user"} 1075.2
    node_disk_discard_time_seconds_total{device="vda"} 0
    node_disk_discard_time_seconds_total{device="vdb"} 0
    node_disk_discarded_sectors_total{device="vda"} 0
    node_disk_discarded_sectors_total{device="vdb"} 0
    node_disk_discards_completed_total{device="vda"} 0
    node_disk_discards_completed_total{device="vdb"} 0
    node_disk_discards_merged_total{device="vda"} 0
    node_disk_discards_merged_total{device="vdb"} 0
    node_disk_info{device="vda",major="252",minor="0"} 1
    node_disk_info{device="vdb",major="252",minor="16"} 1
    node_disk_io_now{device="vda"} 0
    node_disk_io_now{device="vdb"} 0
    node_disk_io_time_seconds_total{device="vda"} 174
    node_disk_io_time_seconds_total{device="vdb"} 0.054
    node_disk_io_time_weighted_seconds_total{device="vda"} 259.79200000000003
    node_disk_io_time_weighted_seconds_total{device="vdb"} 0.039
    node_disk_read_bytes_total{device="vda"} 3.71867136e+08
    node_disk_read_bytes_total{device="vdb"} 366592
    node_disk_read_time_seconds_total{device="vda"} 19.128
    node_disk_read_time_seconds_total{device="vdb"} 0.039
    node_disk_reads_completed_total{device="vda"} 5619
    node_disk_reads_completed_total{device="vdb"} 96
    node_disk_reads_merged_total{device="vda"} 5
    node_disk_reads_merged_total{device="vdb"} 0
    node_disk_write_time_seconds_total{device="vda"} 240.66400000000002
    node_disk_write_time_seconds_total{device="vdb"} 0
    node_disk_writes_completed_total{device="vda"} 71584
    node_disk_writes_completed_total{device="vdb"} 0
    node_disk_writes_merged_total{device="vda"} 19761
    node_disk_writes_merged_total{device="vdb"} 0
    node_disk_written_bytes_total{device="vda"} 2.007924224e+09
    node_disk_written_bytes_total{device="vdb"} 0

14.13.4. Création d'une ressource ServiceMonitor pour le service d'exportation de nœuds

Vous pouvez utiliser une bibliothèque client Prometheus et récupérer des métriques à partir du point de terminaison /metrics pour accéder aux métriques exposées par le service node-exporter et les afficher. Utilisez une définition de ressource personnalisée (CRD) ServiceMonitor pour surveiller le service d'exportation de nœuds.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur disposant des privilèges cluster-admin ou du rôle monitoring-edit.
  • Vous avez activé la surveillance du projet défini par l'utilisateur en configurant le service node-exporter.

Procédure

  1. Créez un fichier YAML pour la configuration de la ressource ServiceMonitor. Dans cet exemple, le moniteur de services correspond à tout service portant l'étiquette metrics et interroge le port exmet toutes les 30 secondes.

    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      labels:
        k8s-app: node-exporter-metrics-monitor
      name: node-exporter-metrics-monitor 1
      namespace: dynamation 2
    spec:
      endpoints:
      - interval: 30s 3
        port: exmet 4
        scheme: http
      selector:
        matchLabels:
          servicetype: metrics
    1
    Le nom du site ServiceMonitor.
    2
    L'espace de noms dans lequel le site ServiceMonitor est créé.
    3
    Intervalle auquel le port sera interrogé.
    4
    Le nom du port qui est interrogé toutes les 30 secondes
  2. Créez la configuration ServiceMonitor pour le service node-exporter.

    $ oc create -f node-exporter-metrics-monitor.yaml

14.13.4.1. Accès au service d'exportateur de nœuds en dehors du cluster

Vous pouvez accéder au service node-exporter en dehors du cluster et visualiser les métriques exposées.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur disposant des privilèges cluster-admin ou du rôle monitoring-edit.
  • Vous avez activé la surveillance du projet défini par l'utilisateur en configurant le service node-exporter.

Procédure

  1. Exposer le service node-exporter.

    $ oc expose service -n <namespace> <node_exporter_service_name>
  2. Obtenir le FQDN (Fully Qualified Domain Name) pour l'itinéraire.

    $ oc get route -o=custom-columns=NAME:.metadata.name,DNS:.spec.host

    Exemple de sortie

    NAME                    DNS
    node-exporter-service   node-exporter-service-dynamation.apps.cluster.example.org

  3. Utilisez la commande curl pour afficher les mesures du service node-exporter.

    $ curl -s http://node-exporter-service-dynamation.apps.cluster.example.org/metrics

    Exemple de sortie

    go_gc_duration_seconds{quantile="0"} 1.5382e-05
    go_gc_duration_seconds{quantile="0.25"} 3.1163e-05
    go_gc_duration_seconds{quantile="0.5"} 3.8546e-05
    go_gc_duration_seconds{quantile="0.75"} 4.9139e-05
    go_gc_duration_seconds{quantile="1"} 0.000189423

14.13.5. Ressources supplémentaires

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.