Publié le: 2022-04-07

Alerte Prometheus sur un reboot/redémarrage

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 !