Présentation de NIE-SLA
NIE-SLA est une plateforme open source de sondes et de gestion SLA prenant en charge le déploiement auto-hébergé. La couche de services fonctionne sur Cloudflare et les Agents Rust collectent les métriques des hôtes surveillés.
La plateforme fournit des contrôles de joignabilité, la télémétrie VPS, des mesures de latence multi-régions, des statistiques SLA à long terme, des notifications et une page d'état publique. Les résultats sont conservés par source afin de faciliter l'isolation des incidents.
Architecture du système
VPS surveillé Point d'observation indépendant
Agent Rust Agent Latency
| métriques / TCP Ping | latence TCP multi-réseaux
+--------------- jetons dédiés ----------+
v
Cloudflare Worker + Static Assets
routage / auth / agrégation / API
| | |
D1 R2 Durable ObjectsD1 conserve configuration, index, état courant et buckets SLA. R2 accueille en priorité télémétrie haute fréquence, instantanés, archives et thèmes. Les Durable Objects coordonnent sondes régionales et buffers ; un Cron chaque minute fait avancer contrôles, agrégation, nettoyage et notifications.
Sources d'observation
| Source | Point d'observation | Question traitée |
|---|---|---|
| Sonde Cloudflare | Edge et exécuteur régional | L'edge atteint-il la cible maintenant ? |
| État de l'Agent Rust | VPS surveillé | La télémétrie continue-t-elle d'arriver ? |
| TCP Ping de l'Agent | VPS surveillé | Quelle est la qualité du trajet depuis cet hôte ? |
| Agent Latency externe | Réseau indépendant | Comment une autre région ou un autre opérateur atteint-il la cible ? |
Un port joignable ne prouve pas que l'Agent fonctionne, et un Agent sain ne prouve pas une accessibilité globale. L'interface et l'API gardent ces sources séparées.
Comparaison avec les architectures courantes
Le tableau compare des approches d'implémentation courantes.
| Dimension | Forme conventionnelle fréquente | Choix NIE-SLA | Effet pratique |
|---|---|---|---|
| Observation | Contrôle central ou unique heartbeat hôte | Quatre sources explicitement séparées | Diagnostic moins ambigu |
| Exécution | Application centrale, base et frontend permanents | Services edge Cloudflare et assets même origine | Moins de services centraux à maintenir |
| Historique fréquent | Échantillons bruts dans un stockage relationnel unique | D1 pour état/agrégats, R2 pour télémétrie/archives | Stockage aligné sur les accès et quotas |
| Hors connexion | Relance mémoire ou perte d'échantillons | File locale durable, suppression après acquittement | Les coupures brèves créent moins de trous |
| Intégration | Endpoints internes liés au frontend | Manifest /api/v1 et API stable en lecture seule | Contrat explicite pour les clients indépendants |
| Personnalisation | Modifier le frontend ou exécuter une extension privilégiée | Thèmes CSS et Canvas isolé | Liberté visuelle avec frontière de sécurité |
| Publication | Une chaîne en ligne ou une architecture | Cinq cibles Linux statiques, checksums, santé et rollback | Artefacts reproductibles et vérifiables localement |
Principaux éléments d'implémentation
Stockage des données
Caches courts, fenêtres temporelles, limites de points, réduction d'échantillonnage et nettoyage planifié font partie du modèle. Une lecture optionnelle dégradée apparaît dans warnings[] au lieu d'être présentée comme une absence de données.
File hors ligne de l'Agent
La file Rust utilise un fichier temporaire unique, create_new, le mode Unix 0600, fsync sur le fichier et son dossier parent, puis un renommage atomique. Un échec de persistance garde l'état dirty, et les échantillons ne sont supprimés qu'après acquittement du serveur.
API publique
GET /api/v1 décrit capacités et endpoints. Les lectures publiques sont sans identifiants et bornées par une allowlist CORS exacte, des limites de débit, le cache et des paramètres d'historique limités.
Identifiants et isolation des thèmes
L'administration utilise des sessions courtes et un TOTP optionnel. Chaque Agent reçoit un jeton limité à son nœud. Les identifiants NodeQuality restent des Secrets Worker. Les sauvegardes sensibles utilisent PBKDF2 SHA-256 avec 100 000 itérations compatibles Cloudflare et AES-GCM.
Canvas s'exécute dans sandbox="allow-scripts" sans same-origin. La CSP interdit réseau direct, formulaires et navigation principale ; le protocole nie-sla:* ne transmet que des ressources publiques. Les ZIP sont vérifiés par SHA-256, chemin, type, nombre et taille.
Périmètre d'utilisation
NIE-SLA convient aux pages d'état auto-hébergées, à la télémétrie VPS, à la latence multi-point, au SLA long terme et aux présentations personnalisées. Il ne remplace pas les logs, le traçage distribué ou une plateforme APM complète.
Il dépend aussi des services et quotas Cloudflare ; Latency nécessite des nœuds indépendants ; les thèmes isolés ne peuvent pas contacter arbitrairement Internet ; la chaîne de checksums n'est pas une signature tierce. Ces compromis doivent être évalués selon le contexte.