# 修改阈值规则
#### 功能介绍
该接口用于修改一条阈值规则，包括如下工作。
#### URI
PUT /v1/{project_id}/ams/alarms
#### 请求消息
**请求参数**
请求参数如[表1]所示。
 表1请求参数 
| 参数                    | 是否必选 | 参数类型     | 取值范围                                                         | 描述                                        |
|:---|:---|:---|:---|:---|
| project_id            | 是   | String | -                                                             | 租户从IAM申请到的projectid，一般为32位字符串。           |
| statistic            | 是     | String                         | "maximum"，"minimum"，"average"， "sum"，"sampleCount"           | 统计方式                                     |
| namespace            | 是  | String                       | -                                                             | 命名空间，此参数在后台将以添加阈值规则时传入的值保存，此处传入的值不能将其修改。   |
| metricName            | 是    | String                       | 取值满足表达式\[a-zA-Z_:\]\[a-zA-Z0-9_:\]\*。首字符必须以字母、下划线或冒号开头。其他字符为字母、数字下划线、冒号。长度为1\~255个字符。 | 指标名称，此参数在后台将以添加阈值规则时传入的值保存，此处传入的值不能将其修改。   |
| period                  | 是   | Integer                     | -                                                              | 统计周期                                       |
| alarmLevel            | 是   | Integer                      | -                                                          | 告警级别                                    |
| evaluationPeriods      | 是     | Integer                        | -                                                            | 连续周期                                       |
| comparisonOperator     | 是    | String                      | -                                                            | 阈值条件表达式                                   |
| threshold             | 是      | String                        | -                                                           | 阈值                                        |
| alarmName               | 是     | String                       | -                                                            | 阈值名称                                       |
| dimensions            | 是     | String                       | -                                                             | 指标维度，此参数在后台将以添加阈值规则时传入的值保存，此处传入的值不能将其修改。 |
| unit                   | 是       | String                       | -                                                              | 指标单位，此参数在后台将以添加阈值规则时传入的值保存，此处传入的值不能将其修改。  |
| actionEnabled          | 否     | Boolean | -                                                             | 告警是否启用                                     |
| alarmActions          | 否    | Array   | -                                                               | 告警动作                                     |
| alarmAdvice            | 否     | String                       | -                                                            | 告警建议，请传入空字符串。                            |
| alarmDescription         | 否       | String                        | -                                                             | 阈值规则描述                                     |
| insufficientDataActions | 否     | Array                         | -                                                             | 数据不足动作                                     |
| okActions               | 否     | Array                         | -                                                            | 恢复动作                                      |
   
**Header说明**
请求消息头（Header）如[表2]所示。
 表2Header说明 
| 名称               | 是否必选 | 说明                     |
|:---|:---|:---|
| X-Auth-Token | 是     | 从IAM服务获取的用户Token。    |
| Content-Type    | 是     | 指定类型为application/json。 |
   
**请求示例**
```
{
    "actionEnabled": false,
    "alarmActions": [],
    "alarmAdvice": "",
    "alarmDescription": "",
    "alarmLevel": 3,
    "alarmName": "aaaaaaaa",
    "comparisonOperator": ">=",
    "dimensions": [
        {
            "name": "appName",
            "value": "rhm-broker"
        }
    ],
    "evaluationPeriods": 1,
    "insufficientDataActions": [],
    "metricName": "cpuCoreLimit",
    "namespace": "PAAS.CONTAINER",
    "okActions": [],
    "period": 60000,
    "statistic": "average",
    "threshold": 0,
    "unit": "Core"
}
```
#### 响应消息
**响应参数**
响应参数如[表3]所示。
 表3响应参数 
| 参数名称           | 类型   | 描述     |
|:---|:---|:---|
| errorCode     | String | 响应码。     |
| errorMessage | String | 响应信息描述。 |
| alarmId       | Integer                       | 阈值规则编码  |
   
**响应示例**
```
{
    "errorCode": "SVCSTG.AMS.2000",
    "errorMessage": "success",
    "alarmId": 12345678
}
```
#### 状态码
- 正常 状态码如[表4]所示。
   表4状态码 
  | 状态码 | 编码  | 描述         |
  |:---|:---|:---|
  | 200 | OK | 请求响应成功。 |
     
  
- 异常 状态码如[表5]所示。更多状态码请见[状态码](https://support.huaweicloud.com/api-aom/aom_04_0021.html)。
   表5状态码 
  | 状态码 | 编码                    | 描述                                                                                                                                                                |
  |:---|:---|:---|
  | 400   | BadRequest        | 非法请求。 建议直接修改该请求，不要重试该请求。                                                           |
  | 401 | Unauthorized         | 在客户端提供认证信息后，返回该状态码，表明服务端指出客户端所提供的认证信息不正确或非法。                                                                                                                 |
  | 403 | Forbidden          | 请求被拒绝访问。 返回该状态码，表明请求能够到达服务端，且服务端能够理解用户请求，但是拒绝做更多的事情，因为该请求被设置为拒绝访问，建议直接修改该请求，不要重试该请求。 |
  | 500 | InternalServerError | 表明服务端能被请求访问到，但是不能理解用户的请求。                                                                                                                                    |
  | 503 | ServiceUnavailable   | 被请求的服务无效。 建议直接修改该请求，不要重试该请求。                                                    |
     
  
 
#### 错误码
表6错误码 
| 错误码                 | 错误信息                                                 | 处理措施              |
|:---|:---|:---|
| SVCSTG_AMS_4000101   | Invalid alarm name.                                    | 请检查对应的参数是否符合要求。   |
| SVCSTG_AMS_4000102  | The threshold rule name already exists.                  | 请更换阈值规则名称再次创建。      |
| SVCSTG_AMS_4000103    | Invalid alarm description.                             | 请检查对应的参数是否符合要求。   |
| SVCSTG_AMS_4000104    | Invalid alarm threshold.                              | 请检查对应的参数是否符合要求。   |
| SVCSTG_AMS_4000105  | Invalid alarm period.                                | 请检查对应的参数是否符合要求。   |
| SVCSTG_AMS_4000106   | Invalid email list.                                    | 请检查对应的参数是否符合要求。   |
| SVCSTG_AMS_4000107   | The maximum number of threshold rules has been reached. | 请联系技术支持工程师扩容。     |
| SVCSTG_AMS_4000108 | Invalid time range for alarm queries.                   | 请检查对应的参数是否符合要求。   |
| SVCSTG_AMS_4000109 | Invalid project ID.                                   | 请检查对应的参数是否符合要求。   |
| SVCSTG_AMS_4000115   | Invalid request parameter.                            | 请检查对应的参数是否符合要求。    |
| SVCSTG_AMS_4000118  | Invalid number of consecutive periods.                 | 请检查对应的参数是否符合要求。    |
| SVCSTG_AMS_4000119  | Invalid alarm statistic.                               | 请检查对应的参数是否符合要求。    |
| SVCSTG_AMS_4000120   | Invalid alarm comparison operator.                    | 请检查对应的参数是否符合要求。   |
| SVCSTG_AMS_4000121   | The alarm does not exist.                             | 请在界面上查看对应的阈值规则是否存在。 |
| SVCSTG_AMS_5000000    | Internal server error.                                 | 请联系技术支持工程师解决。      |
   
