diff --git a/tools/snmp.md b/tools/snmp.md
new file mode 100644
index 0000000..351a9a3
--- /dev/null
+++ b/tools/snmp.md
@@ -0,0 +1,172 @@
+# SNMP
+
+Le protocol SNMP est un protocol minimaliste pour communiquer avec un
+équipement mis en réseau. Il est implémenté sur de nombreux périphériques
+tel que des bornes WiFi, des commutateurs réseaux et des multiprises
+connectées.
+
+## SNMPv3 vs SNMPv1/v2
+
+Pour des raisons de sécurité, vous devriez toujours utiliser SNMPv3 qui
+a un système d'authentification et de chiffrement. Si votre documentation
+parle de « communautés SNMP », c'est que c'est de la v1 ou v2 et que vous
+devriez mieux partir en courant.
+
+## Monitoring d'un APC Rack PDU avec Prometheus
+
+Lors du déménagement de Cachan vers Saclay, le Crans a récupérer un
+[APC Rack PDU 2G Metered-by-Outlet with Switching](https://www.apc.com/shop/th/en/products/Rack-PDU-2G-Metered-by-Outlet-with-Switching-ZeroU-20A-208V-16A-230V-21-C13-3-C19/P-AP8659)
+venant de l'ancien équipement de la DSI à Cachan.
+Ce Power Distribution Unit (PDU) est utilisé pour alimenter notre
+baie de serveur principale.
+Cette unité de distribution de courant est capable de monitorer chaque
+prise avec plusieurs métriques utiles. Par exemple, <root@crans.org> reçoit
+un courrier quand une prise surcharge la distribution.
+
+Dans les sous-sections on va présenter comment mettre en place le
+monitoring en SNMPv3 de ce PDU vers la base de monitoring Prometheus.
+
+### Configuration du SNMPv3 et des droits d'accès
+
+*On a réalisé ces étapes sur le firmware AOS v6.1.3.
+Si vous vous sentez aventureux et mettez à jour le PDU, les menus
+et identifiants risquent de changer.*
+
+Connectez-vous à l'interface Web du PDU. Par défault il écoute en HTTP
+sur son port 80 et on peut s'identifier avec l'identifiant `apc` et le
+mot de passe `apc`. *Néanmoins, pour sécuriser l'infrastructure, le mot de
+passe actuel est dans la bibliothèque de mots de passe du Crans.*
+
+Après connexion, allez dans
+`Configuration > Network > SNMPv3 > Access` et cochez
+`Enable SNMPv3 access` puis appliquez.
+
+Le PDU va proposer de se redémarrer pour appliquer les changements.
+Déjà, redémarrer le PDU ne coupe pas les prises (heureusement!), mais
+on a d'autres changements à réaliser avant de le redémarrer.
+
+On change les identifiants pour collecter les métriques en SNMPv3.
+Allez dans
+`Configuration > Network > SNMPv3 > User Profiles` et configurez un utilisateur
+Vous devriez utiliser `SHA` pour `Authentication Protocol` et `AES` pour
+`Privacy Protocol` (car `MD5` et `DES` sont vraiment faibles).
+*Au Crans, le compte s'appelle `crans`.*
+
+Maintenant que le compte est configuré, il faut lui autoriser l'accès.
+Allez dans
+`Configuration > Network > SNMPv3 > Access Control` et choisissez l'utilisateur,
+puis activez l'accès et mettez l'adresse IPv4 de la machine qui contactera le PDU en SNMP.
+
+### Test de l'accès SNMP
+
+La commande suivante devrait maintenant marcher
+(changer `PDU_*` avec les bonnes valeurs).
+Sur les dérivées de Debian, vous devriez installer `snmp` et
+`snmp-mibs-downloader` (optionnel, télécharge une base de données non libre
+de correspondance des valeurs SNMP, appelées `MIBs`).
+
+```bash
+# -m ALL: try to load all SNMP MIBs to output metrics name
+snmpwalk -v3 -a SHA -A PDU_AUTH_PASSPHRASE -x AES -X PDU_PRIVACY_PASSPHRASE \
+    -l authPriv -u PDU_SNMP_USERNAME -m ALL PDU_HOSTNAME_OR_IP
+```
+
+Si cette étape marche, vous pouvez aller plus loin et configurer Prometheus.
+Sinon, c'est le bon moment pour aller pinger <erdnaxe@crans.org> ou une autre
+personne habitué au SNMPv3.
+
+### À la recherche des métriques utiles
+
+*Tel un valeureux chevalier, vous partez à l'aventure pour retrouver les
+métriques utiles. Vous tombez devant un donjon qui vient de vous spammer plus
+de 2000 métriques, que faites-vous ?*
+
+`snmpwalk` devrez vous spammer de métriques toutes plus ou moins utiles.
+Si vous avez la base de données de MIBs installée, la sortie devrait être
+lisible et vous devriez rapidement trouver votre bonheur. Sinon vous êtes
+en quête soit pour deviner les identifiants des métriques intéressantes,
+soit pour aller chercher un fichier de définition MIB sur le site du
+constructeur.
+
+Pour le PDU, après quelques observations, on a gardé :
+
+  * `rPDU2DeviceStatusLoadState`
+  * `rPDU2DeviceStatusPower`
+  * `rPDU2DeviceStatusPeakPower`
+  * `rPDU2PhaseStatusPowerFactor`
+  * `rPDU2OutletMeteredStatusPower`
+
+### Configuration de l'exporteur Prometheus SNMP
+
+*C'est bien beau le SNMPv3, mais je ne vais pas snmpwalk dans un
+cron tout de même !*
+
+Prometheus SNMP exporter est livré avec un générateur de configuration.
+Cette étape de génération permet de créer la configuration de l'exporteur
+et lui permet de fonctionner sans nécessiter la base de données des MIBs du
+périphérique. Elle permet aussi de peaufiner la phase de traduction SNMP vers
+les gauges ou compteurs Prometheus.
+
+Le generateur écrit la configuration de l'exporteur `snmp.yml` en utilisant
+les MIBs et un fichier `generator.yml` tel que :
+
+```YAML
+modules:
+  apc_pdu:
+    walk:
+      - rPDU2DeviceStatusLoadState
+      - rPDU2DeviceStatusPower
+      - rPDU2DeviceStatusPeakPower
+      - rPDU2PhaseStatusPowerFactor
+      - rPDU2OutletMeteredStatusPower
+    version: 3
+    auth:
+      security_level: authPriv
+      username: PDU_SNMP_USERNAME
+      password: PDU_AUTH_PASSPHRASE
+      auth_protocol: SHA
+      priv_protocol: AES
+      priv_password: PDU_PRIVACY_PASSPHRASE
+```
+
+Sur les dérivées de Debian, vous aurez à installer `prometheus-snmp-exporter`
+puis lancer
+`prometheus-snmp-generator generate` dans `/etc/prometheus/` qui contient
+`generator.yml`.
+
+### Collecter l'exporteur avec Prometheus
+
+Maintenant que l'exporteur est configuré, vous pouvez le démarrer.
+Il écoutera sur le port `9116` par défaut.
+
+Dans la configuraiton de Prometheus, vous pouvez ajouter une section
+pour interroger cet exporteur en utilisant la définition `apc_pdu` définie dans
+la dernière section:
+
+```YAML
+scrape_configs:
+- job_name: apc_pdu_snmp
+  static_configs:
+  - targets:
+    - PDU_HOSTNAME_OR_IP
+  metrics_path: /snmp
+  params:
+    module:
+    - apc_pdu
+  relabel_configs:
+  - source_labels:
+    - __address__
+    target_label: __param_target
+  - source_labels:
+    - __param_target
+    target_label: instance
+  - replacement: 127.0.0.1:9116
+    target_label: __address__
+```
+
+La bidouille `relabel_configs` permet à Prometheus de query l'exporter avec
+le nom d'hôte ou adresse IP du périphérique afin de collecter les métriques
+SNMP tout en gardant le label `instance` propre dans sa base de données.
+
+Vous devriez pouvoir redémarrer Prometheus et le PDU devrait être monitoré.
+*Voilà, vous brandissez Excalibur de fierté!*