sla.getsli
Описание
object sla.getsli(параметры объекта)
Этот метод позволяет рассчитать данные индикатора уровня обслуживания (SLI) для соглашения об уровне обслуживания (SLA).
Этот метод доступен пользователям любого типа. Разрешения на вызов метода можно отозвать в настройках ролей пользователя. Дополнительную информацию см. в разделе Роли пользователей.
Параметры
(object) Параметры, содержащие SLA ID, отчетные периоды и, при необходимости,
ID сервисов, для которых вычисляется SLI.
| Parameter | Type | Description |
|---|---|---|
| slaid | ID | ID SLA, для которого требуется вернуть информацию о доступности. Поведение параметра: - required |
| period_from | timestamp | Начальная временная метка (включительно) для отчета SLI. Possible values: Unix timestamp. |
| period_to | timestamp | Конечная временная метка (включительно) для отчета SLI. Possible values: Unix timestamp. |
| periods | integer | Количество периодов для отчета. Possible values: 1-100 |
| serviceids | ID/array | ID сервисов, для которых требуется вернуть SLI. |
Разбиение периодов
Следующая таблица демонстрирует порядок возвращаемых фрагментов периодов в зависимости от комбинаций параметров.
Возвращаемые периоды не предшествуют первому доступному периоду (на основе даты вступления SLA в силу) и не выходят за пределы текущего периода.
| Parameters | Returned periods | ||
|---|---|---|---|
| period_from | period_to | periods | |
| - | - | - | Последние 20 периодов, включая текущий. |
| - | - | N | Последние N периодов. |
| - | specified | - | Последние 20 периодов перед period_to. |
| - | specified | N | Последние N периодов перед period_to. |
| specified | - | - | Первые 20 периодов, начиная с period_from. |
| specified | - | N | Первые N периодов, начиная с period_from. |
| specified | specified | - | До 100 периодов в указанном диапазоне. |
| specified | specified | N | N периодов в указанном диапазоне. |
Возвращаемые значения
(object) Возвращает результаты вычисления.
| Property | Type | Description |
|---|---|---|
| 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, возвращаемые для каждого указанного периода и сервиса, состоят из:
| Property | Type | Description |
|---|---|---|
| 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, при этом более ранние периоды отображаются первыми. |
Примеры
Расчет SLI для ежедневного SLA
Получите данные SLI для сервисов с ID "1" и "4", которые связаны с SLA с ID "1". Получите данные для одного периода до "1761861599" (Oct 30 2025 23:59:59 GMT+0200). Поскольку период отчетности SLA является ежедневным, данные SLI извлекаются с "1761775200" (Oct 30 2025 00:00:00 GMT+0200) по "1761861600" (Oct 31 2025 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
}
Расчет SLI для ежемесячного SLA
Получите данные SLI по услугам с ID "50", "60" и "70", которые связаны с SLA с ID "5". Получите данные за три периода, начиная с "1635724800" (Nov 01 2021 00:00:00 UTC). Поскольку период отчетности SLA является ежемесячным, данные SLI извлекаются за следующие три месяца:
- С "1635724800" (Nov 01 2021 00:00:00 UTC) по "1638316800" (Dec 01 2021 00:00:00 UTC)
- С "1638316800" (Dec 01 2021 00:00:00 UTC) по "1640995200" (Jan 01 2022 00:00:00 UTC)
- С "1640995200" (Jan 01 2022 00:00:00 UTC) по "1643673600" (Feb 01 2022 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