Skip to content

SLA 管理 (sla)

Headless 命令 — 不依赖桌面 GUI,直接使用核心包运行。适用于服务器、CI/CD、容器化等无桌面环境。

核心特性

  • 📋 合约管理: 创建/查看/终止 SLA 合约,支持 gold / silver / bronze 三级
  • 📊 指标记录: 记录可用性、响应时间、吞吐量、错误率四类指标
  • 🔍 违约检测: 自动检测违约(response_time 用 p95,其余用 mean),方向感知偏差
  • 💰 赔偿计算: 基于月费 x 赔偿率 x 偏差倍率,上限 2.0
  • 📈 合规报告: 生成合规百分比、违约统计和严重程度分布

概述

ChainlessChain CLI SLA 管理模块(Phase 61)实现跨组织的服务等级协议全生命周期管理。tiers 查看内置等级定义,create 创建合约(绑定组织、等级、月费),record 持续记录性能指标,check 自动检测违约(对 response_time 使用 p95、对其余 term 使用 mean),compensate 按偏差严重程度计算赔偿金额(cap 2.0),report 生成时间窗口内的合规报告。

命令参考

sla tiers — 等级目录

bash
chainlesschain sla tiers
chainlesschain sla tiers --json

列出内置 SLA 等级:

等级可用性最大响应时间最小吞吐量赔偿率
gold最高最低最高最高
silver中等中等中等中等
bronze基础较宽较低较低

sla create — 创建合约

bash
chainlesschain sla create <org-id>
chainlesschain sla create org_acme -t gold -f 5000 --json
chainlesschain sla create org_beta -t bronze -d 7776000000 -f 1000

创建 SLA 合约。-t 选择等级(默认 silver),-d 指定合约时长(毫秒),-f 设置月费。

sla list — 列出合约

bash
chainlesschain sla list
chainlesschain sla list -o org_acme -t gold -s active --limit 20 --json

按组织 (-o)、等级 (-t)、状态 (-s: active / expired / terminated) 过滤。

sla show — 合约详情

bash
chainlesschain sla show <sla-id>
chainlesschain sla show sla-001 --json

显示合约的完整信息:ID、组织、等级、状态、条款详情。

sla terminate — 终止合约

bash
chainlesschain sla terminate <sla-id>

将活跃合约标记为已终止。

sla record — 记录指标

bash
chainlesschain sla record <sla-id> <term> <value>
chainlesschain sla record sla-001 availability 0.998
chainlesschain sla record sla-001 response_time 120
chainlesschain sla record sla-001 throughput 500
chainlesschain sla record sla-001 error_rate 0.002 --json

记录 SLA 性能指标。支持的 term:

Term说明典型值
availability可用性0.0~1.0
response_time响应时间 (ms)正整数
throughput吞吐量 (rps)正整数
error_rate错误率0.0~1.0

sla metrics — 聚合指标

bash
chainlesschain sla metrics <sla-id>
chainlesschain sla metrics sla-001 --json

返回每个 term 的聚合统计:mean、p95、采样数。

sla check — 违约检测

bash
chainlesschain sla check <sla-id>
chainlesschain sla check sla-001 --json

检测 SLA 违约。对 response_time 使用 p95 值,其余 term 使用 mean 值进行比较。返回违约列表(term、严重程度、期望值、实际值、偏差百分比)。

违约严重程度:

严重程度说明
minor轻微偏差
moderate中等偏差
major严重偏差
critical极端偏差

sla violations — 违约历史

bash
chainlesschain sla violations
chainlesschain sla violations -s sla-001 -S major --limit 20 --json

列出已记录的违约。-s 按 SLA ID 过滤,-S 按严重程度过滤。

sla compensate — 赔偿计算

bash
chainlesschain sla compensate <violation-id>
chainlesschain sla compensate vio-001 --json

计算违约赔偿金额:base (月费 x 赔偿率) x multiplier (基于偏差),multiplier 上限 2.0。

sla report — 合规报告

bash
chainlesschain sla report <sla-id>
chainlesschain sla report sla-001 --start 1700000000000 --end 1710000000000 --json

生成 SLA 合规报告:合规百分比、违约总数、赔偿总额、按严重程度分布。--start / --end 指定时间窗口(毫秒时间戳)。

系统架构

用户命令 → sla.js (Commander) → sla-manager.js

           ┌──────────────────────────┼──────────────────────┐
           ▼                          ▼                      ▼
      合约管理                    指标/违约                赔偿/报告
  (create/list/show)         (record/check)         (compensate/report)
           ▼                          ▼                      ▼
       sla_contracts            sla_metrics              sla_violations
                              sla_violations

关键文件

文件职责
packages/cli/src/commands/sla.jssla 命令主入口
packages/cli/src/lib/sla-manager.js等级目录、合约管理、指标聚合、违约检测、赔偿计算核心实现

配置参考

配置项含义默认
tiersSLA 等级bronze / silver / gold / platinum
tier.gold.availability可用性阈值0.999
tier.gold.responseTimeMsP95 响应阈值100
tier.gold.throughputRps吞吐阈值500
compensation.currency赔偿币种CLC
compensation.multiplier违约倍率1.0
report.defaultWindowMs默认报告窗口30 天

性能指标

操作典型耗时备注
tiers< 20 ms内置枚举
create< 30 ms单行 INSERT
record< 15 ms指标写入
check< 100 ms聚合 + 违约写入
violations< 50 ms带索引分页
compensate< 50 ms赔偿计算
report< 200 ms时间窗聚合

测试覆盖率

__tests__/unit/sla-manager.test.js — 83 tests

覆盖:四级 tier 目录、合约 CRUD、指标 record 与聚合(availability/p95/throughput)、违约检测的阈值边界、赔偿倍率计算、report 时间窗过滤。

安全考虑

  1. 指标真实性record 来自业务侧推送,CLI 不做真实性校验;生产环境建议叠加签名
  2. 阈值防篡改:合约创建后阈值写入 SQLite,update 需要审计
  3. 赔偿上限compensate 按违约事件线性累加,业务侧应设置单月硬上限
  4. 报告脱敏report 默认仅输出聚合值,敏感分布走 --json + 权限控制
  5. 过期合约:到期合约 list 默认排除,避免误续费

故障排查

症状可能原因解决方案
check 无违约阈值过宽或样本不足查看 record 数量
compensate 报错违约已赔偿violations 确认 status
report时间窗外放宽 --start/--end
吞吐统计异常metric 单位错确认写入为 RPS

测试

bash
cd packages/cli
npx vitest run __tests__/unit/sla-manager.test.js
# 51 tests, all pass

使用示例

场景:完整 SLA 生命周期

bash
# 1. 查看等级
chainlesschain sla tiers

# 2. 创建金级合约
chainlesschain sla create org_acme -t gold -f 5000

# 3. 持续记录指标
chainlesschain sla record sla-001 availability 0.999
chainlesschain sla record sla-001 response_time 85
chainlesschain sla record sla-001 throughput 800

# 4. 检测违约
chainlesschain sla check sla-001

# 5. 查看违约并计算赔偿
chainlesschain sla violations -s sla-001
chainlesschain sla compensate vio-001

# 6. 生成合规报告
chainlesschain sla report sla-001 --json

相关文档

基于 MIT 许可发布