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