--- title: Meshping created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, networking, mesh, monitoring, go, low-resource] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=networking, https://github.com/meshping/meshping] --- # Meshping 📡 > Outil Go pour surveiller la santé d'un réseau maillé (mesh) : ping en grille de tous les nœuds entre eux avec matrice de latence. | Métadonnée | Valeur | | :--- | :--- | | **Site web** | https://github.com/meshping/meshping | | **GitHub** | https://github.com/meshping/meshping | | **License** | Apache-2.0 | | **Langage** | Go | | **Étoiles** | 10 ⭐ | | **Dernière MAJ** | 2024 | | **Catégorie** | [[cat-networking]] | ## Description **Meshping** est un service de monitoring conçu spécifiquement pour les **réseaux maillés** (mesh networks) : il maintient une matrice N×N des latences ping entre tous les nœuds d'un cluster, et visualise l'évolution temporelle pour détecter les liens faibles, les routes qui se dégradent, ou les partitions partielles. L'idée : dans un réseau mesh (B.A.T.M.A.N., OLSR, 802.11s, Zerotier, Tailscale, ou un cluster Kubernetes auto-hébergé), chaque nœud peut joindre tous les autres — mais la qualité des liens varie. Meshping fait un **ping ICMP** croisé de chaque nœud vers tous les autres, stocke les RTT dans une base locale, et expose une interface web avec : - **Heatmap** de latence actuelle entre chaque paire - **Graphes temporels** par lien - **Détection d'anomalies** simple (écart-type par rapport à la baseline) - **Alertes** webhook si un lien dépasse un seuil L'app est écrite en Go, distribuable en **binaire statique unique** (≈15 Mo), sans dépendance externe, et peut tourner en mode **agent** (sur chaque nœud du mesh) ou en **collecteur central** (qui interroge les agents). Projet jeune, à utiliser avec prudence sur des mesh de production critiques. ## Installation ### Docker Compose (mode collecteur) ```yaml services: meshping: image: ghcr.io/meshping/meshping:latest container_name: meshping restart: unless-stopped environment: - TZ=Europe/Paris - LISTEN_PORT=8089 - NODES_FILE=/data/nodes.txt volumes: - ./nodes.txt:/data/nodes.txt:ro - meshping-data:/data ports: - "8089:8089" volumes: meshping-data: ``` ### Manuelle (binaire) ```bash git clone https://github.com/meshping/meshping.git cd meshping go build -o meshping . ./meshping -nodes ./nodes.txt -port 8089 ``` ## Configuration `nodes.txt` (un nœud par ligne) : ``` node1.lan node2.lan node3.lan gateway.lan ``` Variables d'environnement clés : - `PING_INTERVAL=30s` - `PING_TIMEOUT=2s` - `ALERT_WEBHOOK=https://ntfy.example.com/meshping` - `BASELINE_DAYS=7` ## Alternatives - **Open Source** : [[app-uptime-kuma]] (mono-URL, pas de matrice mesh), [Smokeping](https://github.com/oetiker/Smokeping) (le classique pour la latence, sans notion de mesh), [Netdata](https://github.com/netdata/netdata) (métrique système, pas mesh) - **Kubernetes** : [Kube-prometheus](https://github.com/prometheus-operator/kube-prometheus) pour la santé des pods/nodes - **Mesh spécifiques** : [batctl](https://www.open-mesh.org/projects/batman-adv/wiki/Wishlist) (diagnostic B.A.T.M.A.N.), `olsrd` status page - **Propriétaire** : Datadog Network Performance, Catchpoint (chers, orientés cloud) ## Sécurité - **Ping ICMP** : nécessite généralement `CAP_NET_RAW` ou root — l'image Docker doit être lancée avec `--cap-add=NET_RAW` ou `--privileged` (à limiter). - **Exposition** : l'interface web révèle la topologie du mesh — placer derrière VPN ou auth basic. - **Binaire tiers** : reconstruire depuis les sources, le projet est jeune. - **Webhook secrets** : passés en variable d'environnement, jamais en clair. ## Ressources - [selfh.st — Networking](https://selfh.st/apps/?tag=networking) - [GitHub meshping/meshping](https://github.com/meshping/meshping) - [Smokeping — inspiration historique](https://oss.oetiker.ch/smokeping/) ## Pages Liées - [[cat-networking]] - [[recettes-docker-compose]] - [[app-uptime-kuma]] — monitoring de services - [[app-netdata]] — métriques système par nœud