0 Métriques et journaux
Daniel Allaire edited this page 2026-09-14 14:12:19 -04:00

Métriques & journaux

Unité d'apprentissage. Moule : ① concept → ② Set-OPS → ③ transférable → ④ à toi de jouer.


① Le concept (générique)

Observer un système, c'est trois familles de données :

  • Métriques : des nombres dans le temps (CPU, mémoire, requêtes/s) — des séries temporelles.
  • Journaux (logs) : des événements textuels datés (« service démarré », « erreur X »).
  • (Traces : le parcours d'une requête — hors périmètre ici.)

Deux modèles de collecte opposés, à bien distinguer :

  • Pull / scrape : le collecteur va chercher les métriques chez chaque nœud (qui les expose).
  • Push / ship : chaque nœud envoie ses journaux vers un collecteur central.

Le motif agent/exporter : sur chaque machine, un petit agent expose des métriques (exporter) ou expédie des logs (shipper). Le serveur central agrège ; un tableau de bord visualise.


② Comment Set-OPS le fait

Pièce Modèle Rôle
Prometheus (serveur_prometheus) PULL scrape node_exporter (installé par client_metrique) sur chaque nœud, port :9100.
Loki (serveur_loki) PUSH reçoit les journaux journald expédiés par client_journal.
Grafana (serveur_grafana) — tableaux de bord au-dessus des deux (au SSO).

Le point-clé : un serveur d'observabilité sans agents ne voit que lui-même. Avec client_metrique/client_journal sur les nœuds, Grafana voit toute la flotte. Serveur ≠ agent : les deux sont nécessaires.

Ces deux liaisons ne sont PAS optionnelles, contrairement à ce que cette unité a dit jusqu'au 2026-09-06. Elles portent universelle: true dans leur meta/integration.yml : tout hôte les reçoit par dérivation, sans qu'on écrive une ligne au plan, et P26 refuse qu'un hôte y échappe. C'est exactement la leçon du paragraphe ci-dessus, tirée à son terme : le plan portait 28 lignes qui disaient « oui » à quelque chose de vrai pour tous — elles n'existaient que pour être oubliées, et quatre l'avaient été. Deux serveurs n'étaient alors ni supervisés ni journalisés, et une machine non supervisée ne proteste pas. Aujourd'hui on ne peut plus oublier : il faut exempter, et dire pourquoi.


③ Pourquoi c'est transférable

Set-OPS Équivalents ailleurs
Prometheus (pull) tout Prometheus, VictoriaMetrics, la logique scrape
Loki (push) ELK/Elasticsearch, Graylog, la logique ship
Grafana Kibana, Datadog, Grafana Cloud
exporter/shipper motif universel (node_exporter, Fluent Bit, Vector…)

Tu as appris métriques vs logs, pull vs push, le motif agent — pas « Prometheus ».


④ À toi de jouer

  1. Interroge les métriques (sur obs-01) — combien de nœuds scrapés, tous UP ?
    curl -s 'http://localhost:9090/api/v1/query?query=up{job="node"}' | python3 -m json.tool | grep -E 'instance|"1"'
    
  2. Vois les journaux : curl -s http://localhost:3100/loki/api/v1/label/host/values → les nœuds qui expédient leurs logs.
  3. Ouvre Grafana (https://observatoire.chezlepro.internal) — métriques et logs au même endroit.
  4. Casse & répare. Arrête prometheus-node-exporter sur un nœud : dans Prometheus, sa cible passe up=0 (DOWN). Redémarre : elle repasse UP. Tu sens que c'est l'agent qui nourrit le serveur (modèle pull).

Pour aller plus loin (dépôt)

  • Rôles : roles/serveur_prometheus, roles/serveur_loki, roles/serveur_grafana.
  • Agents : roles/client_metrique (node_exporter), roles/client_journal (→ Loki).
  • Ces agents sont des intégrations universelles (posées par dérivation, gardées par P26) : unités Liaisons et docs/integrations-vm.md.