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.