Nightwatch: オープンソースの読み取り専用AI SRE
Nightwatchは、アラート疲れを軽減し、根本原因分析を自動化するために設計された、オープンソースのローカルファーストなAI SREレイヤーです。「アラートストーム」(単一の障害が数十の異なるアラートを引き起こす状態)を単一の統合されたインシデントへと変換し、ツール呼び出しを行うAIエージェントを利用して、稼働中のシステムを調査し、人間のオペレーターによる承認が必要な修正案を提案します。
設計による読み取り専用アーキテクチャ
Nightwatchは厳格に読み取り専用です。観測、推論、推奨を行いますが、コマンドの実行、アラートの承認、または本番環境の変更は決して行いません。提案されるすべての修正案は、人間がゲート(承認)して実行するための、コピー&ペースト可能なアーティファクトとして提供されます。この設計により、調査中にAIが稼働中のシステムに新たな障害を導入することを防ぎます。
AI SRE 調査官
Nightwatchの中核は、ReActループ(reason $\rightarrow$ act $\rightarrow$ observe)を使用して稼働中のシステムから証拠を収集するAI SRE調査官です。このエージェントは、読み取り専用の機能を持つ型定義された許可リストによって駆動され、読み取り操作のみを実行できることが保証されます。
調査機能
| 機能 | 読み取り専用アクセス |
|---|---|
| Docker | コンテナ、ログ、統計、および検査 |
| Kubernetes | クラスター内のRBACを介したPod、ログ、イベント、およびデプロイメント |
| AWS | IAM read-roleを介したCloudTrailの変更イベント、EC2、セキュリティグループ、およびクォータ |
| Grafana | データソースプロキシを介したPromQLおよびLogQL |
| GitHub | 変更イベントのRCAのためのCI実行、リリース、およびPR |
| Git | コミット、diff、およびコード検索のためのミラーリングされたリポジトリ |
| Host | 通常のVM用のCPU、メモリ、ディスク、プロセス、およびソケットログ |
安全性と根拠付け(Grounding)
ハルシネーション(幻覚)とセキュリティリスクを防ぐため、Nightwatchはいくつかの強化策を採用しています:
- Injection Shielding: 不信なログやdiffをシールドし、プロンプトインジェクションを防ぎます。
- Secret Scrubbing: 認証情報や機密データは、LLMプロバイダーに送信される前に一方向的にスクラブ(除去)されます。
- Grounding Gate: 証拠によって主張が裏付けられていない場合に、信頼レベルを制限するメカニズムです。
- Action Classification: すべてのアクションは、
read_only、reversible、またはirreversibleとして分類されます。不明なアクションは、デフォルトでirreversibleに強制されます。
Ninox Runnerによる分散調査
Nightwatchは、制限された環境内のシステムを調査するために、「脳(brain)」と「runner(ランナー)」のアーキテクチャを利用しています。ninox runnerは、VPC、クラスター、またはオンプレミスセグメント内に存在する、アウトバウンド専用の軽量なエージェントです。ランナーは認証情報をローカルに保持し、脳(brain)へダイヤルバックするため、インバウンドのファイアウォール穴を開ける必要がありません。
アラートクラスタリングとノイズ削減
既存の監視ツール(Prometheus Alertmanager、Checkmk、Icinga2、およびZabbixなど)の上位に位置し、アラートを単一のスキーマに正規化します。その後、ホスト、サービス、severity、および時間枠によってアラートをクラスタリングし、単一のインシデントへとグループ化します。
システムはまた、「ノイズの多い」チェック(フラッピングしている、または過敏すぎるもの)を特定し、エビデンスに基づいたチューニングの推奨事項を提供することで、人間のオペレーターに根拠を提示します。
LLM統合とプライバシー
Nightwatchは、Anthropic(調査官のデフォルト)、OpenAI、Mistral、およびOllamaやvLLMを介したローカルLLMを含む、複数のLLMプロバイダーをサポートしています。また、LLMを必要とせずに、基本的な要約と推奨事項を行うために完全にオフラインで動作するtemplateプロバイダーも含まれています。
プライバシーを維持するため、情報の隠蔽(redaction)と機密情報のスクラブ(secret-scrubbing)は、すべてのリモートコールに先立って実行され、ホスト名、IP、およびUUIDを決定論的なプレースホルダーに置き換えます。
コミュニティと拡張性
NightwatchはApache License 2.0の下でライセンスされています。ユーザーは、MCPサーバーを指し示したり、Pythonの機能プラグインを記述したり、runnerプロトコルを使用したりすることで、AI SREの機能を拡張できます。