获取SLI

描述

object sla.getsli(object parameters)

这个方法可以计算服务水平指标(SLI)数据用于服务水平协议(SLA)。

这个方法可以用于任何用户类型。可以在用户角色设置中取消调用该方法的权限。查看 用户角色获取更多信息。

参数

(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) 返回计算结果。

属性 Type 描述
periods array 已报告周期的列表。

每个已报告周期表示为一个对象,包含:
- period_from - (timestamp) 已报告周期的起始时间戳(包含)。
- period_to - (timestamp) 已报告周期的结束时间戳(不包含)。

各周期按 period_from 排序,最早的周期排在最前面。
serviceids array 已报告周期中的服务 ID 列表。

该列表的排序顺序未定义。即使已将 serviceids 参数传递给 sla.getsli 方法也是如此。
sli array 每个已报告周期和服务的 SLI 数据(以二维数组形式表示)。

periods 属性的索引用作 sli 属性的第一维。

serviceids 属性的索引用作 sli 属性的第二维。

SLI 数据

每个报告周期和服务返回的 SLI 数据包括:

属性 类型 说明
uptime integer 在计划运行时间内,服务处于 OK 状态的时长,减去被排除的停机时间。
downtime integer 在计划运行时间内,服务处于 not OK 状态的时长,减去被排除的停机时间。
sli float SLI(总运行时间的百分比),基于 uptime 和 downtime 计算。
error_budget integer 错误预算(以秒为单位),基于 SLI 和 SLO 计算。
excluded_downtimes array 此报告周期内被排除的停机时间数组。

每个对象将包含以下参数:
- name - (string) 被排除停机时间的名称。
- period_from - (timestamp) 被排除停机时间的起始时间戳(包含)。
- period_to - (timestamp) 被排除停机时间的结束时间戳(不包含)。

被排除的停机时间按 period_from 排序,最早的时间段排在最前面。

示例

计算每日 SLA 的 SLI

检索与 ID 为“1”的 SLA 关联的、ID 为“1”和“4”的服务的 SLI 数据。 检索截至“1761861599”(2025 年 10 月 30 日 23:59:59 GMT+0200)的单个周期数据。 由于该 SLA 的报告周期为每日,因此 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
}

计算月度 SLA 的 SLI

检索与 ID 为“5”的 SLA 关联的、ID 为“50”、“60”和“70”的服务的 SLI 数据。 从“1635724800”(2021 年 11 月 01 日 00:00:00 UTC)开始,检索三个周期的数据。 由于该 SLA 的报告周期为按月,因此会检索以下三个月的 SLI 数据:

  • 从“1635724800”(2021 年 11 月 01 日 00:00:00 UTC)到“1638316800”(2021 年 12 月 01 日 00:00:00 UTC)
  • 从“1638316800”(2021 年 12 月 01 日 00:00:00 UTC)到“1640995200”(2022 年 01 月 01 日 00:00:00 UTC)
  • 从“1640995200”(2022 年 01 月 01 日 00:00:00 UTC)到“1643673600”(2022 年 02 月 01 日 00:00:00 UTC)

请求

{
    "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