服务质量目标(Service Level Objective,SLO)用于定义服务质量指标(Service Level Indicator,SLI)的目标值,目标值明确了服务使用者对服务质量的期望水平。当SLI≥期望目标值时,表示实际服务质量满足服务使用预期。例如:某服务的SLO描述为“过去7天,至少90%的时间里服务是可用的“,则过去7天内的SLI需≥90%,方可达成SLO,即此服务的实际服务质量满足了服务预期。
► 相关概念术语:
• 服务质量指标(Service Level Indicator,SLI):用于衡量服务质量的指标,可在配置 SLI计算方式 中选择测量此服务质量的具体指标;
• 服务质量目标(Service Level Objective,SLO):用于说明服务质量的预期,可在 配置服务的SLI目标项 中设置SLI在不同时间窗口对应的期望目标值(SLO);
• 错误预算(Error Budget):用于测量实际服务质量与预期服务质量之间的差异,可在 剩余错误预算阈值 中配置,以实时监控服务质量偏差,降低服务风险。
► 如何为服务配置SLO?
AnyRobot支持对服务进行SLO建模,通过评估SLI在指定服务周期内较目标值的完成情况,可实时监测IT环境各服务的运行情况,帮助及时排查服务不可用风险。下文具体介绍如何为服务配置SLO:
1. 配置服务基本信息
进入服务配置页面后,在服务配置表单的最上方设置基本服务信息,具体配置限制参见下表:
元素名称 | 元素说明 | 限制条件 |
*服务名称 | 设置服务的名称 | ≤32个字符 |
标签 | 设置服务的标签标识 | 最多可支持添加5个标签 |
在服务配置表单的SLO配置区域,点击【新建目标】可设置SLI在指定时间窗口内的期望质量目标值,如下所示:
在具体监控场景中,系统将根据此目标值评估实际服务质量是否达成SLO。例如:当时间窗口设为7天、目标值设为80%,服务的SLI计算方式选择“基于服务可用性”时,则当此服务在7天内的实际可用时间≥5.6天(7×80%=5.6天)时,实际服务质量方可达成此SLO,满足服务期望。具体参数说明如下:
元素名称 |
元素说明 |
限制条件 |
*时间窗口 |
设置测量服务质量指标(SLI)的时间段 |
• 时间窗口为 1-365的正整数,单位为天,不得重复; • 不支持重复创建。 注:当填写小于1的值时,窗口自动校准为1;填写大于365的值时,自动校准为365。 |
*目标 |
设置此时间窗口内,期望服务质量指标(SLI)达到的目标值 |
• 目标值取值范围为1-100的正整数,单位为% 注:当填写小于1的值时,窗口自动校准为1; 填写大于100的值时,自动校准为100。 |
提示:最多可支持添加3个目标项,即仅可为每个服务添加3个时间窗口内的SLI目标。当完成3个SLI目标项的创建后,【新建目标】按钮将处于禁用状态,此时可点击操作列中的【编辑】/【删除】按钮,修改/删除已有目标项。
剩余错误预算是指服务周期内剩余可容忍的服务出错程度,例如:在时间窗口为7天、目标值为80%,SLI计算方式选择“基于服务可用时间”的情况下,此SLO的总错误预算=(100%-80%)×7=1.4天,剩余错误预算=1.4天-已用不可用时间(假设为0.4天)=1天。具体含义为此SLO允许实际服务在7天内有1.4天可以处于不可用的状态,剩余的服务不可用时间为1天。
点击【+添加阈值段】可自定义错误预算的阈值区间,将时间窗口内剩余的不可用时间映射为对应的SLO严重等级,直观展示SLO的严重性,监控服务质量风险。具体参数说明参见下表:
元素名称 | 元素说明 | 限制条件 |
严重性 |
表示错误预算对应的SLO严重等级: 严重、 高危、 正常 |
• 默认无SLO严重性; • 最多可支持添加3个严重等级; • 同一等级的严重性仅可设置一个阈值区间。 |
提示:服务健康度分析模块支持对SLO严重性的告警,详情请参阅 新建告警策略 章节。
AnyRobot支持设置“基于服务可用性”、“基于实体可用性”以及“基于事件计数”三种方式计算服务的SLI,您可根据实际需求及服务自身的特性选择不同的方式计算SLI,以更科学、更准确地监控、分析服务质量。不同计算方式的详细说明如下:
- 方式一:基于服务可用性
在重点关注服务层级健康状态的监控场景中,您可选择“基于服务可用性”来计算SLI。此方式下,SLI是对当前服务可用时间的计算,SLI的计算结果度量的是当前服务的可用时间较服务总运行时间的占比情况(即SLI=当前服务可用时间总和/服务运行时间总和)。
影响服务是否可用的关键因素:
服务是否可用取决于指定时间段内的服务健康分数匹配到的严重性等级,可在 定义服务可用性-设置服务严重性等级的阈值区间 中进行匹配区间的配置。而服务健康分数由服务配置表单下方相关配置项(包括依赖的服务、服务KPI)的健康分数加权计算得到。基本配置流程如下图所示:
如上图所示,您需要在完成表单下方与计算服务健康分数相关参数的配置后,方可在 服务分析器 模块对此服务进行有效监控。否则,此服务的健康状况将处于未知的状态。
- 方式二:基于实体可用性
实体是IT基础设施的组成部分,可通过匹配规则将单个或多个实体与服务关联,实现对服务质量更灵活、更细粒度的监控(实体的具体配置操作参见 配置服务依赖实体)。
选择“基于实体可用性”来计算服务SLI时,可对服务进行实体粒度的分析、监控。例如:在对三个节点的MySQL服务的监控场景中,可将每个节点定义为一个实体,此时各实体(节点)质量的波动将直接影响到系统对MySQL服务质量的监控结果。
此方式下,服务SLI是对服务依赖的各实体及关键绩效指标(KPI)可用时间的计算,其计算结果度量的是此服务依赖的所有实体,或此服务依赖的所有关键绩效指标(KPI)及其依赖服务下的所有实体可用时间较总运行时间的占比情况。
说明:
1. 影响实体是否可用的关键因素
实体是否可用取决于实体健康分数匹配到的严重性等级(即当实体健康分数属于正常、警告级别时,此实体可用;否则,此实体不可用),可在 配置服务KPI-设置实体KPI严重性等级阈值 中进行配置;而实体健康分数则由服务下各实体的KPI值根据配置的聚合方法计算得出,可在配置服务KPI-KPI计算-实体KPI计算 中完成对应聚合方法的配置。基本配置流程如下图所示:
如上图所示,您需要在完成表单下方与计算实体健康分数、服务健康分数相关参数的配置后,方可在 服务分析器 模块对此服务进行有效监控。否则,此服务的健康状况将处于未知的状态。
2. 不同场景下服务SLI的计算项说明
选择基于实体可用性计算服务SLI时,SLI的计算项随当前服务依赖项的不同而有所不同,具体如下:
1)若当前服务为实体依赖,则服务SLI=所有实体的可用时间总和/所有实体的运行时间总和;
2)若当前服务为服务依赖,则服务SLI=(当前服务依赖服务的所有实体可用时间总和+当前服务依赖的所有KPI可用时间总和)/(依赖服务所有实体的运行时间总和+依赖KPI的运行时间总和);
3)若当前服务既无实体依赖也无服务依赖,则服务SLI=当前服务依赖KPI的可用时间总和/当前服务依赖KPI的运行时间总和。
- 方式三:基于事件计数
在以服务事件计数评估服务质量的监控场景中,您可设置服务专用SLI针对服务的“良好性能”进行测量监控。例如:在对HTTP服务质量的监控场景下,您可选择“基于事件计数”来计算服务SLI,将HTTP服务成功处理的请求定义为此场景中的良好事件,以此指标监控HTTP服务质量。
此方式下,SLI是对服务中自定义的良好事件的计算,其计算结果度量的是指定周期内当前服务中的良好事件较总事件的占比情况(即SLI=服务请求中的良好事件/总事件数),相关配置参数说明详见下表:
元素名称 | 元素说明 | 限制条件 |
数据来源 |
设置计算服务SLI的数据源,可选项:已存搜索、自定义搜索。如下: • 已存搜索:选择系统中已保存的搜索,配置服务SLO的监控数据源; • 自定义搜索:选择日志分组、自定义搜索语句,配置服务SLO的监控数据源。设置完成后,点击【在搜索中打开】可进入搜索页面查看匹配语句的日志数据。 |
• 仅当数据来源选择“已存搜索”时,已存搜索项可配置; • 仅当数据来源选择“自定义搜索”时,已存搜索项及日志分组项可配置。 |
计算公式 |
根据实际业务需求设置良好事件、总事件的筛选条件,将对应的查询语句填写在相应的文本框中。具体如下: • 良好事件:填写用于筛选符合实际监控需求的良好事件的查询语句。例如:在针对HTTP服务的SLO监控场景中,可将状态码为2xx的HTTP请求定义为良好事件,对应的筛选语句可填写为“status:200“; • 总事件:填写用于筛选监控场景中需监控的所有事件的查询语句,默认语句为“*”。例如:在针对HTTP服务的SLO监控场景中,“*”指代此场景下HTTP服务的所有请求事件。 |
• 查询语句需遵守SPL语法 |
提示:进行服务配置时,您在完成“基于事件计数”计算SLI的参数配置后,可直接船检服务(相关配置流程如下图所示),在 服务分析器 模块仅查看此服务SLO维度的监控数据。