Aller au contenu

Surveiller des machines virtuelles sous Linux/Windows et des applications

La configuration de la surveillance des machines virtuelles Linux/Windows et des applications est mise en œuvre à l'aide de flux de travaux GitOps entièrement automatisés. Vous pouvez accéder à ces flux de travaux dans votre environnement d'administration.

Note

Dans ce tutoriel, veuillez remplacer les valeurs suivantes :

  • ZONE_NAME avec le nom de la zone d'administration (il commence par ocb-).
  • CUSTOMER_ENVIRONMENT avec le nom de l'environnement client où se trouve la machine virtuelle.

Principe

Pour surveiller une machine virtuelle (VM) située dans l'un de vos environnements client, vous devez :

  • installer le ou les exporteurs Prometheus spécifiques au système ou aux applications sur cette VM

  • déclarer les informations sur les exporteurs Prometheus dans le dépôt Git correspondant dans votre environnement d'administration.

Les pipelines internes Caascad CI/CD valideront syntaxiquement les informations des exporteurs, créeront et déploieront automatiquement toutes les configurations nécessaires à la récupération des métriques par Prometheus.

Important

Assurez-vous que la connectivité réseau existe entre le cluster K8s et la VM à surveiller et qu'il est possible d'établir une connexion entre l'instance Prometheus qui tourne dans le cluster et le port réseau de l'exporteur de la VM.

Installer les exporteurs Prometheus

En fonction de vos besoins de surveillance, vous pouvez déployer n'importe quel exporteur Prometheus.

Il existe une grande variété d'exporteurs officiels et tiers, alors consultez cette liste pour voir si l'un d'eux répond à vos besoins.

Voici quelques exemples d'installation d'un exporteur Prometheus spécifique à un système d'exploitation :

Flux de travail GitOps

Suivez la documentation du flux de travail GitOps avec feature_name=monitoring-vm.

Plusieurs actions sont possibles :

  • ajouter/modifier des informations sur la ou les VM qui doivent être surveillées
  • ajouter/modifier des informations sur le(s) exporteur(s) utilisé(s) pour surveiller les applications des VMs
  • supprimer des informations sur la VM surveillée
  • supprimer des informations sur les exporteurs surveillés

Valeurs

Cette section décrit toutes les valeurs de configuration possibles à spécifier dans le référentiel Git.

Format des valeurs

Exporteurs

La section exporters contient des informations sur les exporteurs déployés sur les machines virtuelles à partir desquelles Prometheus va récupérer les métriques.

Champ Description Schéma Requis
name Nom de l'exporteur string : doit être composé de caractères alphanumériques minuscules, '-' ou '.', et doit commencer et se terminer par un caractère alphanumérique vrai
port Port sur lequel l'exporteur de métriques est exposé entier : entre 1024 et 65535 vrai
interval Intervalle dans lequel les métriques doivent être récupérées string : doit être composé de nombres et doit se terminer par s vrai
path Chemin d'accès HTTP pour la recherche de métriques string : doit commencer par / vrai
relabelings Ajouter, modifier les étiquettes des métriques []*RelabelConfig faux
addresses Les adresses spécifient les machines virtuelles pour lesquelles Prometheus récupérera les métriques addresses vrai
Adresses

La section Adresses contient des informations sur la VM elle-même.

Champ Description Schéma Requis
hostname Nom de la VM. Utile pour différencier de quelle VM proviennent les métriques. string : doit être composé de caractères alphanumériques minuscules, '-' ou '.', et doit commencer et se terminer par un caractère alphanumérique vrai
ip IP privée de la VM. Les IP doivent être privées. string vrai

Exemple

exporters:
  - name: node-exporter # OS metrics exporter for Linux
    port: 9100
    interval: 15s
    path: /metrics
    relabelings:
      - replacement: demo_vm_node_exporter
        targetLabel: demo_label
    addresses:
      - hostname: vm-linux-1
        ip: 10.0.59.230
      - hostname: vm-linux-2
        ip: 10.0.21.114
  - name: windows-exporter # OS metrics exporter for Windows
    port: 9182
    interval: 30s
    path: /metrics
    addresses:
      - hostname: vm-windows-3
        ip: 10.0.59.235
      - hostname: vm-windows-4
        ip: 10.0.59.236
  - name : node-exporter # Exportateur de métriques d'OS pour Linux
    port : 9100
    intervalle : 15s
    chemin : /metrics
    relabelings :
      - remplacement : demo_vm_node_exporteur
        targetLabel : demo_label
    adresses :
      - nom d'hôte : vm-linux-1
        ip : 10.0.59.230
      - nom d'hôte : vm-linux-2
        ip : 10.0.21.114
  - name : windows-exporter # Exportateur de métriques d'OS pour Windows
    port : 9182
    intervalle : 30s
    chemin : /metrics
    adresses :
      - nom d'hôte : vm-windows-3
        ip : 10.0.59.235
      - nom d'hôte : vm-windows-4
        ip : 10.0.59.236

