# 获取SLA

### Description 说明

`object service.getsla(object parameters)`

This method allows to calculate availability information about services.
此方法允许计算有关服务的可用性信息。

### Parameters 参数

`(object)` Parameters containing the IDs of the services and time
intervals to calculate SLA.
`(object)`参数包含服务ID以及计算SLA的时间间隔。

|Parameter 参数   T|pe 类型                  Des|ription 说明|
|--------------------|------------------------------|--------------|
|serviceids|string/array 字符串/数组   IDs|f services to return availability information for. 提供可用性信息的服务ID。|
|intervals|array 数组                 T|me intervals to return service layer availability information about. 返回服务层可用性信息的时间间隔。<br><br>Each time interval must have the following parameters: 每个时间间隔必须具有以下参数：<br>- `from` - *(timestamp 时间戳)* interval start time; 间隔开始时间；<br>- `to` - *(timestamp 时间戳)* interval end time. 间隔结束时间。|

### Return values 返回值

`(object)` Returns the following availability information about each
service under the corresponding service ID.
`(object)`返回关于相应服务ID下每个服务的可用性信息。

|Property 属性   T|pe 类型        Des|ription 说明|
|-------------------|--------------------|--------------|
|status|integer 整数型   Cu|rent status of the service. 当前服务的状态。<br><br>Refer to the [service object page](object#service) for more information on service statuses. 有关服务状态的更多信息，请参阅[service object page](object#service)。|
|problems|array 数组       T|iggers that are currently in problem state and are linked either to the service or one of its descendants. 当前处于故障状态并且与服务或服务的子项所关联的触发器。|
|sla|array 数组       S|A data about each time period. 每个时间段的SLA数据。<br><br>Each SLA object has the following properties: 每个SLA对象具有以下属性：<br>- `from` - *(timestamp 时间戳)* interval start time; 间隔开始时间；<br>- `to` - *(timestamp 时间戳)* interval end time; 间隔结束时间；<br>- `sla` - *(float 浮点数)* SLA for the given time interval; 指定时间间隔的SLA；<br>- `okTime` - *(integer 整数型)* time the service was in OK state, in seconds; 服务处于正常状态的时间，单位秒；<br>- `problemTime` - *(integer 整数型)* time the service was in problem state, in seconds; 服务处于故障状态的时间，单位秒；<br>- `downtimeTime` - *(integer 整数型)* time the service was in scheduled downtime, in seconds. 服务处于计划停机的时间，单位秒。|

### Examples 范例

#### Retrieving availability information for an service 检索服务的可用性信息

Retrieve availability information about a service during a week.
检索有关服务在一周内的可用性信息。

Request 请求:

``` {.java}
{
    "jsonrpc": "2.0",
    "method": "service.getsla",
    "params": {
        "serviceids": "2",
        "intervals": [
            {
                "from": 1352452201,
                "to": 1353057001
            }
        ]
    },
    "auth": "038e1d7b1735c6a5436ee9eae095879e",
    "id": 1
}
```

Response 响应:

``` {.java}
{
    "jsonrpc": "2.0",
    "result": {
        "2": {
            "status": "3",
            "problems": {
                "13904": {
                    "triggerid": "13904",
                    "expression": "{13359}=0",
                    "description": "Service unavailable",
                    "url": "",
                    "status": "0",
                    "value": "1",
                    "priority": "3",
                    "lastchange": "1352967420",
                    "comments": "",
                    "error": "",
                    "templateid": "0",
                    "type": "0",
                    "value_flags": "0",
                    "flags": "0"
                }
            },
            "sla": [
                {
                    "from": 1352452201,
                    "to": 1353057001,
                    "sla": 97.046296296296,
                    "okTime": 586936,
                    "problemTime": 17864,
                    "downtimeTime": 0
                }
            ]
        }
    },
    "id": 1
}
```

### See also 参考

-   [Trigger](/zh/manual/api/reference/trigger/object#trigger)

### Source 源码

CService::getSla() in
*frontends/php/include/classes/api/services/CService.php*.
CService::getSla()方法可在*frontends/php/include/classes/api/services/CService.php*中参考。
