OPS管理
DoubleZero OPS管理ポータルは、コントリビューターがネットワーク全体のインシデント(計画外の障害)およびメンテナンス(計画的な作業)を記録・追跡する場所です。すべてのチケットはすべてのコントリビューターに公開されます。
ポータル: https://doublezero.xyz/ops-management
ポータルとSlack
OPS管理ポータルとSlackは連携して機能します。すべてのインシデントとメンテナンスはチケットとして追跡され、ポータルまたはAPIからアクセスできます。各チケットは適切なSlackチャンネルに自動通知を送り、すべてのコントリビューターにネットワーク上で何が起きているかの共有ビューを提供します。Slackは会話が行われる場所です:ログの共有、他のコントリビューターとの調整、アクティブな問題への協力などです。
チケットは、ポータル経由で作成されたかAPI経由で作成されたかにかかわらず、正式な記録です。Slackスレッドはそうではありません:チケットのステータスは更新されず、永続的に保存されません。会話がSlackで行われている場合でも、常にチケットのステータスを最新に保ってください。
ポータルとSlackはそれぞれ異なる目的を果たします。両方を使用してください。ただし、適切な用途に使い分けてください。
| ポータル(またはAPI)で行うこと... | Slackで行うこと... |
|---|---|
| チケットの作成、更新、クローズ | アクティブな問題に関する会話とコラボレーション |
| ステータス遷移の記録 | ログやスクリーンショットの共有、通話の開始 |
| チケットの割り当てまたはエスカレーション | 問題に素早く注目を集める |
| クローズ時の根本原因の設定 | 他のコントリビューターとの調整 |
オンボーディング
ポータルを使用する前に、以下の手順を一度完了してください。
1. Ops Managerキーの設定
SolanaウォレットのpubkeyをOps Managerキーとして登録します。対応ウォレット:Phantom、Solflare、Coinbase Wallet。
doublezero contributor update \
--ops-manager <OPS_MANAGER_PUBKEY> \
--pubkey <CONTRIBUTOR_PUBKEY>
2. ポータルでウォレットを接続
- https://doublezero.xyz/ops-management にアクセスします。
- Connect Your Wallet をクリックし、ウォレットを選択します。
- メッセージに署名して、Ops Managerキーの所有権を証明します。
認証が完了すると、Incident Tracking Table が表示されます。
アカウント設定は Settings メニュー(右上の歯車アイコン)の中にあります:API Key Management、User Management、Escalation Contacts。表示されるオプションはロールによって異なります。
3. APIキーの作成(オプション)
Webフォームの代わりにプログラムからアクセスする場合:
- Settings メニュー(歯車アイコン)を開き、API Key Management を選択します。
- 1つ以上のAPIキーを作成します。
- このページからAPIドキュメントをダウンロードします。
インシデント
インシデントとは、計画外のサービスに影響を与えるイベントです。
重要度レベル
DoubleZeroネットワークへの影響に基づいて重要度を割り当てます。状況の進展に応じて重要度を更新できます。
| 重要度 | 影響 | 対応 |
|---|---|---|
sev1 |
全面的な停止、またはフォールバックのない主要なコントロール/データプレーンの障害 | 営業時間外であっても直ちにすべてを中断して対応。DoubleZero Foundationに即座にエスカレーション。 |
sev2 |
部分的だが大きな影響;フォールバックの可能性があるサービス劣化 | 緊急として扱う。積極的に調整。持続的な劣化に対しては夜間対応が必要。 |
sev3 |
限定的またはユーザーに見える影響なし;未解決の場合エスカレートの可能性 | 営業時間中の最優先事項。綿密に監視。影響が拡大しない限り、時間外のエスカレーションは不要。 |
重要度の例
Sev1の例
- DoubleZero上でユーザートラフィックの10%以上がブラックホール化し、パブリックインターネットへのフォールバックなし
- ユーザーのオンボーディング、接続、または切断の試行の80%以上が失敗
- DZDの20%以上がインターフェースエラーを報告
- コントローラーがDZDエージェントに有効だが不正な設定を返している
Sev2の例
- ユーザーの20%以上がDoubleZeroトンネル経由でトラフィックを送受信できないが、パブリックインターネットにフォールバック可能
- フォールバックなしでDoubleZero上のユーザートラフィックの0〜10%がブラックホール化
- 新規ユーザーのオンボーディング、接続、または切断の試行の20〜80%が失敗
- 設定エージェントの20%以上がDZD設定の適用に失敗
- DZDの0〜20%がインターフェースエラーを報告
- 上流の問題によるオブザーバビリティの喪失(監視/アラートがダウン)
- オンチェーンデータパイプラインがダウンまたは不正なデータを生成
- インターネットレイテンシの収集または送信の20%以上が失敗
- DZDエージェントからコントローラーにアクセス不能
- コントローラーがDZDに適用されない無効な設定を返している
Sev3の例
- ユーザーの0〜20%がDoubleZeroトンネル経由でトラフィックを送受信できないが、パブリックインターネットへのフォールバックあり
- DZDの0〜20%がインターフェースエラーを報告
- DZDの0〜20%が設定エージェントの障害を経験
- ユーザーのオンボーディング、接続、または切断の試行の0〜20%が失敗
- 単一データプロバイダーのインターネットレイテンシ収集または送信の20%以上が失敗
- 全データプロバイダーのインターネットレイテンシ収集または送信の0〜20%が失敗
- サイレンスにできないアラートノイズを引き起こすバグまたは技術的負債
- デバイスの0〜20%で数時間にわたるDIAダウンまたはレジャーRPCネットワーキングの問題
- 顧客トラフィックに影響しない軽微なバグ、表示上のエラー、または個別のインシデントなどの低影響の問題
- サービス中断なしにごく一部のデバイスが断続的にエラーを報告
インシデントの作成
Create New Record をクリックし、ポータルでType = Incident を選択するか、API経由で送信します。
必須:
| フィールド | 説明 |
|---|---|
title |
短い概要(最大100文字) |
description |
詳細な説明(最大500文字) |
severity |
sev1、sev2、または sev3 |
status |
作成時に終了状態(resolved、closed)には設定できません |
| デバイスおよび/またはリンク | 少なくとも1つ必要。Webフォームでは、デバイスコードとリンクコードのドロップダウンから選択します。APIを使用する場合は、対応するpubkeyを device_pubkey および/または affected_link_pubkey として渡します。 |
オプション:
| フィールド | 説明 |
|---|---|
reporter_name / reporter_email |
あなたの連絡先情報 |
assignee |
解決の責任者 |
internal_reference |
社内チケットID(例:Jira、ServiceNow) |
start_at |
デフォルトは作成時刻;編集可能 |
作成されると、チケットID、重要度、影響を受けるデバイス/リンク、およびコントリビューター名とともに、コントリビューターインシデントSlackチャンネルに通知が投稿されます。
インシデントの更新
インシデントの進行に合わせて、チケットのステータスを最新に保ってください。これは、他のコントリビューターやDZが何が対応中かを把握するための指標です。
| ステータス | 設定するタイミング |
|---|---|
open |
初期状態:問題が報告され、まだ対応されていない |
acknowledged |
確認し、オーナーシップを取った |
investigating |
積極的に診断中:ログの収集、メトリクスの確認 |
mitigating |
根本原因が判明または推定;修正またはワークアラウンドを適用中 |
monitoring |
修正を適用済み;持続するか確認のため監視中 |
resolved |
問題の修正を確認;根本原因が必須 |
closed |
完全に完了;追加アクション不要;根本原因が必須 |
open → acknowledged → investigating → mitigating → monitoring → resolved → closed
適切であればステータスを飛ばすことができます。例えば、すぐに対応を開始した場合は open から直接 investigating にジャンプできます。常に現在の状態に最も正確なステータスを使用してください。
各ステータス更新は、元のSlack通知スレッドに返信として投稿されます。
インシデントのクローズ
インシデントを resolved または closed に移行するには、根本原因 を設定する必要があります。既に判明している場合は、より前の段階で根本原因を設定できます。クローズ時には必須となります。
| コード | 説明 |
|---|---|
hardware |
ハードウェアの修理、交換、またはアップグレード(SFP、NIC、ケーブル、デバイス) |
software |
ソフトウェアまたはファームウェアの修正、更新、または再起動 |
configuration |
設定の変更、修正、またはロールバック |
capacity |
輻輳、キャパシティ制限、またはトラフィック管理 |
carrier |
回線、波長、またはクロスコネクトプロバイダーの問題 |
network_external |
コントリビューターの管理外の外部ネットワーク問題 |
facility |
データセンターインフラの問題(電源、冷却) |
fiber_cut |
物理的なファイバー損傷の修復 |
security |
セキュリティインシデントの緩和 |
human_error |
運用上のミスの修正 |
false_positive |
調査後に実際の問題が見つからなかった |
duplicate |
別のチケットで既に追跡中 |
self_resolved |
介入なしに問題が解決 |
dz_managed |
DoubleZero管理のソフトウェアコンポーネント(activator、controllerなど)の問題 |
メンテナンス
メンテナンスレコードは、可用性に影響する可能性のある計画的な時間制限のある作業です。他のコントリビューターがウィンドウの競合を確認・回避できるよう、事前に作成してください。
メンテナンスのスケジュール
ポータルで Create New Record > Maintenance をクリックするか、API経由で送信します。
必須:
| フィールド | 説明 |
|---|---|
title |
短い概要(最大100文字) |
description |
詳細な説明(最大500文字) |
severity |
sev1、sev2、または sev3。予想されるユーザー影響に基づいて設定します(以下の注記を参照)。 |
start_at |
計画開始時刻(UTC) |
end_at |
計画終了時刻(UTC);start_at より後である必要があります |
| デバイスおよび/またはリンク | 少なくとも1つ必要。Webフォームでは、デバイスコードとリンクコードのドロップダウンから選択します。APIを使用する場合は、対応するpubkeyを device_pubkey および/または affected_link_pubkey として渡します。 |
重要度はインシデントと同じ方法でメンテナンスにも適用されます。ウィンドウ中に予想されるユーザー影響に基づいて、上記の重要度レベルを使用して設定してください。
作成されると、チケットID、影響を受けるデバイス/リンク、計画ウィンドウ、およびコントリビューター名とともに、コントリビューターメンテナンスSlackチャンネルに通知が投稿されます。
メンテナンスステータスの管理
ウィンドウの進行に合わせてステータスを最新に保ってください。
| ステータス | 設定するタイミング |
|---|---|
planned |
スケジュール済み、まだ開始されていない |
in-progress |
作業が開始された |
completed |
作業が正常に完了 |
closed |
end_at の24時間後に自動設定 |
cancelled |
実行前または実行中にキャンセル |
planned → in-progress → completed → closed (end_atの24時間後に自動)
↓ ↓
└──────────┴──→ cancelled
エスカレーション連絡先
エスカレーション連絡先は、ネットワークのあなたの担当部分に問題が発生した場合に、DoubleZeroや他のコントリビューターが誰に連絡すべきかを示します。自組織の連絡先は自分で設定します。連絡先は個人またはNOCなどのチームにすることができます。各連絡先には、1つ以上の連絡方法とオンコールのスケジュールがあります。
Settings メニュー(歯車アイコン)を開き、Escalation Contacts を選択します。連絡先の追加・編集はops managerのみが行えます。
連絡先の追加
各連絡先に以下を設定します:
| フィールド | 説明 |
|---|---|
| Name | 連絡先の名前(個人またはNOCなどのチーム) |
| Timezone | ローカルタイムゾーン(スケジュールの読み取りに使用) |
| Availability | 24/7、または連絡先がオンコールである1つ以上の週間タイムスロット |
| Contact methods | 優先順位順の1つ以上の連絡方法 |
サポートされている連絡方法は、メール、電話、Slack、Telegram、WhatsAppです。順序が重要です:最初の方法が最初に試すべき方法です。
可用性とカバレッジギャップ
連絡先は24時間年中無休(24/7)で対応可能か、定義した週間タイムスロット中に対応可能です(例:月曜日から金曜日、09:00〜17:00)。スロットは連絡先のローカルタイムゾーンで入力され、UTCで表示されるため、夏時間は自動的に処理されます。
カバレッジギャップ ビューは、組織内の誰もオンコールでない各週の時間帯を表示します。ギャップを見つけて解消するために活用してください。
ローテーションウィンドウ
1週間は30分単位のウィンドウに分割されます。各ウィンドウに対して、連絡先に連絡する順序を設定できます。これにより、各連絡先を編集せずにオンコールローテーションを運用できます。
可視性
連絡先を誰が見られるかを制御できます。DoubleZeroは常に見ることができます。他に誰が見られるかはあなたが選択します:
| 設定 | 連絡先を見られるその他の人 |
|---|---|
| DoubleZeroのみ(デフォルト) | 他のコントリビューターなし |
| 全員 | すべてのコントリビューター |
| 一部のコントリビューター | 選択したコントリビューターのみ |
自分のチームは常に連絡先を見ることができます。可視性は組織全体に対して一度設定され、すべての連絡先に適用されます。
ユーザー管理
デフォルトでは、Ops Managerキーのみが組織のために操作できるアカウントです。チームメンバーを追加して、複数の人がチケットを管理できるようにすることができます。
Settings メニュー(歯車アイコン)を開き、User Management を選択します。チームメンバーの追加・削除はops managerのみが行えます。
各チームメンバーに以下を設定します:
| フィールド | 説明 |
|---|---|
| Name | そのメンバーの名前 |
| Wallet pubkey | サインインに使用するSolanaウォレット |
| Access level | Read または Read-write |
アクセスレベル:
- Read:チケットとエスカレーション連絡先の閲覧、読み取り専用APIキーの作成が可能。チケットの作成、更新、クローズはできません。
- Read-write:チケットの作成、更新、クローズへの完全アクセス、任意のレベルのAPIキーの作成が可能。
各チームメンバーは、Ops Managerキーの接続と同じ方法で、自分のウォレットでサインインします。
権限とエスカレーション
コントリビューターができること
- 自分のデバイスとリンクに対してのみチケットを作成・管理。
- チケットを自分に割り当てるか、DZ/Malbeclabsにエスカレーション。
- すべてのコントリビューターのすべてのチケットを閲覧。
- チームメンバーの追加とアクセスレベルの設定(ops managerのみ)。
- 自組織のエスカレーション連絡先の管理(ops managerのみ)。
DZ/Malbeclabs管理者ができること
- 任意のコントリビューターのデバイスとリンクに対してチケットを作成。
- コントリビューター間でチケットを割り当てまたは再割り当て。
- エスカレーションとサポートリクエストの処理。
DZXリンクの所有権
DZXリンクは、2つの異なるコントリビューターのデバイスを接続します。A側 コントリビューター(リンク名の最初のデバイス)がリンクを所有し、そのリンクに対してチケットを作成できる唯一の存在です。
例: リンク deviceA:deviceB の場合、deviceA を所有するコントリビューターがリンクを所有します。
Z側に問題がある場合:
- A側コントリビューターがDZXリンクのチケットを作成します。
- チケットをDZ/Malbeclabsに割り当てます。
- DZ/Malbeclabsが調査し、必要に応じてZ側コントリビューターに再割り当てします。
このワークフローに制限があることは認識しています。現在、Z側コントリビューターは自分が所有していないDZXリンクのチケットを作成できないため、調整はDZ/Malbeclabsを経由する必要があります。DZXリンクの両側が独立してインシデントとメンテナンスを報告できるよう、改善に取り組んでいます。