Aller au contenu

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
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
739e1fdf abfc 4851 a76a a0edfed494be e1687513981596

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 :
c230545a f3e7 428b bae2 c4e4adb5e7d7

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
ea9e281f e19a 419e 8369 240e5ac50d8f

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.