[comment]: # ({d1387fc4-f9178426})
# sla.getsli

[comment]: # ({/d1387fc4-f9178426})

[comment]: # ({3fde2eb3-531f7cc6})
### Описание

`object sla.getsli(параметры объекта)`

Этот метод позволяет рассчитать данные индикатора уровня обслуживания (SLI) для соглашения об уровне обслуживания (SLA).

::: noteclassic
Этот метод доступен пользователям любого типа.
Разрешения на вызов метода можно отозвать в настройках ролей пользователя.
Дополнительную информацию см. в разделе [Роли пользователей](/manual/web_interface/frontend_sections/users/user_roles).
:::

[comment]: # ({/3fde2eb3-531f7cc6})

[comment]: # ({880cf558-bcbf1cf2})
### Параметры

`(object)` Параметры, содержащие SLA ID, отчетные периоды и, при необходимости,
ID сервисов, для которых вычисляется SLI.

|Parameter|[Type](/manual/api/reference_commentary#data-types)|Description|
|--|--|------|
|slaid|ID|ID SLA, для которого требуется вернуть информацию о доступности.<br><br>[Поведение параметра](/manual/api/reference_commentary#parameter-behavior):<br>- *required*|
|period\_from|timestamp|Начальная временная метка (включительно) для отчета SLI.<br><br>Possible values: Unix timestamp.|
|period\_to|timestamp|Конечная временная метка (включительно) для отчета SLI.<br><br>Possible values: Unix timestamp.|
|periods|integer|Количество периодов для отчета.<br><br>Possible values: 1-100|
|serviceids|ID/array|ID сервисов, для которых требуется вернуть SLI.|

[comment]: # ({/880cf558-bcbf1cf2})

[comment]: # ({d1b5c39b-31bc72e4})
#### Разбиение периодов

Следующая таблица демонстрирует порядок возвращаемых фрагментов периодов в зависимости от комбинаций параметров.

::: noteclassic
Возвращаемые периоды не предшествуют первому доступному периоду (на основе даты вступления 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 периодов в указанном диапазоне.|

[comment]: # ({/d1b5c39b-31bc72e4})

[comment]: # ({26e4fdd7-b46f1257})
### Возвращаемые значения

`(object)` Возвращает результаты вычисления.

|Property|[Type](/manual/api/reference_commentary#data-types)|Description|
|--|--|------|
|periods|array|Список отчетных периодов.<br><br>Каждый отчетный период представлен объектом, состоящим из:<br>- `period_from` - `(timestamp)` Начальная метка времени (включительно) отчетного периода.<br>- `period_to` - `(timestamp)` Конечная метка времени (исключительно) отчетного периода.<br><br>Периоды отсортированы по `period_from`, при этом более ранние периоды идут первыми.|
|serviceids|array|Список ID сервисов в отчетных периодах.<br><br>Порядок сортировки списка не определен. Даже если параметр `serviceids` был передан методу `sla.getsli`.|
|sli|array|Данные SLI (в виде **двумерного массива**) для каждого отчетного периода и сервиса.<br><br>Индекс свойства `periods` используется как **первое** измерение свойства `sli`.<br><br>Индекс свойства `serviceids` используется как **второе** измерение свойства `sli`.|

[comment]: # ({/26e4fdd7-b46f1257})

[comment]: # ({1b312b3d-ba0b5441})
#### Данные SLI

Данные SLI, возвращаемые для каждого указанного периода и сервиса, состоят из:

|Property|[Type](/manual/api/reference_commentary#data-types)|Description|
|--|--|--|
|uptime|integer|Количество времени, которое сервис провел в состоянии _OK_ в течение запланированного времени работы, за вычетом исключенных простоев.|
|downtime|integer|Количество времени, которое сервис провел в состоянии _not OK_ в течение запланированного времени работы, за вычетом исключенных простоев.|
|sli|float|SLI (в процентах от общего времени работы), основанный на uptime и downtime.|
|error\_budget|integer|Бюджет ошибок (в секундах), основанный на SLI и SLO.|
|excluded\_downtimes|array|Массив исключенных простоев в этом отчетном периоде.<br><br>Каждый объект будет содержать следующие параметры:<br>- `name` - `(string)` Имя исключенного простоя.<br>- `period_from` - `(timestamp)` Начальная метка времени (включительно) исключенного простоя.<br>- `period_to` - `(timestamp)` Конечная метка времени (исключительно) исключенного простоя.<br><br>Исключенные простои сортируются по `period_from`, при этом более ранние периоды отображаются первыми.|

[comment]: # ({/1b312b3d-ba0b5441})

[comment]: # ({b41637d2-b41637d2})
### Примеры

[comment]: # ({/b41637d2-b41637d2})

[comment]: # ({b67c0708-610cd288})
#### Расчет SLI для ежедневного SLA

Получите данные SLI для сервисов с ID "1" и "4", которые связаны с SLA с ID "1".
Получите данные для одного периода до "1761861599" (Oct 30 2025 23:59:59 GMT+0200).
Поскольку [период отчетности](/manual/it_services/sla) SLA является ежедневным, данные SLI извлекаются с "1761775200" (Oct 30 2025 00:00:00 GMT+0200) по "1761861600" (Oct 31 2025 00:00:00 GMT+0200).

[Запрос](/manual/api#performing-requests):

```json
{
    "jsonrpc": "2.0",
    "method": "sla.getsli",
    "params": {
        "slaid": "1",
        "serviceids": [
            1,
            4
        ],
        "periods": 1,
        "period_to": 1761861599
    },
    "id": 1
}
```

Ответ:

```json
{
    "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
}
```

[comment]: # ({/b67c0708-610cd288})

[comment]: # ({d21e6bab-c6c818e1})
#### Расчет SLI для ежемесячного SLA

Получите данные SLI по услугам с ID "50", "60" и "70", которые связаны с SLA с ID "5".
Получите данные за три периода, начиная с "1635724800" (Nov 01 2021 00:00:00 UTC).
Поскольку [период отчетности](/manual/it_services/sla) 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)

[Запрос](/manual/api#performing-requests):

```json
{
    "jsonrpc": "2.0",
    "method": "sla.getsli",
    "params": {
        "slaid": "5",
        "serviceids": [
            50,
            60,
            70
        ],
        "periods": 3,
        "period_from": 1635724800
    },
    "id": 1
}
```

Ответ:

```json
{
    "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
}
```

[comment]: # ({/d21e6bab-c6c818e1})

[comment]: # ({13a91d62-a5414084})
### Источник

CSla::getSli() в *ui/include/classes/api/services/CSla.php*

[comment]: # ({/13a91d62-a5414084})
