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