sla.getsli

描述

object sla.getsli(object parameters)

该方法用于计算服务等级协议(SLA)中的服务等级指标(SLI)数据。

该方法对所有类型用户开放。调用权限可通过用户角色设置进行撤销。更多信息请参阅User roles

参数

(object) 包含SLA ID、报告周期及可选服务ID的参数 - 用于计算SLI。

参数 数据类型 描述
slaid
(required)
string 需返回可用性信息的SLA ID。
period_from integer 报告SLI的起始日期(包含)。

可能值:时间戳。
period_to integer 报告SLI的结束日期(不包含)。

可能值:时间戳。
periods array 首选报告周期数。

可能值:1-100
serviceids string/array 需返回SLI的服务ID。

时间段分区

下表展示了基于参数组合返回的时间段切片排列方式。

返回的时间段不会早于SLA生效日期的首个可用时段,且不会超过当前时段。

参数 描述
period_from period_to periods
- - - 返回最近的20个时段。
- - specified 返回periods参数指定的最近时段。
- specified - 返回指定period_to日期之前的最近20个时段。
- specified specified 返回指定period_to日期之前periods参数指定的时段。
specified - - 返回从指定period_from日期开始的前20个时段。
specified - specified 返回从指定period_from日期开始periods参数指定的时段。
specified specified - 返回指定日期范围内最多100个时段。
specified specified specified 返回指定日期范围内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 数据

每个报告周期和服务返回的SLI数据包含以下内容:

属性 数据类型 描述
uptime integer 服务在计划运行时间内处于_OK_状态的时间,减去排除的停机时间。
downtime integer 服务在计划运行时间内处于_not OK_状态的时间,减去排除的停机时间。
sli float SLI(占总运行时间的百分比),基于运行时间和停机时间计算。
error_budget integer 错误预算(以秒为单位),基于SLI和SLO计算。
excluded_downtimes array array 本报告周期内排除的停机时间。

每个 object 包含以下参数:
- name - 排除的停机时间名称。
- period_from - 排除的停机时间开始日期和时间(包含)。
- period_to - 排除的停机时间结束日期和时间(不包含)。

排除的停机时间按period_from字段升序排序。

示例

计算 SLI

获取与ID为"5"的SLA相关联的ID为"50"、"60"和"70"的服务SLI数据。 获取从2021年11月1日开始的3个周期的数据。

请求:

{
    "jsonrpc": "2.0",
    "method": "sla.getsli",
    "params": {
        "slaid": "5",
        "serviceids": [
            50,
            60,
            70
        ],
        "periods": 3,
        "period_from": "1635724800"
    },
    "auth": "038e1d7b1735c6a5436ee9eae095879e",
    "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