跳转至

OPS 管理

DoubleZero OPS 管理门户是贡献者记录和跟踪事故(计划外中断)及维护(计划内工作)的地方。所有工单对所有贡献者可见。

门户: https://doublezero.xyz/ops-management

门户与 Slack

OPS 管理门户和 Slack 协同工作。所有事故和维护均以工单形式进行跟踪,可通过门户或 API 访问。每张工单会自动通知相应的 Slack 频道,并为每位贡献者提供网络当前状况的共享视图。Slack 是对话发生的地方:共享日志、与其他贡献者协调以及协作处理活跃问题。

工单是规范记录,无论是通过门户还是 API 创建。Slack 线程不是:它们不会更新工单状态,也不会永久存储。即使对话在 Slack 中进行,也请始终保持工单状态为最新。

门户和 Slack 服务于不同的目的。两者都要使用,但要用在正确的场景。

使用门户(或 API)用于... 使用 Slack 用于...
开启、更新和关闭工单 针对活跃问题的对话和协作
记录状态变更 共享日志、截图或发起通话
分配或升级工单 快速引起他人关注问题
关闭时设置根本原因 与其他贡献者协调

入门引导

在使用门户之前,请完成以下一次性步骤。

1. 设置您的 Ops Manager 密钥

注册一个 Solana 钱包公钥作为您的 Ops Manager 密钥。支持的钱包:Phantom、Solflare、Coinbase Wallet。

doublezero contributor update \
  --ops-manager <OPS_MANAGER_PUBKEY> \
  --pubkey <CONTRIBUTOR_PUBKEY>

2. 在门户上连接您的钱包

  1. 导航至 https://doublezero.xyz/ops-management
  2. 点击 Connect Your Wallet 并选择您的钱包。
  3. 签署消息以证明您拥有该 Ops Manager 密钥。

认证完成后,将显示 事故跟踪表

帐户设置位于 Settings 菜单(右上角齿轮图标)下:API Key Management、User Management 和 Escalation Contacts。您看到的选项取决于您的角色。

3. 创建 API 密钥(可选)

如需通过编程方式访问而非使用 Web 表单:

  1. 打开 Settings 菜单(齿轮图标),选择 API Key Management
  2. 创建一个或多个 API 密钥。
  3. 从该页面下载 API 文档。

事故

事故是指计划外的影响服务的事件。

严重级别

根据对 DoubleZero 网络的影响分配严重级别。随着情况的发展,您可以更新严重级别。

严重级别 影响 响应
sev1 完全中断或重大控制/数据平面故障且无备用方案 立即放下一切处理,即使在工作时间之外。立即升级至 DoubleZero Foundation。
sev2 部分但严重的影响;服务降级,可能有备用方案 视为紧急处理。积极协调。持续降级需要夜间响应。
sev3 有限或无用户可见影响;如未解决可能升级 工作时间内最高优先级。密切监控。除非影响加大,否则无需下班后升级。
严重级别示例

Sev1 示例

  • 超过 10% 的用户流量在 DoubleZero 上被黑洞丢弃,无法回退到公共互联网
  • 超过 80% 的用户注册、连接或断开尝试失败
  • 超过 20% 的 DZD 报告接口错误
  • Controller 向 DZD 代理返回有效但不正确的配置

Sev2 示例

  • 超过 20% 的用户无法通过 DoubleZero 隧道发送/接收流量,但可回退到公共互联网
  • 0–10% 的用户流量在 DoubleZero 上被黑洞丢弃且无备用方案
  • 20–80% 的新用户注册、连接或断开尝试失败
  • 超过 20% 的配置代理无法应用 DZD 配置
  • 0–20% 的 DZD 报告接口错误
  • 上游问题导致可观测性丧失(监控/告警中断)
  • 链上数据管道中断或产生不正确的数据
  • 超过 20% 的互联网延迟数据采集或提交失败
  • DZD 代理无法访问 Controller
  • Controller 向 DZD 返回不会被应用的无效配置

