object sla.getsli(object parameters)
此方法允许为服务等级协议(SLA)计算服务等级指标(SLI)数据。
此方法可供任何类型的用户使用。可以在用户角色设置中撤销调用该方法的权限。更多信息请参见 User roles。
(object) 包含SLA ID、报告周期及可选服务ID的参数 - 用于计算SLI指标
| 参数 | 数据类型 | 描述 |
|---|---|---|
| slaid | ID | 需要返回可用性信息的SLA ID 参数行为: - 必填 |
| period_from | timestamp | 报告SLI的起始时间戳(包含) 可选值: Unix时间戳 |
| period_to | timestamp | 报告SLI的结束时间戳(包含) 可选值: Unix时间戳 |
| periods | integer | 需要报告的周期数量 可选值: 1-100 |
| serviceids | ID/array | 需要返回SLI指标的服务ID |
下表展示了基于参数组合返回的时间段切片排列方式。
返回的时间段不会早于首个可用时间段(基于SLA生效日期),也不会超过当前时间段。
| 参数 | 返回的时间段 | ||
|---|---|---|---|
| period_from | period_to | periods | |
| - | - | - | 最近20个时间段(包含当前时间段) |
| - | - | N | 最近N个时间段 |
| - | 指定 | - | period_to之前的最近20个时间段 |
| - | 指定 | N | period_to之前的最近N个时间段 |
| 指定 | - | - | 从period_from开始的前20个时间段 |
| 指定 | - | N | 从period_from开始的前N个时间段 |
| 指定 | 指定 | - | 指定范围内最多100个时间段 |
| 指定 | 指定 | N | 指定范围内的N个时间段 |
(object) 返回计算结果.
| 属性 | 数据类型 | 描述 |
|---|---|---|
| periods | array | 报告周期列表. 每个报告周期表示为一个object, 包含: - period_from - (timestamp) 报告周期的起始时间戳(包含).- period_to - (timestamp) 报告周期的结束时间戳(不包含).周期按 period_from排序, 最早的周期排在前面. |
| serviceids | array | 报告周期中的服务ID列表. 列表的排序顺序未定义. 即使向 sla.getsli方法传递了serviceids参数. |
| sli | array | 每个报告周期和服务的SLI数据(作为二维array).periods属性的索引用作sli属性的第一维度.serviceids属性的索引用作sli属性的第二维度. |
每个报告周期和服务返回的SLI数据包含以下内容:
| 属性 | 数据类型 | 描述 |
|---|---|---|
| uptime | integer | 服务在计划运行时间内处于_OK_状态的时间,减去排除的停机时间。 |
| downtime | integer | 服务在计划运行时间内处于_not OK_状态的时间,减去排除的停机时间。 |
| sli | float | 基于运行时间和停机时间的SLI(占总运行时间的百分比)。 |
| error_budget | integer | 基于SLI和SLO计算的错误预算(以秒为单位)。 |
| excluded_downtimes | array | 本报告周期内排除的停机时间的array。 每个object将包含以下参数: - name - (string) 排除的停机时间的名称。- period_from - (timestamp) 排除的停机时间的开始时间戳(包含)。- period_to - (timestamp) 排除的停机时间的结束时间戳(不包含)。排除的停机时间按 period_from排序,最早的时间段排在前面。 |
获取与服务ID为"1"和"4"且关联到SLA ID为"1"的服务相关的SLI数据。 获取截至"1761861599"(2025年10月30日23:59:59 GMT+0200)的单个周期数据。 由于该SLA的reporting period为每日,SLI数据获取时间范围为"1761775200"(2025年10月30日00:00:00 GMT+0200)至"1761861600"(2025年10月31日00:00:00 GMT+0200)。
执行请求:
{
"jsonrpc": "2.0",
"method": "sla.getsli",
"params": {
"slaid": "1",
"serviceids": [
1,
4
],
"periods": 1,
"period_to": 1761861599,
},
"id": 1
}响应:
{
"jsonrpc": "2.0",
"result": {
"periods": [
{
"period_from": 1761775200,
"period_to": 1761861600
}
],
"serviceids": [
1,
4
],
"sli": [
[
{
"uptime": 43843,
"downtime": 0,
"sli": 100,
"error_budget": 0,
"excluded_downtimes": [
{
"name": "Maintenance OCT",
"period_from": 1761825600,
"period_to": 1761829200
}
]
},
{
"uptime": 32225,
"downtime": 0,
"sli": 100,
"error_budget": 0,
"excluded_downtimes": []
}
]
]
},
"id": 1
}获取与服务ID为"50"、"60"和"70"且关联到SLA ID为"5"的服务相关的SLI数据。 获取从"1635724800"(2021年11月1日00:00:00 UTC)开始的三个周期的数据。 由于该SLA的reporting period为月度,因此将获取以下三个月的SLI数据:
执行请求:
{
"jsonrpc": "2.0",
"method": "sla.getsli",
"params": {
"slaid": "5",
"serviceids": [
50,
60,
70
],
"periods": 3,
"period_from": "1635724800"
},
"id": 1
}响应:
{
"jsonrpc": "2.0",
"result": {
"periods": [
{
"period_from": 1635724800,
"period_to": 1638316800
},
{
"period_from": 1638316800,
"period_to": 1640995200
},
{
"period_from": 1640995200,
"period_to": 1643673600
}
],
"serviceids": [
50,
60,
70
],
"sli": [
[
{
"uptime": 1186212,
"downtime": 0,
"sli": 100,
"error_budget": 0,
"excluded_downtimes": [
{
"name": "Maintenance Nov 25 - Dec 01",
"period_from": 1637836212,
"period_to": 1638316800
}
]
},
{
"uptime": 1186212,
"downtime": 0,
"sli": 100,
"error_budget": 0,
"excluded_downtimes": [
{
"name": "Maintenance Nov 25 - Dec 01",
"period_from": 1637836212,
"period_to": 1638316800
}
]
},
{
"uptime": 1186212,
"downtime": 0,
"sli": 100,
"error_budget": 0,
"excluded_downtimes": [
{
"name": "Maintenance Nov 25 - Dec 01",
"period_from": 1637836212,
"period_to": 1638316800
}
]
}
],
[
{
"uptime": 1147548,
"downtime": 0,
"sli": 100,
"error_budget": 0,
"excluded_downtimes": [
{
"name": "Maintenance Dec 02 - Dec 10",
"period_from": 1638439200,
"period_to": 1639109652
}
]
},
{
"uptime": 1147548,
"downtime": 0,
"sli": 100,
"error_budget": 0,
"excluded_downtimes": [
{
"name": "Maintenance Dec 02 - Dec 10",
"period_from": 1638439200,
"period_to": 1639109652
}
]
},
{
"uptime": 1147548,
"downtime": 0,
"sli": 100,
"error_budget": 0,
"excluded_downtimes": [
{
"name": "Maintenance Dec 02 - Dec 10",
"period_from": 1638439200,
"period_to": 1639109652
}
]
}
],
[
{
"uptime": 1674000,
"downtime": 0,
"sli": 100,
"error_budget": 0,
"excluded_downtimes": []
},
{
"uptime": 1674000,
"downtime": 0,
"sli": 100,
"error_budget": 0,
"excluded_downtimes": []
},
{
"uptime": 1674000,
"downtime": 0,
"sli": 100,
"error_budget": 0,
"excluded_downtimes": []
}
]
]
},
"id": 1
}CSla::getSli() 在 ui/include/classes/api/services/CSla.php 中