object sla.getsli(object parameters)
此方法允许为服务等级协议(SLA)计算服务等级指标(SLI)数据。
此方法可供任何类型的用户使用。可以在用户角色设置中撤销调用该方法的权限。更多信息请参见 User roles。
(object) 包含SLA ID、报告周期以及可选的服务ID的参数 - 用于计算SLI。
| 参数 | 数据类型 | 描述 |
|---|---|---|
| slaid | ID | 要返回可用性信息的SLA的ID。 参数行为: - 必填 |
| period_from | timestamp | 报告SLI的起始日期(包含)。 可能的值:时间戳。 |
| period_to | timestamp | 报告SLI的结束日期(不包含)。 可能的值:时间戳。 |
| periods | array | 希望报告的周期数。 可能的值:1-100 |
| serviceids | ID/array | 要返回SLI的服务的ID。 |
下表展示了根据参数组合返回的时间段切片的排列方式。
返回的时间段不会早于基于SLA生效日期的第一个可用时间段,也不会超过当前时间段。
| 参数 | 说明 | ||
|---|---|---|---|
| period_from | period_to | periods | |
| - | - | - | 返回最后 20 个时间段。 |
| - | - | 指定 | 返回由 periods 参数指定的最后几个时间段。 |
| - | 指定 | - | 返回指定 period_to 日期之前的最后 20 个时间段。 |
| - | 指定 | 指定 | 返回指定 period_to 日期之前由 periods 参数指定的最后几个时间段。 |
| 指定 | - | - | 返回从指定的 period_from 日期开始的第一个 20 个时间段。 |
| 指定 | - | 指定 | 返回从指定的 period_from 日期开始,由 periods 参数指定的第一个时间段。 |
| 指定 | 指定 | - | 返回指定日期范围内的最多 100 个时间段。 |
| 指定 | 指定 | 指定 | 返回在指定日期范围内由 periods 参数指定的时间段。 |
(object) 返回计算结果。
| 属性 | 数据类型 | 描述 |
|---|---|---|
| periods | array | 报告周期的列表。 每个报告周期由一个 object 表示,包含: - period_from - 报告周期的起始日期(时间戳)。- period_to - 报告周期的结束日期(时间戳)。周期按 period_from 字段升序排列。 |
| serviceids | array | 报告周期内的服务ID列表。 该列表的排序顺序未定义,即使 serviceids 参数已传递给 sla.getsli 方法。 |
| sli | array | 每个报告周期和服务的SLI数据(作为二维 array)。periods 属性的索引用作 sli 属性的第一维。serviceids 属性的索引用作 sli 属性的第二维。 |
每个报告周期和服务返回的SLI数据包括:
| 属性 | 数据类型 | 描述 |
|---|---|---|
| uptime | integer | 服务在计划正常运行时间内处于_OK_状态的时间总量,减去排除的停机时间。 |
| downtime | integer | 服务在计划正常运行时间内处于_not OK_状态的时间总量,减去排除的停机时间。 |
| sli | float | SLI(占总正常运行时间的百分比),基于正常运行时间和停机时间计算。 |
| error_budget | integer | 错误预算get(以秒为单位),基于SLI和SLO计算。 |
| excluded_downtimes | array | 本报告周期内排除的停机时间的array。 每个object将包含以下参数: - name - 排除停机的名称。- period_from - 排除停机的起始日期和时间(包含)。- period_to - 排除停机的结束日期和时间(不包含)。排除的停机时间按period_from字段升序排列。 |
检索服务ID为"50"、"60"和"70"的SLI数据,这些服务与SLA ID为"5"的SLA相关联。 检索从2021年11月1日开始的3周期的数据。
执行请求:
{ "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": "Excluded Downtime - 1", "period_from": 1637836212, "period_to": 1638316800 } ] }, { "uptime": 1186212, "downtime": 0, "sli": 100, "error_budget": 0, "excluded_downtimes": [ { "name": "Excluded Downtime - 1", "period_from": 1637836212, "period_to": 1638316800 } ] }, { "uptime": 1186212, "downtime": 0, "sli": 100, "error_budget": 0, "excluded_downtimes": [ { "name": "Excluded Downtime - 1", "period_from": 1637836212, "period_to": 1638316800 } ] } ], [ { "uptime": 1147548, "downtime": 0, "sli": 100, "error_budget": 0, "excluded_downtimes": [ { "name": "Excluded Downtime - 1", "period_from": 1638439200, "period_to": 1639109652 } ] }, { "uptime": 1147548, "downtime": 0, "sli": 100, "error_budget": 0, "excluded_downtimes": [ { "name": "Excluded Downtime - 1", "period_from": 1638439200, "period_to": 1639109652 } ] }, { "uptime": 1147548, "downtime": 0, "sli": 100, "error_budget": 0, "excluded_downtimes": [ { "name": "Excluded Downtime - 1", "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 中