Mettre en place une stack de monitoring (Prometheus, Grafana, Node Exporter via Docker) pour surveiller une VM, préparer un environnement pour exécuter des tests Playwright manuellement (ou via une autre automatisation), et envoyer les résultats de ces tests à Prometheus via un exportateur custom (metrics.js), le tout visualisable dans Grafana.
- VM Cible (
remotelabz@192.168.1.93) : Héberge l'application testée,node-exporter(Docker), le scriptmetrics.js, le projet Playwright. - Serveur de Monitoring : Héberge Prometheus et Grafana (peut être la même VM ou une autre machine).
- Accès SSH à la VM
- Droits
sudo
Vérifiez si déjà installés :
node -v
npm -vSi non installés, installez la version LTS :
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get update
sudo apt-get install -y nodejsInstallez Docker Engine :
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-pluginLancez node-exporter :
sudo docker run -d \
--name node-exporter \
--restart=unless-stopped \
--net="host" \
--pid="host" \
-v "/:/host:ro,rslave" \
quay.io/prometheus/node-exporter:latest \
--path.rootfs=/hostVérifiez :
sudo docker ps
curl http://localhost:9100/metricscd /home/remotelabz/
npm init -y
npm install @playwright/test express prom-client axios --save-dev
npx playwright installsudo npm install pm2 -g
pm2 start metrics.js --name playwright-metrics
pm2 list
pm2 startup
pm2 save
curl http://localhost:3001/metricsVERSION="2.53.0"
wget https://github.com/prometheus/prometheus/releases/download/v${VERSION}/prometheus-${VERSION}.linux-amd64.tar.gz
tar xvf prometheus-${VERSION}.linux-amd64.tar.gz
sudo mv prometheus-${VERSION}.linux-amd64 /opt/prometheusCréez et configurez /opt/prometheus/prometheus.yml :
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['192.168.1.93:9100']
- job_name: 'playwright_metrics'
static_configs:
- targets: ['192.168.1.93:3001']Activez Prometheus en tant que service :
cd etc/systemd/sytem
sudo nano prometheus.service
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=root
ExecStart=/home/remotelabz/prometheus-2.47.2.linux-amd64/prometheus \
--config.file=/home/remotelabz/prometheus-2.47.2.linux-amd64/prometheus.yml \
--web.listen-address=:9090
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
sudo systemctl status prometheussudo apt-get update
sudo apt-get install -y apt-transport-https software-properties-common wget
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install grafana
sudo systemctl daemon-reload
sudo systemctl enable grafana-server
sudo systemctl start grafana-server
sudo systemctl status grafana-server- Accédez à Grafana :
http://<IP_Serveur_Monitoring>:3000(login: admin/admin). - Configuration -> Data Sources -> Add data source -> Prometheus.
- URL:
http://localhost:9090(si même machine) ouhttp://<IP_Prometheus>:9090. - Save & Test.
- Vérifiez les Cibles Prometheus :
http://<IP_Prometheus>:9090-> Status -> Targets. - Exécutez les Tests Playwright :
cd /home/remotelabz/
npx playwright test- Créez des Dashboards Grafana pour visualiser les métriques.
- Vérifiez les ports ouverts (
9100,3001,9090,3000). - Consultez les logs (
journalctl,pm2 logs,docker logs node-exporter). - Assurez-vous que les IP dans
prometheus.ymlsont correctes.
Fin du guide 🎯