Introduction
La surveillance de serveurs Windows en production nécessite une approche rigoureuse et méthodique. Les outils de monitoring comme Prometheus et Grafana sont puissants, mais leur configuration doit être précise pour offrir une fiabilité à long terme.
Dans cet article, nous décrivons comment mettre en place une pile de surveillance complète pour Windows Server, incluant windows_exporter, Prometheus, Grafana, et Alertmanager. Nous explorerons chaque couche pour garantir un monitoring clair et fonctionnel.
Architecture de production pour la surveillance des serveurs Windows
Comprendre la topologie des composants
Avant de commencer, il est essentiel de conceptualiser l'architecture du système de monitoring. Une configuration typique comprend les éléments suivants :
- windows_exporter : Expose les métriques du serveur Windows via HTTP.
- Prometheus : Récupère et stocke les données et exécute des règles d'alerte.
- Grafana : Affiche les métriques via des tableaux de bord visuels.
- Alertmanager : Regroupe et envoie des notifications selon les règles définies.
[IMAGE:index:images/windows-monitoring-architecture.svg:Architecture de monitoring pour Windows]
Bon à savoir
Chaque couche doit valider la couche précédente pour garantir la cohérence entre l'extraction des données, leur stockage, leur visualisation, et les alertes générées.
Prérequis
Pour suivre ce guide, vous aurez besoin :
- Windows Server 2019 ou une version ultérieure sur les machines surveillées.
- Un déploiement fonctionnel de Prometheus accessible par les serveurs Windows.
- Un environnement Grafana avec des droits administratifs ou de provisioning.
- Une connexion réseau entre Prometheus et le port TCP 9182 des serveurs Windows.
- Alertmanager pour la gestion des notifications si vous souhaitez utiliser des alertes.
Installer windows_exporter sur les serveurs Windows
Configuration initiale
L'outil windows_exporter assure la conversion des données système en métriques exploitables par Prometheus. Commencez par installer le package MSI avec une configuration adaptée à votre environnement.
Commande d'installation
Utilisez le script suivant pour installer l'exportateur avec un jeu minimal de collecteurs :
1$msi = "C:\Temp\windows_exporter.msi"2$collectors = "cpu,memory,logical_disk,net,os,physical_disk,service,system"3 4Start-Process msiexec.exe -Wait -ArgumentList @(5 "/i", $msi,6 "/qn",7 "ENABLED_COLLECTORS=$collectors",8 "LISTEN_PORT=9182",9 "ADDLOCAL=FirewallException"10)Cela configure le port 9182 pour exposer les métriques par défaut. Si le serveur héberge des rôles spécifiques, ajoutez les collecteurs correspondants sous ENABLED_COLLECTORS.
Attention
N'exposez jamais le port 9182 à des réseaux publics. Restreignez l'accès au port via des règles de pare-feu.
Sécuriser l’accès au point de métriques
Ajouter des exceptions au pare-feu
Si vous connaissez déjà les adresses IP de vos scrapers Prometheus, configurez-les directement à l'installation :
1Start-Process msiexec.exe -Wait -ArgumentList @(2 "/i", "C:\Temp\windows_exporter.msi",3 "/qn",4 "ENABLED_COLLECTORS=cpu,memory,logical_disk,net,os,physical_disk,service,system",5 "LISTEN_PORT=9182",6 "REMOTE_ADDR=10.20.0.15",7 "ADDLOCAL=FirewallException"8)Vérifiez ensuite l'état du point de métriques depuis le serveur Prometheus :
1Test-NetConnection -ComputerName win01.contoso.local -Port 91822curl.exe -s http://win01.contoso.local:9182/metrics | Select-String "windows_exporter_build_info"La commande de test confirme que :
- Le port 9182 est accessible.
- Les métriques proviennent effectivement de windows_exporter.
Configurer Prometheus pour extraire les cibles Windows
Créer une configuration stable
La configuration du job dans Prometheus détermine les données récupérées et leurs étiquettes. Voici un exemple :
1global:2 scrape_interval: 30s3 4scrape_configs:5 - job_name: windows-server6 scrape_timeout: 10s7 static_configs:8 - targets:9 - win01.contoso.local:918210 - win02.contoso.local:918211 labels:12 environment: prod13 role: app14 site: denverAvant de redémarrer Prometheus, vérifiez la validité du fichier de configuration :
1promtool check config C:\Prometheus\prometheus.ymlAstuce
Ajoutez des étiquettes comme environment, role, et site pour éviter des doublons de tableaux de bord ou de règles d’alerte.
Ajouter Grafana et importer des tableaux de bord
Provisionner la source de données
La définition de la source de données dans Grafana peut être automatisée :
1apiVersion: 12 3datasources:4 - name: Prometheus5 type: prometheus6 access: proxy7 url: http://prometheus.contoso.local:90908 isDefault: trueCréer des tableaux de bord personnalisés
Pour commencer, concentrez-vous sur ces trois vues principales :
- Santé du serveur : CPU, mémoire, disque et réseau.
- État des services : Surveiller uniquement les services critiques.
- Vue d'ensemble de la flotte : Labels d’instances et état global.
Recommandez d’enregistrer les tableaux de bord en JSON dans un gestionnaire de version.
Configurer des règles d'alerte en production
Exemples de règles
Les règles suivantes surveillent les anomalies critiques comme l’indisponibilité de l’exportateur :
1groups:2 - name: windows-server.rules3 rules:4 - alert: WindowsExporterDown5 expr: up{job="windows-server"} == 06 for: 5m7 labels:8 severity: critical9 annotations:10 summary: "windows_exporter est hors service sur {{ $labels.instance }}"11 description: "Prometheus n'a pas récupéré {{ $labels.instance }} depuis cinq minutes."Routing dans Alertmanager
Configurez Alertmanager pour diriger les alertes critiques vers la bonne équipe :
1route:2 receiver: operations3 group_by: ["alertname", "instance", "job"]4 routes:5 - matchers:6 - severity="critical"7 receiver: pager8receivers:9 - name: operations10 email_configs:11 - to: [email protected]12 - name: pager13 pagerduty_configs:14 - routing_key: REDACTEDAvant toute modification, validez ces règles :
1promtool check rules C:\Prometheus\rules\windows-server.rules.ymlRésolution des problèmes courants
Utilisez la liste ci-dessous pour identifier et corriger les échecs les plus fréquents :
| Symptôme | Cause probable | Solution |
|---|---|---|
| Cible inaccessible | Port 9182 bloqué ou nom d'hôte incorrect | Corrigez les règles de pare-feu ou de DNS |
| Tableau de bord vide | Source de données incorrecte ou mauvais label | Vérifiez la source et les labels |
| Métriques manquantes | Collecteur non activé | Réinstallez avec le bon groupe de collecteurs |
| Alertes bruyantes | Seuils serrés ou absence de regroupement | Ajoutez des clés de regroupement appropriées |
Checklist des opérations en production
Pour garantir la fiabilité continue de votre stack de monitoring, suivez ces étapes :
- Fixez la version de windows_exporter pour éviter des changements inattendus.
- Revoyez les collecteurs à chaque changement de rôle serveur.
- Uniformisez les labels dans Prometheus pour une consistance d'analyse.
- Surveillez la rétention et la cardinalité des métriques dans Prometheus.
- Affinez la liste des alertes chaque mois pour éviter du bruit inutile.
- Sauvegardez les configurations JSON des tableaux de bord et jobs dans un contrôle de version.
Important
La fiabilité de votre structure de monitoring dépend de votre capacité à détecter et corriger les défaillances rapidement. Une organisation claire est essentielle.
Conclusion
Surveiller des serveurs Windows en production exige une rigueur dans l’installation et la configuration des outils. Avec windows_exporter, Prometheus, Grafana, et Alertmanager, vous pouvez construire une pile fiable qui vous alerte efficacement. Suivez ces bonnes pratiques pour transformer vos serveurs Windows en systèmes mesurables et transparents.



