115 lines
4.1 KiB
Markdown
115 lines
4.1 KiB
Markdown
---
|
||
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
|