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 parocb-
).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 :
-
Exporteur qui récupère les métriques du système d'un hôte Linux
-
Exporteur qui récupère les métriques du système d'un hôte Windows
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>
oùname
est la valeur dename
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
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 |
|
windows-node-exporter |
Un tableau de bord pour surveiller les VM fonctionnant sous Windows |
|
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.