Sev3 示例

  • 0–20% 的用户无法通过 DoubleZero 隧道发送/接收流量,但可回退到公共互联网
  • 0–20% 的 DZD 报告接口错误
  • 0–20% 的 DZD 出现配置代理故障
  • 0–20% 的用户注册、连接或断开尝试失败
  • 单个数据提供商超过 20% 的互联网延迟数据采集或提交失败
  • 所有数据提供商 0–20% 的互联网延迟数据采集或提交失败
  • 缺陷或技术债务导致无法消除的告警噪音
  • DIA 中断或账本 RPC 网络问题影响 0–20% 的设备持续数小时
  • 低影响问题,如小型缺陷、外观错误或不影响客户流量的孤立事件
  • 少量设备间歇性报告错误但未造成服务中断

开启事故

点击 Create New Record,在门户上选择 Type = Incident,或通过 API 提交。

必填:

字段 描述
title 简短摘要(最多 100 个字符)
description 详细说明(最多 500 个字符)
severity sev1sev2sev3
status 创建时不能设置为终态(resolvedclosed
Device 和/或 Link 至少需要一个。在 Web 表单中,从您的设备和链路代码的下拉列表中选择。使用 API 时,传递对应的公钥作为 device_pubkey 和/或 affected_link_pubkey

可选:

字段 描述
reporter_name / reporter_email 您的联系方式
assignee 负责解决问题的人
internal_reference 您的内部工单 ID(例如 Jira、ServiceNow)
start_at 默认为创建时间;可编辑

创建后,将在贡献者事故 Slack 频道中发布通知,包含工单 ID、严重级别、受影响的设备/链路和贡献者名称。

更新事故

随着事故的进展,请保持工单状态为最新。这是其他贡献者和 DZ 了解正在处理什么的信号。

状态 何时设置
open 初始状态:问题已报告,尚未开始处理
acknowledged 您已看到并接手负责
investigating 正在积极诊断:收集日志、检查指标
mitigating 根本原因已知或疑似;正在应用修复或变通方案
monitoring 修复已应用;观察确认是否持续有效
resolved 问题已确认修复;必须填写根本原因
closed 完全完成;无需进一步操作;必须填写根本原因
open → acknowledged → investigating → mitigating → monitoring → resolved → closed

如果合适,您可以跳过某些状态。例如,如果您立即开始处理,可以直接从 open 跳到 investigating。始终使用最能准确反映当前状态的状态。

每次状态更新都会在原始 Slack 通知线程中发布回复。

关闭事故

要将事故移至 resolvedclosed,必须设置 根本原因。如果您已经知道根本原因,可以在更早的阶段设置;在关闭时它变为必填项。

代码 描述
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 sev1sev2sev3。设置为预期的用户影响(见下方说明)。
start_at 计划开始时间(UTC)
end_at 计划结束时间(UTC);必须晚于 start_at
Device 和/或 Link 至少需要一个。在 Web 表单中,从您的设备和链路代码的下拉列表中选择。使用 API 时,传递对应的公钥作为 device_pubkey 和/或 affected_link_pubkey

严重级别对维护的适用方式与事故相同。根据您预期在窗口期间对用户的影响进行设置,使用上述严重级别

创建后,将在贡献者维护 Slack 频道中发布通知,包含工单 ID、受影响的设备/链路、计划窗口和贡献者名称。

管理维护状态

随着窗口的推进,请保持状态为最新。

状态 何时设置
planned 已安排,尚未开始
in-progress 工作已开始
completed 工作已成功完成
closed end_at 后 24 小时自动设置
cancelled 在执行前或执行期间取消
planned → in-progress → completed → closed (auto 24h after end_at)
    ↓          ↓
    └──────────┴──→ cancelled

升级联系人

升级联系人告诉 DoubleZero 和其他贡献者,当您负责的网络部分出现问题时应联系谁。您为自己的组织设置联系人。联系人可以是个人或团队,例如您的 NOC。每个联系人有一种或多种联系方式以及值班时间表。

打开 Settings 菜单(齿轮图标),选择 Escalation Contacts。只有 ops manager 可以添加或编辑联系人。

添加联系人

为每个联系人设置:

字段 描述
Name 联系人名称,可以是个人或团队(如您的 NOC)
Timezone 本地时区,用于解读时间表
Availability 24/7,或联系人值班的一个或多个每周时间段
Contact methods 一种或多种联系方式,按优先级排列

支持的联系方式包括电子邮件、电话、Slack、Telegram 和 WhatsApp。顺序很重要:第一种方式是首先尝试的。

可用性和覆盖缺口

联系人可以全天候(24/7)可用,也可以在您定义的每周时间段内可用,例如周一至周五 09:00 至 17:00。时间段以联系人的本地时区输入并以 UTC 显示,因此夏令时会自动处理。

覆盖缺口 视图显示每周您的组织中无人值班的时间段。使用它来发现并填补缺口。

轮值窗口

一周被分成半小时的窗口。对于每个窗口,您可以设置联系人被联系的顺序。这让您无需编辑每个联系人即可运行值班轮换。

可见性

您可以控制谁能看到您的联系人。DoubleZero 始终可以看到。您可以选择其他人是否可以看到:

设置 还有谁可以看到您的联系人
仅 DoubleZero(默认) 其他贡献者不可见
所有人 所有贡献者
部分贡献者 仅您选择的贡献者

您自己的团队始终可以看到您的联系人。可见性为整个组织设置一次,适用于您的所有联系人。


用户管理

默认情况下,您的 Ops Manager 密钥是唯一可以代表您的组织进行操作的帐户。您可以添加团队成员,以便多人管理您的工单。

打开 Settings 菜单(齿轮图标),选择 User Management。只有 ops manager 可以添加或移除团队成员。

为每个团队成员设置:

字段 描述
Name 此人的姓名
Wallet pubkey 用于登录的 Solana 钱包
Access level ReadRead-write

访问级别:

  • Read:可以查看工单和升级联系人,并创建只读 API 密钥。不能创建、更新或关闭工单。
  • Read-write:拥有创建、更新和关闭工单的完整权限,并可以创建任何级别的 API 密钥。

每个团队成员使用自己的钱包登录,方式与您连接 Ops Manager 密钥时相同。


权限和升级

贡献者可以做什么

  • 仅为自己的设备和链路创建和管理工单。
  • 将工单分配给自己或升级至 DZ/Malbeclabs。
  • 查看所有贡献者的所有工单。
  • 添加团队成员并设置其访问级别(仅 ops manager)。
  • 管理其组织的升级联系人(仅 ops manager)。

DZ/Malbeclabs 管理员可以做什么

  • 为任何贡献者的设备和链路创建工单。
  • 在贡献者之间分配或重新分配工单。
  • 处理升级和支持请求。

DZX 链路所有权

DZX 链路连接来自两个不同贡献者的设备。A 侧 贡献者(链路名称中的第一个设备)拥有该链路,是唯一可以为其创建工单的人。

示例: 对于链路 deviceA:deviceB,拥有 deviceA 的贡献者拥有该链路。

如果问题出在 Z 侧:

  1. A 侧贡献者为 DZX 链路创建工单。
  2. 将工单分配给 DZ/Malbeclabs。
  3. DZ/Malbeclabs 进行调查,如有需要则重新分配给 Z 侧贡献者。

我们认识到此工作流程存在局限性。Z 侧贡献者目前无法为其不拥有的 DZX 链路创建工单,这意味着协调必须通过 DZ/Malbeclabs 进行。我们正在努力改进此功能,使 DZX 链路的双方都能独立声明事故和维护。