Dans cet exemple, quatre VMs sont surveillées :

  • VM 1 : ip 10.0.59.230

  • VM 2 : ip 10.0.21.114

  • VM 3 : ip 10.0.59.235

  • VM 4 : ip 10.0.59.236

Pour les deux premières VMs, l'exporteur installé est node_exporter.

Pour les deux dernières VMs, c'est windows_exporter.

Exemple de métriques récupérées pour les deux dernières VMs :

windows_cpu_processor_performance{cc_client="ocb-demo", cc_prom="cloud-app", cc_prom_source="janeway", cc_vm_source="vm-windows-3", core="0,0", endpoint="metrics", instance="10.0.59.235:9182", job="caascad-windows-exporter", namespace="caascad-monitoring-vm", prometheus="monitoring-app/app-prometheus", service="caascad-windows-exporter"} 2168316033206
windows_cpu_processor_performance{cc_client="ocb-demo", cc_prom="cloud-app", cc_prom_source="janeway", cc_vm_source="vm-windows-4", core="0,0", endpoint="metrics", instance="10.0.59.236:9182", job="caascad-windows-exporter", namespace="caascad-monitoring-vm", prometheus="monitoring-app/app-prometheus", service="caascad-windows-exporter"} 2060335251087

Les étiquettes importantes sont :

  • cc_prom_source : identifie l'environnement du client.

  • cc_vm_source : identifie la VM surveillée. La valeur de cette étiquette est égale à la valeur du nom d'hôte dans le fichier de configuration.

  • instance : adresse ip de la VM avec le port de l'exporteur.

  • job : la valeur de cette étiquette est égale à caascad-<name>name est la valeur de name dans le fichier de configuration.

Vous pouvez ajouter vos propres étiquettes dans la section relabelings.

Dépannage

Si le déploiement s'est bien déroulé, mais que les métriques ne sont pas visibles dans Grafana, vous pouvez vérifier l'état de la cible Prometheus :

  • connectez-vous à l'environnement client

  • effectuez un transfert de port sur Prometheus

    kubectl port-forward -n caascad-monitoring svc/caascad-prometheus 9090:9090 &
    
  • allez à l'URL

http://localhost:9090/targets
  • vérifiez le message d'erreur

Problèmes de connectivité :

Mauvais chemin : .

  • S'il y a des problèmes de connectivité, vérifiez l'IP privée de la VM et le groupe de sécurité....

Alertes

Il est possible de créer des PrometheusRules pour alerter lorsque les métriques ne sont plus récupérées par Prometheus.

Allez sur : https://git.ZONE_NAME.caascad.com/MonitoringApp/alerts

Et suivez le README.md pour ajouter une alerte :

 - alert: MonitoringVMDown
    annotations:
      description: monitoring vm is down
      message: '{{ $value }}% of the {{ $labels.cc_vm_source }} targets are down.'
    expr: 100 * (count(up{cc_vm_source!=""} == 0) BY (cc_prom_source, cc_vm_source, job, namespace, service) /
          count(up{cc_vm_source!=""}) BY (cc_prom_source, cc_vm_source, job, namespace, service)) > 10
    for: 10m
    labels:
      severity: warning

Lorsqu'il y a un problème avec la VM, une alerte sera levée :

.

Tableaux de bord Grafana optionnels

Pour visualiser les mesures du système pour les hôtes Linux ou Windows, certains tableaux de bord Grafana prédéfinis peuvent être activés dans votre environnement d'administration client.

Voici la liste des tableaux de bord optionnels maintenus par l'équipe Caascad :

Nom du tableau de bord Description Fonctionnalité optionnelle requise
linux-node-exporter Un tableau de bord pour surveiller les VMs fonctionnant sous Linux
  • monitoring-vm
  • grafana-dashboards
windows-node-exporter Un tableau de bord pour surveiller les VM fonctionnant sous Windows
  • monitoring-vm
  • grafana-dashboards

Flux de travail GitOps

Suivez la documentation du flux de travail GitOps avec feature_name=grafana-dashboards.

Plusieurs actions sont possibles :

  • ajouter un tableau de bord optionnel à Grafana
  • supprimer un tableau de bord optionnel de Grafana

Valeurs

Cette section décrit toutes les valeurs de configuration possibles à spécifier dans les fichiers de vos dépôts Caascad Git.

Format des valeurs
Tableaux de bord Grafana

La section grafana-dashboards contient des informations sur les tableaux de bord Grafana qui seront déployés sur l'application Grafana de votre zone.

Champ Description Schéma Requis
<dashboard_name> Nom du tableau de bord chaîne de caractères vrai
<dashboard_name>.enabled Activation/désactivation du tableau de bord booléen vrai
Exemple
---
grafana_dashboards :
  linux-node-exporter :
    enabled : true
  Windows-node-exporter :
    enabled : true

Dans cet exemple, les tableaux de bord linux-node-exporter et windows-node-exporter seront installés.