NIE-SLA 概要
NIE-SLA は、セルフホスト構成に対応したオープンソースの監視・SLA 管理プラットフォームです。サービス層は Cloudflare 上で動作し、Rust Agent が監視対象ホストのシステム指標を収集します。
サービス到達性監視、VPS テレメトリ、複数地域の latency 測定、長期 SLA 集計、通知、公開ステータス表示を提供します。観測結果はソースごとに保持され、障害箇所の特定に使用されます。
システムアーキテクチャ
監視対象 VPS 独立した観測地点
Rust Agent Latency Agent
| メトリクス / TCP Ping | 複数ネットワークの TCP 遅延
+------------- スコープ付き Token -------+
v
Cloudflare Worker + Static Assets
ルーティング / 認証 / 集計 / API
| | |
D1 R2 Durable ObjectsD1 は設定、インデックス、現在状態、固定 SLA バケットを保存します。R2 は高頻度テレメトリ、スナップショット、アーカイブ、テーマ資産を優先的に担当します。Durable Objects は地域監視とバッファを調整し、1 分ごとの Cron が監視、集計、クリーンアップ、通知を進めます。
観測ソース
| ソース | 観測地点 | 答える問い |
|---|---|---|
| Cloudflare アクティブ監視 | エッジ・地域実行環境 | エッジから今この対象に接続できるか |
| Rust Agent 状態 | 監視対象 VPS | ホストのテレメトリが継続しているか |
| Agent TCP Ping | 監視対象 VPS | このホストから指定先までの経路品質はどうか |
| 外部 Latency Agent | 独立ネットワーク | 別地域・別回線から公開対象へどう到達するか |
ポートへの接続成功だけでは Agent の正常動作を証明できず、Agent が正常でも世界中から到達できるとは限りません。UI と API は出所ラベルを保持し、原因の切り分けを助けます。
一般的なアーキテクチャとの比較
以下の表は一般的な実装方式を比較したものです。
| 観点 | よくある構成 | NIE-SLA の選択 | 実務上の効果 |
|---|---|---|---|
| 観測 | 中央監視、または単一ホスト heartbeat | 4 種類の出所を明示的に分離 | 「1 つのランプですべてを判断」する曖昧さを低減 |
| 実行基盤 | 常駐中央サービス、DB、Frontend | Cloudflare エッジサービスと同一オリジン資産 | 中央サービスの日常保守を削減 |
| 高頻度履歴 | 生サンプルを単一の関係 DB に集中 | D1 は状態・集計、R2 はテレメトリ・アーカイブ | アクセス特性とクォータに合わせた保存 |
| オフライン報告 | メモリ再試行、またはサンプル破棄 | 永続ローカルキュー、確認後にのみ削除 | 短時間の切断・再起動による欠損を抑制 |
| 外部連携 | Frontend 向け内部 API | /api/v1 Manifest と安定した読み取り専用 API | 独立クライアント向けの明示的契約 |
| 表示拡張 | メイン Frontend 改修、または高権限拡張 | CSS と分離 Canvas テーマ | 視覚的自由度と安全境界を両立 |
| リリース | 単一のオンラインビルド経路・構成 | 5 種類の静的 Linux、checksum、ヘルスチェック、rollback | ローカルで再現・検証できる成果物 |
主要な実装
データ保存
短いキャッシュ、時間窓、最大点数、ダウンサンプリング、計画的クリーンアップを設計に含みます。任意ストレージの読み取り失敗は warnings[] で示し、空データに見せかけません。
Agent オフラインキュー
Rust Agent のキューは、一意な一時ファイル、create_new、Unix 0600、ファイルと親ディレクトリの fsync、アトミック rename を使います。永続化失敗時は dirty 状態を保って再試行し、サーバーが受領を確認するまでサンプルを削除しません。
公開 API
GET /api/v1 が機能とエンドポイントを公開します。公開読み取りは認証情報不要で、厳密な CORS allowlist、rate limit、cache、上限付き履歴パラメータにより制御されます。
認証情報とテーマ分離
管理は短期 Session と任意 TOTP を使用し、Agent と Latency はノード単位の scoped Token を使います。NodeQuality の上流認証情報は Worker Secret に留まります。保護バックアップは Cloudflare 互換の PBKDF2 SHA-256(100,000 回)と AES-GCM を使用し、Agent Token は復元先の鍵で再暗号化されます。
Canvas は same-origin 権限のない sandbox="allow-scripts" で動作します。CSP は直接通信、フォーム、トップナビゲーションを禁止し、制限された nie-sla:* プロトコルだけが公開情報を渡します。ZIP は SHA-256、パス、種類、個数、サイズを検証します。
適用範囲
NIE-SLA は、セルフホストの公開ステータス、VPS テレメトリ、複数地点の遅延、長期 SLA、カスタム表示に適しています。ログ、分散トレーシング、完全な APM の代替ではありません。
Cloudflare サービスとクォータに依存し、外部 Latency には独立ノードが必要です。分離テーマは任意の外部通信をできず、checksum チェーンは第三者署名ではありません。これらは採用前に評価すべき意図的なトレードオフです。