Monitoring de Windows Grafana
Grafana est le meilleur et le plus complet des outils de monitoring. Il permet de surveiller n’importe quelle appareil ou service et sa personnalisation est sans limites.
Il fonctionne de concert avec Prometheus, qui va s’occuper de récupérer les métriques sur les machines, tandis que Grafana lui va nous permettre de créer des Dashboard afin d’afficher les informations.
Création du stack Grafana Prometheus Node exporter
1. Créer un dossier Grafana et un fichier docker-compose.yml
mkdir Grafana
cd Grafana
nano docker-compose.yml
2. Coller la configuration en adaptant le chemin du volume et enregistrer
version: '3'
services:
prometheus:
image: prom/prometheus
container_name: prometheus
ports:
- "9090:9090"
volumes:
- /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
command:
- '--config.file=/etc/prometheus/prometheus.yml'
restart: always
grafana:
image: grafana/grafana
container_name: grafana
ports:
- "3000:3000"
volumes:
- ./grafana:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=yourpassword
user: "${UID}:${GID}"
depends_on:
- prometheus
restart: always
node_exporter:
image: quay.io/prometheus/node-exporter:latest
container_name: node_exporter
command:
- '--path.rootfs=/host'
pid: host
restart: unless-stopped
volumes:
- '/:/host:ro,rslave'
3. Créer un fichier prometheus.yml sous /etc/prometheus
nano /etc/prometheus/prometheus.yml
4. Coller la configuration en adaptant le chemin du volume et enregistrer
global:
scrape_interval: 15s # By default, scrape targets every 15 seconds.
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
# external_labels:
# monitor: 'codelab-monitor'
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 30s
scrape_timeout: 30s
static_configs:
- targets: ['localhost:9090']
# Job for node_exporter
- job_name: 'node_exporter'
static_configs:
- targets: ['node_exporter:9100']
# Job for windows
- job_name: 'windows_srv'
scrape_interval: 30s
scrape_timeout: 30s
static_configs:
- targets: ['xxx.xxx.xxx.xxx:9115'] # PC-1
- targets: ['xxx.xxx.xxx.xxx:9115'] # PC-2
Grafana et Prometheus sont maintenant préconfigurés.
Les Dashboard des applications sont accessibles à :
Grafana : http://localhost:3000
Identifiant : admin
Mot de passe : yourpassword
Prometheus : http://localhost:9090
Installation du .msi
1. Pour ajouter une machine Windows au node_exporter du stack Grafana, il faut télécharger la dernière version de windows_exporter, il se trouve sur Github à https://github.com/prometheus-community/windows_exporter/releases
2. Pour installer le msi, simplement l’executer en double cliquant dessus
⚠️ Info
Pour information, il est possible d’activer des métriques spécifiques qui ne sont pas dans la liste par défaut, pour ce faire il faut lancer le msi via cette commande :
msiexec /i <path-to-msi-file> ENABLED_COLLECTORS=os,iis LISTEN_PORT=9182
Par exemple :
msiexec /i windows_exporter-0.22.0-386.msi ENABLED_COLLECTORS="ad,adfs,cache,cpu,cpu_info,cs,container,dfsr,dhcp,dns,fsrmquota,iis,logical_disk,logon,memory,msmq,mssql,netframework_clrexceptions,netframework_clrinterop,netframework_clrjit,netframework_clrloading,netframework_clrlocksandthreads,netframework_clrmemory,netframework_clrremoting,netframework_clrsecurity,net,os,process,remote_fx,service,tcp,time,vmware" TEXTFILE_DIR="C:\custom_metrics" LISTEN_PORT="9182"
3. Une fois le programme lancé, un service nommé “windows_exporter“ va être créé et lancé sur la machine, pour vérifier son bon fonctionnement il faut se rendre à : http://localhost:9182/metrics ou les métriques seront affichés
Configuration de Prometheus
1. Editer le fichier de configuration de Prometheus avec la commande suivante :
nano /etc/prometheus/prometheus.yml
2. Renseigner la ou les IPs de vos machines, il est possible de commenter le nom de la machine pour simplifier les modifications futures.
# Job for windows
- job_name: 'windows'
scrape_interval: 30s
scrape_timeout: 30s
static_configs:
- targets: ['xxx.xxx.xxx.xxx:port'] # MACHINE_1
- targets: ['xxx.xxx.xxx.xxx:port'] # MACHINE_2
- targets: ['xxx.xxx.xxx.xxx:port'] # MACHINE_3
- targets: ['xxx.xxx.xxx.xxx:port'] # MACHINE_4
3. Quitter et sauvegarder le fichier, puis relancer le conteneur prometheus
sudo docker restart prometheus
Sur Prometheus, vous devriez maintenant avoir un 4ème service :
III. Ajouter un Dashboard Windows
Une fois que tout est configuré, il faut ajouter un premier Dashboard à Grafana. Etant un outil très difficile à configurer, le plus simple et rapide est encore d’importer un template de Dashboard et ensuite de le modifier selon nos envies et nos besoins.
1. Aller dans Dashboards/ + Import
2. Mettre 2129 dans le champs puis cliquer sur Load et valider
⚠️ Info
Il peut vous manquer des métriques, ou il faudra ajuster certains blocs afin d'avoir une lecteur correcte des métriques.
Mon dashboard Windows
Voici mon modèle de dashboard, il suffit de copier le code dans un fichier en .json et de l’importer dans Grafana.