Les alertes de certificats n'atteignent personne : owni-certs-sync hors de cronwrap #6
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
owni-certs-sync.sha signalé l'expiration du certificat decloud.alpinux.orgchaque nuit pendant 54 jours, et personne ne l'a vu.Le site est hors service en HTTPS depuis le 4 août (#5).
La cause est nette
La machine a un tableau de bord —
admin.alpinux.org— alimenté parcronwrap, qui écrit un état JSON par tâche dans/var/lib/alpinux-admin/crons/: dernier passage, durée, code de retour,échecs consécutifs.
Quatre tâches y figurent :
owni-certs-sync.shn'y est pas. Il tourne depuis/etc/cron.d/owni-certs-syncavec
MAILTO=root, hors du dispositif de surveillance :Un courriel vers
rootsur une machine dont personne ne lit la boîte localen'est pas une alerte. Et c'est d'autant plus dommage que le script rend déjà
le bon code :
0si tout est cohérent,1s'il subsiste une anomalie —exactement ce que
cronwrapsait interpréter.Ironie du dispositif :
certbot renewest surveillé, mais pas le script quivérifie que le renouvellement a bien été appliqué. On surveille l'étape qui
marche et pas celle qui casse.
Le correctif minimal
Une ligne. À partir de là, l'anomalie de
cloudapparaît suradmin.alpinux.orgavec son compteur d'échecs consécutifs, et se voit.Ce qu'on peut faire de mieux, si l'envie vient
Le tableau de bord n'affiche aujourd'hui que « la tâche a échoué ». Pour les
certificats, ce qui compte est quel domaine, et dans combien de jours.
owni-certs-sync.shconnaît déjà ces valeurs (il applique un seuil de 21jours) : il pourrait écrire un second JSON, une ligne par domaine —
expiration, mécanisme, état — qu'
admin.alpinux.orgafficherait en tableau.On saurait alors d'un coup d'œil que dix noms dépendent d'un même certificat,
et qu'il expire dans 49 jours.
Et les autres tâches non surveillées
Le même examen montre que le worker de la messagerie tourne aussi hors
cronwrap, chaque minute. Là, c'est délibéré — une tâche à la minutesaturerait le tableau de bord — mais il vaut la peine de décider quelles
tâches méritent d'être vues, plutôt que de le laisser au hasard de qui a
écrit quoi.
Fait, et l'anomalie remonte déjà
/etc/cron.d/owni-certs-syncpasse désormais par cronwrap :MAILTOpasse derootà vide : c'est cronwrap qui décide désormais s'il fautalerter, comme pour les quatre autres tâches. L'ancien fichier est gardé en
/root/owni-certs-sync.avant-cronwrap.Le commentaire en tête du fichier dit pourquoi, pour que personne ne le
défasse : l'alerte partait vers une boîte que personne ne lit, et l'expiration
de
cloud.alpinux.orga été signalée chaque nuit pendant 54 jours sans êtrevue.
Vérifié sans attendre 4 h 20
La tâche a été déclenchée à la main, et
admin.alpinux.orga désormais sonétat :
L'anomalie est donc visible sur le tableau de bord, avec son compteur
d'échecs consécutifs qui montera tant que #5 ne sera pas réglé. C'était tout
l'objet de ce ticket.
Le
--period 86400fait aussi surveiller le silence : si la tâche cessait detourner, cronwrap le signalerait — une tâche muette est aussi inquiétante
qu'une tâche en échec.
Ce qui reste, et qui n'est pas dans ce ticket
L'idée d'un second JSON, une ligne par domaine — expiration, mécanisme,
état — reste ouverte. Aujourd'hui le tableau de bord dit « cette tâche
échoue » et donne les trois dernières lignes de sortie ; il ne dit pas d'un
coup d'œil que dix noms dépendent du même certificat et qu'il expire dans
49 jours. C'est un confort, pas un manque : l'alerte, elle, passe.