Set-OPS-Public/roles/serveur_loki/defaults/main.yml

62 lines
3.3 KiB
YAML
Raw Normal View History

---
serveur_loki_paquets:
- loki
serveur_loki_service: "loki"
serveur_loki_config: "/etc/loki/config.yml"
serveur_loki_port: 3100
serveur_loki_chemin: "/var/lib/loki"
serveur_loki_retention: "744h" # 31 jours
# Depot apt officiel Grafana (partage avec serveur_grafana).
les depots tiers passent par le cache, et le tenant n a plus le sien Deux mouvements d une seule doctrine : le site fournit tout ce dont un tenant a besoin pour venir au monde. 1. LES DEPOTS TIERS. Grafana, Icinga, Smallstep et Collabora ne publient qu en HTTPS ; apt-cacher-ng ne relaie pas un tunnel, et le socle pose donc Acquire::https::Proxy DIRECT. Chaque machine sortait elle-meme sur Internet. Le cache declare desormais un Remap par fournisseur, et chaque role demande en {{ ..._depot_schema }}:// - http des qu un cache est declare, https sinon. Le TLS n est rompu nulle part : il est TERMINE au cache, qui est notre machine, et l integrite vient des signatures. avant : 4 fournisseurs en HTTPS direct, 14 machines sortant seules apres : 0 source en HTTPS direct, 0 erreur apt sur 14 machines Trois lecons. Le remap appartient au cache qui SORT : pose sur un cache chaine, il tente le HTTPS a travers son amont et rend 503. apt_repository AJOUTE au lieu de remplacer, donc l ancienne ligne https sortait toujours. Et la liste des fournisseurs ne se devine pas - j en avais trois, l audit en a revele un quatrieme. 2. LE CACHE DU TENANT. Sa ligne portait son propre retrait depuis toujours - service MUTUALISABLE, un ecosysteme au premier age peut pointer sur celui de son hote. Retiree. Ce qu on perd, dit franchement : plus de trafic inter-zone et plus de charge sur site-cache-01, contre un service de moins a poser, superviser et reproduire. 3. UN ROLE QU ON RETIRE DOIT DEFAIRE CE QU IL A FAIT. Le retrait a montre que rien ne nettoie derriere. Le fichier apt visait un cache eteint en ecrasant le plancher qui fonctionnait - le defaut deja paye a quinze machines. Et les sondes du cache restaient, le porteur poussant pour des services qu Icinga ne definit plus (404). Le socle retire le premier, client_sante derive les sondes attendues et retire les orphelines. P65 refuse tout role visant un depot relaye en https ecrit en dur. Sa limite est dite : elle empeche une regression sur ce qui est connu, elle ne decouvre pas l inconnu. Mesure : Icinga 87 OK sur 96, prouver 65 OK, lint 0 defaut. Reste, et c est dit : apt-cacher-ng tourne toujours sur forge-01 que plus aucun plan ne declare. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-10 14:53:48 -04:00
serveur_loki_depot_cle_url: "{{ serveur_loki_depot_schema }}://apt.grafana.com/gpg-full.key"
serveur_loki_depot_cle_fichier: "/etc/apt/keyrings/grafana.asc"
les depots tiers passent par le cache, et le tenant n a plus le sien Deux mouvements d une seule doctrine : le site fournit tout ce dont un tenant a besoin pour venir au monde. 1. LES DEPOTS TIERS. Grafana, Icinga, Smallstep et Collabora ne publient qu en HTTPS ; apt-cacher-ng ne relaie pas un tunnel, et le socle pose donc Acquire::https::Proxy DIRECT. Chaque machine sortait elle-meme sur Internet. Le cache declare desormais un Remap par fournisseur, et chaque role demande en {{ ..._depot_schema }}:// - http des qu un cache est declare, https sinon. Le TLS n est rompu nulle part : il est TERMINE au cache, qui est notre machine, et l integrite vient des signatures. avant : 4 fournisseurs en HTTPS direct, 14 machines sortant seules apres : 0 source en HTTPS direct, 0 erreur apt sur 14 machines Trois lecons. Le remap appartient au cache qui SORT : pose sur un cache chaine, il tente le HTTPS a travers son amont et rend 503. apt_repository AJOUTE au lieu de remplacer, donc l ancienne ligne https sortait toujours. Et la liste des fournisseurs ne se devine pas - j en avais trois, l audit en a revele un quatrieme. 2. LE CACHE DU TENANT. Sa ligne portait son propre retrait depuis toujours - service MUTUALISABLE, un ecosysteme au premier age peut pointer sur celui de son hote. Retiree. Ce qu on perd, dit franchement : plus de trafic inter-zone et plus de charge sur site-cache-01, contre un service de moins a poser, superviser et reproduire. 3. UN ROLE QU ON RETIRE DOIT DEFAIRE CE QU IL A FAIT. Le retrait a montre que rien ne nettoie derriere. Le fichier apt visait un cache eteint en ecrasant le plancher qui fonctionnait - le defaut deja paye a quinze machines. Et les sondes du cache restaient, le porteur poussant pour des services qu Icinga ne definit plus (404). Le socle retire le premier, client_sante derive les sondes attendues et retire les orphelines. P65 refuse tout role visant un depot relaye en https ecrit en dur. Sa limite est dite : elle empeche une regression sur ce qui est connu, elle ne decouvre pas l inconnu. Mesure : Icinga 87 OK sur 96, prouver 65 OK, lint 0 defaut. Reste, et c est dit : apt-cacher-ng tourne toujours sur forge-01 que plus aucun plan ne declare. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-10 14:53:48 -04:00
serveur_loki_depot_source: "deb [signed-by=/etc/apt/keyrings/grafana.asc] {{ serveur_loki_depot_schema }}://apt.grafana.com stable main"
# --- TLS (zero-confiance) : Loki sert son API HTTP en HTTPS (cert step_ca) ---
serveur_loki_tls_actif: false
serveur_loki_tls_dir: "/etc/loki/tls"
serveur_loki_tls_source_cert: "/etc/step/certs/{{ ansible_fqdn | default(ansible_hostname) }}.crt"
serveur_loki_tls_source_cle: "/etc/step/certs/{{ ansible_fqdn | default(ansible_hostname) }}.key"
sondes : les six premieres, et le patron qui les rend eprouvables Ajout de meta/supervision.yml a six roles, chacun deposant sa propre sonde selon le contrat des greffons Nagios. DEUX PRINCIPES POSES AU DOCUMENT DE CONCEPTION, parce que la premiere sonde les a imposes : 1. UNE SONDE DOIT POUVOIR ETRE MISE EN DEFAUT PAR PARAMETRE. Cible et seuils sont des variables du role : on la prouve rouge avec un port ferme ou un seuil impossible, sur une machine reelle, sans rien casser, et aussi souvent qu on veut. Une sonde qu on ne peut prouver qu en cassant un service ne sera prouvee qu une fois. 2. LA SONDE VIT LA OU VIT LA VERITE. « Ce noeud est-il collecte ? » est une sonde de serveur_prometheus, pas de client_metrique : une seule y voit les N noeuds, et surtout elle voit le cas SILENCIEUX — celui qui a cesse d etre collecte ne peut pas s en plaindre. LES SIX : cache-apt (artefacts, repond + place), resolution (resolveur, zone interne ET Internet — deux chemins distincts), forge (forgejo, son propre /api/healthz), collecte (prometheus, 15/15 cibles), tableaux (grafana, base ok), ingestion (loki, PRET a ingerer, pas seulement en ecoute). TROIS FOIS J AI ECRIT LA SONDE AVANT DE MESURER, ET TROIS FOIS ELLE A EU TORT. La forge : port 443 et chemin des depots INVENTES — elle ecoute en 3000 derriere l edge et n a legitimement aucun depot. Loki : j ai conclu « panne persistante » sur deux lectures prises a quelques secondes d intervalle, juste apres un redemarrage ; l anneau etait ACTIVE et la reponse est passee a ready moins d une minute plus tard. Le delai de stabilisation est desormais un AVERTISSEMENT nomme, pas une panne. On demande au service ce qu il pense de lui-meme quand il sait le dire (healthz, /ready, /api/health) plutot que d inventer un critere de l exterieur. make prouver : CONFORME. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-10 02:48:55 -04:00
# --- Sonde de supervision -----------------------------------------------------------
frontiere posee, et cinq sondes qui disaient faux Application de ce que l entree precedente avait prepare : 49 regles creees, 5 retirees. Cibles Prometheus 2/8 -> 8/8, hotes dans Loki 1/7 -> 7/7. Puis correction de ce que l application a revele. Cinq defauts, tous de la meme famille : un reglage qui ne suit pas l interrupteur dont il depend. - la sonde de Loki interrogeait en HTTPS un Loki servant en clair ; - la sonde de la forge visait http:// sur un port 443 chiffre, puis validait un certificat emis pour le FQDN en interrogeant 127.0.0.1 ; - la sonde du runner comparait six depots a UNE branche quand le plan en declare une par depot. Elle contredisait la declaration qu elle etait censee verifier : elle n accusait pas la machine, elle s accusait elle-meme. Le tenant restait juste dans les cinq cas. C est le site, qui deploie ces roles autrement, qui les a tous reveles d un coup. La sonde des journaux, elle, avait deux defauts a la naissance. Elle criait une perte deja reparee, faute de dire sur QUELLE fenetre - un ecart sans sa fenetre n est pas une mesure, c est un nombre. Et elle alertait sur la cicatrice plutot que sur la plaie : le compteur d Alloy est cumulatif, donc six machines restaient orange pour toujours. Ce qui alerte est desormais la CROISSANCE. En echange, un cas muet leve maintenant : zero envoi et zero rejet n est pas la sante, c est un agent qui ne fait rien. Enfin, le runner ne pouvait plus cloner le genome. Defaut PREEXISTANT, revele par le redeploiement et non cause par lui - le diff des regles generees le montre. generer_nftables(site=True) lisait le plan du TENANT : derive se resolvait donc a 3000, le port que Forgejo ecoute derriere un edge, alors que le plan du site dit 443 et explique pourquoi. La forge ouvrait un port que personne n ecoute et laissait 443 ferme a toute la flotte. Mesure finale : Icinga 51/51, Prometheus 8/8, Loki 7/7, prouver 64 OK, lint 0 defaut sur 82 fichiers. Controles negatifs sur des COPIES des sondes : les quatre rendent CRITICAL. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-10 10:27:12 -04:00
# LE SCHEMA SE DERIVE DU COMMUTATEUR TLS, il ne s'ecrit pas (mesure du 2026-09-10).
#
# Cette ligne disait `https` en dur, alors que `serveur_loki_tls_actif` vaut `false` par
# defaut. Chez le tenant, qui l'active dans ses group_vars, l'accord etait fortuit ; au
# site, qui ne l'active pas, la sonde interrogeait en HTTPS un Loki qui sert en clair et
# rapportait « Loki ne repond pas » — un CRITICAL sur un service en parfaite sante.
#
# Une fausse alarme est pire qu'une sonde absente : elle apprend a ne plus lire la sonde.
# Meme forme que le reglage d'authentification de Grafana, corrige le meme jour — un
# parametre qui ne suit pas l'interrupteur dont il depend.
serveur_loki_sonde_schema: "{{ 'https' if serveur_loki_tls_actif | bool else 'http' }}"
serveur_loki_sonde_url: >-
{{ serveur_loki_sonde_schema }}://127.0.0.1:{{ serveur_loki_port }}
les depots tiers passent par le cache, et le tenant n a plus le sien Deux mouvements d une seule doctrine : le site fournit tout ce dont un tenant a besoin pour venir au monde. 1. LES DEPOTS TIERS. Grafana, Icinga, Smallstep et Collabora ne publient qu en HTTPS ; apt-cacher-ng ne relaie pas un tunnel, et le socle pose donc Acquire::https::Proxy DIRECT. Chaque machine sortait elle-meme sur Internet. Le cache declare desormais un Remap par fournisseur, et chaque role demande en {{ ..._depot_schema }}:// - http des qu un cache est declare, https sinon. Le TLS n est rompu nulle part : il est TERMINE au cache, qui est notre machine, et l integrite vient des signatures. avant : 4 fournisseurs en HTTPS direct, 14 machines sortant seules apres : 0 source en HTTPS direct, 0 erreur apt sur 14 machines Trois lecons. Le remap appartient au cache qui SORT : pose sur un cache chaine, il tente le HTTPS a travers son amont et rend 503. apt_repository AJOUTE au lieu de remplacer, donc l ancienne ligne https sortait toujours. Et la liste des fournisseurs ne se devine pas - j en avais trois, l audit en a revele un quatrieme. 2. LE CACHE DU TENANT. Sa ligne portait son propre retrait depuis toujours - service MUTUALISABLE, un ecosysteme au premier age peut pointer sur celui de son hote. Retiree. Ce qu on perd, dit franchement : plus de trafic inter-zone et plus de charge sur site-cache-01, contre un service de moins a poser, superviser et reproduire. 3. UN ROLE QU ON RETIRE DOIT DEFAIRE CE QU IL A FAIT. Le retrait a montre que rien ne nettoie derriere. Le fichier apt visait un cache eteint en ecrasant le plancher qui fonctionnait - le defaut deja paye a quinze machines. Et les sondes du cache restaient, le porteur poussant pour des services qu Icinga ne definit plus (404). Le socle retire le premier, client_sante derive les sondes attendues et retire les orphelines. P65 refuse tout role visant un depot relaye en https ecrit en dur. Sa limite est dite : elle empeche une regression sur ce qui est connu, elle ne decouvre pas l inconnu. Mesure : Icinga 87 OK sur 96, prouver 65 OK, lint 0 defaut. Reste, et c est dit : apt-cacher-ng tourne toujours sur forge-01 que plus aucun plan ne declare. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-10 14:53:48 -04:00
# --- SCHEMA DES DEPOTS TIERS (2026-09-10) --------------------------------------------
#
# `http` DES QU'UN CACHE EST DANS LE CHEMIN, `https` sinon. Ce n'est pas un relachement :
# le cache RELAIE ces depots en https vers le fournisseur (voir `serveur_artefacts`,
# `Remap-*`), et l'integrite vient des SIGNATURES du depot, qu'apt verifie de toute facon.
# Le meme raisonnement vaut deja pour `deb.debian.org` depuis toujours.
#
# Sans cette derivation, chaque machine sortait elle-meme sur Internet : le mandataire ne
# vaut que pour `http`, et le socle pose deliberement `Acquire::https::Proxy "DIRECT"`
# parce qu'un cache sans remap refuse les tunnels. Le remap leve ce refus ; encore
# faut-il DEMANDER en http.
#
# DEGRADE, JAMAIS DEVINE : pas de cache d'amorcage declare, pas de reecriture.
serveur_loki_depot_schema: >-
{{ 'http' if (artefacts_amorcage | default('') | string | length > 0) else 'https' }}
la frontiere journalise a nouveau, et une garde veille cette fois Doctrine posee par l exploitant : des lors que le site a son Loki, la journalisation de la frontiere et des hyperviseurs doit y etre dirigee. CE QUI ETAIT CASSE. La destination syslog d OPNsense pointait 10.17.20.11:3100 - une adresse de TENANT, sur le port de Loki, en UDP, ce que Loki ne sait pas lire. La VM a ete rasee ; une cible morte a arrete TOUTE la journalisation pendant dix jours. La destination a ete eteinte pour reparer et jamais remplacee. Deux fautes en une : plus de journaux, et une cible chez un locataire, ce que D-87 refuse dans l autre sens. L intention etait juste - bonnes facilites, info et au-dessus. On l a REPRISE telle quelle et change uniquement la destination : ces choix avaient ete faits, ce n etait pas a nous de les redecider. UN TRADUCTEUR, parce que Loki ne parle pas syslog : loki.source.syslog dans l Alloy qui tourne DEJA sur le collecteur. Port 1514 et non 514, donc ecoute sans privilege - un collecteur qui aurait besoin des droits du systeme pour entendre un equipement serait un mauvais echange. UNE REGLE DE RELABEL SANS GARDE N IGNORE PAS : ELLE EFFACE. Trois quarts d heure sur un symptome absurde - la configuration deposee portait host = "bifrost-1", visible dans le fichier, et le flux arrivait sans etiquette. Sans regex, la regle correspond TOUJOURS, meme quand sa source n existe pas, et pose host = "". Loki jette une etiquette vide, et celle de l ecouteur disparaissait avec elle. Et la verification finale a corrige une seconde erreur, la mienne : label/host/values rendait une liste en CACHE. La requete directe rendait bien un flux. Un index qui ne montre pas une chose ne prouve pas qu elle n existe pas. LA GARDE, qui manquait depuis l incident. journaux-frontiere demande a LOKI ce qu il a RECU, pas a la frontiere ce qu elle croit avoir envoye : la destination est le seul juge, et un emetteur qui parle a un trou noir se porte tres bien. La fenetre est DERIVEE du debit observe - environ 1500 lignes par minute - pas choisie. Trois etats eprouves sur une copie : frontiere muette rc=2, Loki injoignable rc=3, debit normal rc=0. Le 3 compte autant que le 2 : « je ne peux rien affirmer » n est pas « c est casse ». Mesure : 46 681 lignes recues en 30 min, site a 68 services tous OK. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-10 19:38:19 -04:00
# --- Sonde « journaux-frontiere » (voir meta/supervision.yml) ---
# L'etiquette sous laquelle la frontiere apparait — la meme que celle posee sur l'ecouteur
# syslog par `client_journal`, derivee de la carte. Vide = pas de sonde a poser.
serveur_loki_sonde_frontiere_etiquette: ""
# LA FENETRE EST DERIVEE DU DEBIT OBSERVE, pas choisie. Mesure du 2026-09-10 : ~46 000
# lignes en trente minutes, soit environ 1 500 par minute. Une frontiere qui filtre ne se
# tait jamais dix minutes ; si elle le fait, c'est qu'elle ne parle plus a nous.
serveur_loki_sonde_frontiere_fenetre: "10m"