Set-OPS-Public/roles/serveur_prometheus/tasks/main.yml
Daniel Allaire f4d57009ab meta/metriques.yml : le role declare son exportateur, le moteur derive
Aucune metrique de SERVICE n etait collectee — seulement du systeme. Le crochet
serveur_prometheus_cibles_supplementaires existait, documente, et personne ne le
remplissait.

Le pendant de meta/supervision.yml et son contraire : une sonde rend un verdict
avec un TTL, un exportateur expose une serie. Est-ce casse, contre depuis quand
et vers ou.

Le critere des panneaux : une serie a sa place si elle PRECEDE un verdict ou si
elle n en aura JAMAIS. Le taux de succes du cache n en aura jamais — quand les
donnees depassent shared_buffers, rien ne casse et tout devient lent.

Compte en lecture seule (pg_monitor), et flux en clair avec sa dette inscrite.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-14 11:35:14 -04:00

89 lines
2.9 KiB
YAML

---
- name: Installer Prometheus
ansible.builtin.apt:
name: "{{ serveur_prometheus_paquets }}"
state: present
update_cache: true
cache_valid_time: 3600
# --- LES CIBLES QUE LES ROLES DECLARENT (2026-09-14) ----------------------------------
#
# `serveur_prometheus_cibles_supplementaires` existait depuis longtemps — une liste libre,
# documentee, et que PERSONNE ne remplissait. Resultat : Prometheus ne scrutait que les
# `node_exporter`. Aucune metrique de SERVICE n'etait collectee — ni PostgreSQL, ni
# l'annuaire, ni les boites, ni le cache. Seulement du systeme.
#
# CE QUI LES REMPLIT DESORMAIS : `roles/<role>/meta/metriques.yml`, croise avec les hotes
# qui portent ce groupe. Exactement le patron de `client_sante` pour les sondes, et de
# `resoudre_flux` pour les pare-feu : LE ROLE DECLARE, LE MOTEUR DERIVE.
#
# UNE VALEUR DONNEE AU PLAN GAGNE : `| default` laisse un ecosysteme ajouter une cible qui
# ne vient d'aucun role — un equipement, un service tiers. La derivation complete, elle ne
# remplace pas.
- name: Relever les metriques que les roles declarent
ansible.builtin.find:
paths: "{{ role_path }}/.."
patterns: metriques.yml
recurse: true
depth: 3
delegate_to: localhost
become: false
run_once: true
check_mode: false
register: serveur_prometheus_metas
- name: Lire chaque declaration de metriques
ansible.builtin.slurp:
src: "{{ item.path }}"
delegate_to: localhost
become: false
run_once: true
check_mode: false
loop: "{{ serveur_prometheus_metas.files }}"
loop_control:
label: "{{ item.path | dirname | dirname | basename }}"
register: serveur_prometheus_declarations
- name: Deployer la configuration Prometheus
ansible.builtin.template:
src: prometheus.yml.j2
dest: "{{ serveur_prometheus_config }}"
owner: root
group: root
mode: "0644"
notify: Valider et recharger prometheus
- name: Definir les arguments du service (retention)
ansible.builtin.template:
src: default-prometheus.j2
dest: /etc/default/prometheus
owner: root
group: root
mode: "0644"
notify: Valider et recharger prometheus
- name: Activer et demarrer Prometheus
when: not ansible_check_mode
ansible.builtin.systemd:
name: "{{ serveur_prometheus_service }}"
enabled: true
state: started
# --- Sonde de supervision (docs/supervision-conception.md) --------------------------
# Le role qui possede la verite depose sa propre sonde ; le porteur (`client_sante`) la
# fait tourner et pousse le verdict, sans savoir ce qu'elle mesure.
- name: Assurer le repertoire des sondes de supervision
ansible.builtin.file:
path: /usr/local/lib/setops/sondes
state: directory
owner: root
group: root
mode: "0755"
- name: Deposer la sonde « collecte »
ansible.builtin.template:
src: sonde-collecte.sh.j2
dest: /usr/local/lib/setops/sondes/collecte.sh
owner: root
group: root
mode: "0750"