Je ne vais pas parler ni du changement d'heure, ni du thème Dotclear ni du
Rocky Horror Picture Show, mais d'un authentique saut dans le temps qui
bien que temporaire a laissé des traces visibles pendant plusieurs
semaines.
Tout a commencé par un certificat OpenVPN expiré, pour éviter ce genre de
déconvenue (je ne m'en étais pas rendu compte, et j'ai cherché longtemps avant
de trouver qu'il s'agissait d'une expiration), j'ai décidé de mettre des sondes
de supervision sur ces certificats de façon à être prévenu la prochaine
fois.
Je commence par scripter ça, sur le serveur contenant lesdits certificats,
pour pouvoir travailler avec des exemples. Calcul de dates, classique,
j'utilise la commande date. Sauf que 1) cette commande n'a pas la
même syntaxe ni le même comportement sous FreeBSD où je fais mes essais que
sous Linux 2) j'ai lu le man en diagonal.
Résultat, au lieu de faire un calcul de date, j'ai utilisé la fonction
première de cette commande... qui est de mettre une machine
à l'heure.
Comme j'ai fait une boucle sur l'expiration des certificats, le serveur a
voyagé de date en date, aussi loin que 2030, voir 2120 (oui j'utilise parfois
des dates d'expiration particulièrement lointaines, c'est mon côté punk)
Le pire, c'est que je ne m'en suis pas rendu compte tout de suite (j'ai
tiqué quand le 2FA de mes sites ne fonctionnait plus...).
La machine n'a pas tant souffert que ça (MariaDB a planté, c'est tout), mais
c'est au niveau de la supervision, ironiquement, que les dégâts ont été les
plus importants, avec des métriques enregistrées aux dates citées plus
haut.
À ce moment-là, j'ai raboté les tables de la base PostgreSQL utilisées par
Zabbix avec une requête bien sentie, ce fut galère, mais l'affaire était
close.
... Jusqu'à ce matin où je me suis rendu compte que toute la métrologie sous
Grafana était également en vrac (j'y vais souvent hein), depuis cette fameuse
date. Retour au SQL (cette fois sur InfluxDB...) pour refaire un peu de
nettoyage.
La morale de cette histoire, c'est que quand on joue avec la commande
date pour autre chose qu'une mise à l'heure, il est fortement
conseillé de le faire avec un utilisateur non-privilégié (c'est-à-dire, pas en
root), sous peine de souffrir beaucoup par la suite.