Si vous avez node_exporter installé et consulté par
Prometheus, vous avez accès à une métrique très intéressante: node_boot_time_seconds
. Celle-ci
représente le timestamp en secondes du démarrage du système.
Pour retrouver l’information sur un reboot, il faut tout d’abord vérifier si l’uptime est bas, mais également si auparavant on avait un uptime plus haut. La première condition va déclencher l’alerte sur une création de machine, si elle est seule.
Nous créons maintenant 2 alertes, une pour vérifier si le node a redémarré dans les 10 dernières minutes, et une
pour la dernière heure. Le mot-clef offset
est ici le facteur permettant de vérifier l’ancien état de la métrique.
groups:
- name: node-exporter.rules
rules:
- alert: NodeHasRebooted
annotations:
description: Node has rebooted
summary: Node {{ (or $labels.node $labels.instance) }} has rebooted {{ $value }} seconds ago.
expr: |
(time() - node_boot_time_seconds < 600) and (time() - 600 - (node_boot_time_seconds offset 10m) > 600)
labels:
severity: critical
- alert: NodeHasRebooted
annotations:
description: Node has rebooted
summary: Node {{ (or $labels.node $labels.instance) }} has rebooted {{ $value }} seconds ago.
expr: |
(time() - node_boot_time_seconds < 3600) and (time() - 3600 - (node_boot_time_seconds offset 60m) > 3600)
labels:
severity: warning
Enjoy !