跳转至

新建 SLO


通过新建 SLO,您可以为服务选择测量方式、考核周期和目标,并在达标率下降时接收告警。创建前需拥有 SLO 配置管理权限;选择监控器类型时,先创建相应监控器;选择指标类型时,先将业务数量指标采集到当前工作空间。

进入监控 > SLO,点击新建 SLO。

配置 SLO

  1. 选择 SLI 类型:监控器类型关联 SLI 监控器;指标类型配置总数与成功数查询。
  2. 设置考核周期、检测频率,以及达标率中的目标和最低目标。
  3. 按需添加标签、关联告警策略,然后保存。

考核周期与检测频率

考核周期决定每轮评估覆盖的时间,支持最近 7 天或 30 天;检测频率决定 SLO 重新计算和检测的间隔,支持 5 分钟或 10 分钟。例如,选择 30 天、5 分钟,表示每 5 分钟评估此前 30 天的服务表现。来源监控器仍按各自的检测频率运行。

达标率:目标与最低目标

目标和最低目标是针对同一个实际达标率设置的两条阈值,共用同一考核周期:

  • 目标:期望服务达到的可靠性水平。例如,目标为 99.9%,监控器类型要求正常运行时间占比达到 99.9%;指标类型要求成功数占总数的比例达到 99.9%。监控器类型的初始错误预算也由此目标计算。
  • 最低目标:服务可接受的达标率下限。低于此下限时生成紧急事件,用于识别更严重的服务质量下降。

配置须满足 0 < 最低目标 < 目标 < 100。例如,目标为 99.9%、最低目标为 99.5% 时:

实际达标率 检测结果
≥ 99.9% 达到目标。
≥ 99.5% 且 < 99.9% 生成警告事件。
< 99.5% 生成紧急事件。

SLO 按自身达标率产生事件。需要发送通知时,关联告警策略,并在策略中配置对应事件等级的通知对象;通知时间、重复通知等行为按策略执行。

名称、SLI 类型、目标和最低目标保存后固定。其余配置的编辑说明见管理 SLO。

标签

在页面左上角通过添加 Tags关联全局标签,便于按业务、团队等归类和筛选 SLO。这些标签会写入该 SLO 后续生成的检测事件的 df_label 字段,可用于事件筛选和数据联动。

标签用于标识 SLO 及其事件;下面的分组维度用于按来源监控器事件中的字段值分别计算达标率。

监控器类型:关联 SLI

SLI(服务等级指标)是衡量服务质量的指标。在监控器类型下,SLI 配置项中选择的是一个或多个已有监控器,系统以这些监控器对应的正常运行时间占比衡量服务质量。

应选择能够代表同一考核对象的监控器。例如,考核支付服务时,可关联“支付接口响应过慢”和“支付请求错误率过高”两个监控器。任一监控器产生异常时,相应异常时段会计入 SLO;同一时段的多个异常会合并计算。扣分、达标率及错误预算的关系见监控器类型的计算说明。

分组维度

分组维度决定按哪些业务对象分别考核。支持 project(项目)、env(环境)、service(服务),可选择一个或多个字段。

配置方式 统计结果与适用场景
留空 将关联的 SLI 作为一个整体,合并异常时段后计算一份达标率,适合考核整个服务或业务的整体表现。
选择 service 按每个服务分别计算。例如,payment-api 和 order-api 各有一份达标率,某个服务的异常计入该服务的结果。
选择 env、service 按实际字段值组合分别计算,例如 prod + payment-api、staging + payment-api,适合分别考核同一服务在不同环境中的表现。

分组前,请确认来源监控器产生的异常事件包含所选字段及其值,例如通过监控器的检测维度传递 env、service。系统按这些字段归类异常,缺少任一所选字段的事件会被忽略,影响统计完整性。正常分组的补全会使用应用性能监测中的近期链路数据,需保证相应业务维度已随链路上报。

在 SLO 详情或 SLO 图表中,选择各分组维度的具体值,可查看对应组合的结果。各组合独立累计异常时长;如果需要考核项目整体,请创建仅按 project 分组的 SLO。修改分组配置后,从下一个检测周期起生效,历史数据按原有分组保留。

指标类型:配置总数与成功数

在总数和成功数中分别配置查询,支持图形化指标查询、DQL 和 PromQL。两项查询须覆盖相同的业务范围、计量单位和考核周期;成功数是总数中符合成功条件的数量,需满足 总数 > 0、0 ≤ 成功数 ≤ 总数。

每项查询应将每条时间线汇总为一个周期数量值。返回多条时间线时,系统将其数量相加;需要独立考核不同业务范围时,应分别创建 SLO。

DQL 示例:支付请求成功率

假设指标集 payment_requests 中,request_count 记录每个采集间隔内新增的请求数,service 标识服务,result 标识请求结果。要考核 payment-api 的请求成功率,可配置:

总数:

M::`payment_requests`:(sum(`request_count`)) { `service` = 'payment-api' }

成功数:

M::`payment_requests`:(sum(`request_count`)) { `service` = 'payment-api', `result` = 'success' }

将指标集、字段和标签替换为实际采集内容,时间范围由 SLO 的考核周期控制。若最近 30 天总数为 100,000、成功数为 99,950,则达标率为 99,950 ÷ 100,000 × 100% = 99.95%。

PromQL 示例:累计计数器

PromQL 按即时查询执行,需要在表达式中完成周期统计。例如,payment_requests_total 持续累加请求数,考核周期为 30 天时,可使用 increase 计算该周期内的增量:

总数:

sum(increase(payment_requests_total{service="payment-api"}[30d]))

成功数:

sum(increase(payment_requests_total{service="payment-api", result="success"}[30d]))

将指标名和标签替换为实际采集内容。更改考核周期时,同步调整两项表达式中的时间范围,例如将 [30d] 改为 [7d]。

总数和成功数应使用周期内的业务数量;耗时、百分位和已计算的成功率适合用于其他检测方式。

新建后需等待检测生成有效结果。出现无数据、总数为 0 或查询失败时,可按 SLO 详情中的说明检查数据。

文档评价

文档内容是否对您有帮助?