diff --git a/roles/prometheus/templates/prometheus/alert.rules.yml.j2 b/roles/prometheus/templates/prometheus/alert.rules.yml.j2
index 4a93dbf3fc167133d28d893e268ba7723087f2a9..b3c2eb5c51f48995f303f907a6e8bfe247ac092e 100644
--- a/roles/prometheus/templates/prometheus/alert.rules.yml.j2
+++ b/roles/prometheus/templates/prometheus/alert.rules.yml.j2
@@ -13,8 +13,7 @@ groups:
     labels:
       severity: critical
     annotations:
-      summary: "Le serveur {{ $labels.instance }} est down"
-      description: "Le serveur {{ $labels.instance }} est down depuis plus de 3 minutes."
+      summary: "{{ $labels.instance }} est invisible depuis plus de 3 minutes !"
 
   # Alert for out of memory
   - alert: OutOfMemory
@@ -23,8 +22,7 @@ groups:
     labels:
       severity: warning
     annotations:
-      summary: "Presque plus de mémoire vive sur {{ $labels.instance }}"
-      description: "La mémoire est en train de se remplir ({{ $value }}% restant)"
+      summary: "Mémoire libre de {{ $labels.instance }} à {{ $value }}%."
 
   # Alert for out of disk space
   - alert: OutOfDiskSpace
@@ -33,8 +31,7 @@ groups:
     labels:
       severity: warning
     annotations:
-      summary: "Presque plus de stockage sur {{ $labels.mountpoint }} sur {{ $labels.instance }}"
-      description: "La partition est presque remplie ({{ $value }}% restant)"
+      summary: "Espace libre de {{ $labels.mountpoint }} sur {{ $labels.instance }} à {{ $value }}%."
 
   # Alert for out of inode space on disk
   - alert: OutOfInodes
@@ -43,18 +40,16 @@ groups:
     labels:
       severity: warning
     annotations:
-      summary: "Presque plus d'inodes disque sur {{ $labels.mountpoint }} sur {{ $labels.instance }}"
-      description: "Le disque est presque à courre d'inodes disponibles ({{ $value }}% restant)"
+      summary: "Presque plus d'inodes disponibles ({{ $value }}% restant) dans {{ $labels.mountpoint }} sur {{ $labels.instance }}."
 
   # Alert for high CPU usage
-  - alert: CpuLoad
-    expr: node_load15 / (count without (cpu, mode) (node_cpu_seconds_total{mode="system"} or node_cpu{mode="system"})) > 2
+  - alert: CpuUsage
+    expr: ((100 - avg by (instance) (irate(node_cpu{mode="idle"}[5m])) * 100) or (100 - avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)) > 75
     for: 5m
     labels:
       severity: warning
     annotations:
-      summary: "Charge CPU élevée sur {{ $labels.instance }}"
-      description: "La charge CPU (moyenne de 15mn) est élevée."
+      summary: "CPU sur {{ $labels.instance }} à {{ $value }}%."
 
   # Check systemd unit (> buster)
   - alert: SystemdServiceFailed
@@ -64,7 +59,88 @@ groups:
       severity: warning
     annotations:
       summary: "{{ $labels.name }} a échoué sur {{ $labels.instance }}"
-      description: "Le service {{ $labels.name }} a échoué."
+
+  # Check UPS
+  - alert: UpsOutputSourceChanged
+    expr: upsOutputSource != 3
+    for: 5m
+    labels:
+      severity: warning
+    annotations:
+      summary: "La source d'alimentation de {{ $labels.instance }} a changé !"
+      description: "https://grafana.crans.org/d/qtbg59mZz/alimentation"
+
+  - alert: UpsBatteryStatusChanged
+    expr: upsBatteryStatus != 2
+    for: 5m
+    labels:
+      severity: warning
+    annotations:
+      summary: "L'état de la batterie de {{ $labels.instance }} a changé !"
+      description: "https://grafana.crans.org/d/qtbg59mZz/alimentation"
+
+  - alert: UpsTemperatureWarning
+    expr: (xupsEnvRemoteTemp < 10) or (xupsEnvRemoteTemp > 20)
+    for: 5m
+    labels:
+      severity: warning
+    annotations:
+      summary: "La température autour de {{ $labels.instance }} est de {{ $value }}°C."
+      description: "https://grafana.crans.org/d/qtbg59mZz/alimentation"
+
+  - alert: UpsTemperatureCritical
+    expr: (xupsEnvRemoteTemp < 0) or (xupsEnvRemoteTemp > 30)
+    for: 5m
+    labels:
+      severity: critical
+    annotations:
+      summary: "La température autour de {{ $labels.instance }} est de {{ $value }}°C !"
+      description: "https://grafana.crans.org/d/qtbg59mZz/alimentation"
+
+  - alert: UpsHighHumidity
+    expr: xupsEnvRemoteHumidity > 65
+    for: 5m
+    labels:
+      severity: warning
+    annotations:
+      summary: "L'humidité autour de {{ $labels.instance }} est de {{ $value }}%."
+      description: "https://grafana.crans.org/d/qtbg59mZz/alimentation"
+
+  - alert: UpsVeryHighHumidity
+    expr: xupsEnvRemoteHumidity > 85
+    for: 5m
+    labels:
+      severity: critical
+    annotations:
+      summary: "L'humidité autour de {{ $labels.instance }} est de {{ $value }}% !"
+      description: "https://grafana.crans.org/d/qtbg59mZz/alimentation"
+
+  - alert: UpsHighLoad
+    expr: upsOutputPercentLoad > 70
+    for: 5m
+    labels:
+      severity: critical
+    annotations:
+      summary: "La charge de {{ $labels.instance }} est de {{ $value }}% !"
+      description: "https://grafana.crans.org/d/qtbg59mZz/alimentation"
+
+  - alert: UpsWrongInputVoltage
+    expr: (upsInputVoltage < 220) or (upsInputVoltage > 240)
+    for: 5m
+    labels:
+      severity: warning
+    annotations:
+      summary: "La tension d'entrée de {{ $labels.instance }} est de {{ $value }}V."
+      description: "https://grafana.crans.org/d/qtbg59mZz/alimentation"
+
+  - alert: UpsWrongOututVoltage
+    expr: (upsOutputVoltage < 225) or (upsOutputVoltage > 235)
+    for: 5m
+    labels:
+      severity: warning
+    annotations:
+      summary: "La tension de sortie de {{ $labels.instance }} est de {{ $value }}V."
+      description: "https://grafana.crans.org/d/qtbg59mZz/alimentation"
 
   # NTP (need NTP plugin in node)
 #  - alert: ntp_drifting