sla.getsli
Описание
object sla.getsli(параметры объекта)
Этот метод позволяет рассчитать данные индикатора уровня обслуживания (SLI) для соглашения об уровне обслуживания (SLA).
Этот метод доступен пользователям любого типа. Разрешения на вызов метода можно отозвать в настройках ролей пользователя. Дополнительную информацию см. в разделе Роли пользователей.
Параметры
(object) Параметры, содержащие ID SLA, отчетные периоды и, при необходимости,
ID сервисов, для которых необходимо вычислить SLI.
| Параметр | Тип | Описание |
|---|---|---|
| slaid | ID | ID SLA, для которого необходимо вернуть информацию о доступности. Поведение параметра: - обязательный |
| period_from | timestamp | Начальная временная метка (включительно), для которой необходимо сформировать отчет по SLI. Возможные значения: Unix timestamp. |
| period_to | timestamp | Конечная временная метка (включительно), для которой необходимо сформировать отчет по SLI. Возможные значения: Unix timestamp. |
| periods | integer | Количество периодов для вывода в отчете. Возможные значения: 1-100 |
| serviceids | ID/array | ID сервисов, для которых необходимо вернуть SLI. |
Разбиение периодов
В следующей таблице показано расположение возвращаемых срезов периодов в зависимости от комбинаций параметров.
Возвращаемые периоды не предшествуют первому доступному периоду (на основе даты вступления SLA в силу) и не выходят за пределы текущего периода.
| Параметры | Возвращаемые периоды | ||
|---|---|---|---|
| period_from | period_to | periods | |
| - | - | - | Последние 20 периодов, включая текущий. |
| - | - | N | Последние N периодов. |
| - | указан | - | Последние 20 периодов до period_to. |
| - | указан | N | Последние N периодов до period_to. |
| указан | - | - | Первые 20 периодов, начиная с period_from. |
| указан | - | N | Первые N периодов, начиная с period_from. |
| указан | указан | - | До 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, возвращаемые для каждого отчетного периода и сервиса, включают:
| Property | Type | Description |
|---|---|---|
| uptime | integer | Количество времени, в течение которого сервис находился в состоянии OK в рамках запланированного времени работы, за вычетом исключенных простоев. |
| downtime | integer | Количество времени, в течение которого сервис находился в состоянии not OK в рамках запланированного времени работы, за вычетом исключенных простоев. |
| sli | float | SLI (в процентах от общего времени работы), на основе времени работы и простоя. |
| error_budget | integer | Бюджет ошибок (в секундах), на основе SLI и SLO. |
| excluded_downtimes | array | Массив исключенных простоев в этом отчетном периоде. Каждый объект содержит следующие параметры: - name - (string) Название исключенного простоя.- period_from - (timestamp) Временная метка начала (включительно) исключенного простоя.- period_to - (timestamp) Временная метка окончания (не включительно) исключенного простоя.Исключенные простои отсортированы по period_from, при этом самые ранние периоды отображаются первыми. |
Примеры
Расчет SLI для ежедневного SLA
Получите данные SLI для сервисов с идентификаторами "1" и "4", связанных с SLA с идентификатором "1". Получите данные за один период до "1761861599" (30 окт. 2025 23:59:59 GMT+0200). Поскольку отчетный период SLA является ежедневным, данные SLI извлекаются с "1761775200" (30 окт. 2025 00:00:00 GMT+0200) до "1761861600" (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 по сервисам с идентификаторами "50", "60" и "70", которые связаны с SLA с идентификатором "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