Updated on 2024-02-01 GMT+08:00

Modifying a Threshold Rule

Function

This API is used to modify a threshold rule. (This API is not available in LA-Mexico City2, LA-Santiago, or LA-Sao Paulo1.)

Calling Method

For details, see Calling APIs.

URI

PUT /v2/{project_id}/alarm-rules

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Project ID obtained from IAM. Generally, a project ID contains 32 characters.

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

Yes

String

User token obtained from IAM.

Content-Type

Yes

String

Content type, which is application/json.

Enumeration values:

  • application/json

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

action_enabled

No

Boolean

Whether to enable notification.

alarm_actions

No

Array of strings

List of alarm notifications.

alarm_advice

No

String

Alarm clearance suggestion, which contains a maximum of 255 characters.

Minimum: 0

Maximum: 255

alarm_description

No

String

Threshold rule description, which contains a maximum of 1024 characters.

Minimum: 0

Maximum: 1024

alarm_level

Yes

Integer

Alarm severity. Values: 1 (critical), 2 (major), 3 (minor), and 4 (warning).

Enumeration values:

  • 1

  • 2

  • 3

  • 4

alarm_rule_name

Yes

String

Threshold rule name. Enter a maximum of 100 characters and do not start or end with a special character. Only letters, digits, underscores (_), and hyphens (-) are allowed.

comparison_operator

Yes

String

Comparison operator. Options: <: less than the threshold; >: greater than the threshold; <=: less than or equal to the threshold; >=: greater than or equal to the threshold.

Enumeration values:

  • <

  • >

  • <=

  • >=

dimensions

Yes

Array of Dimension objects

List of time series dimensions.

evaluation_periods

Yes

Integer

Interval at which data is calculated.

is_turn_on

No

Boolean

Whether to enable the threshold rule.

insufficient_data_actions

No

Array of strings

List of insufficient data notifications.

metric_name

Yes

String

Time series name. Length: 1 to 255 characters.

namespace

Yes

String

Namespace of time series objects.

ok_actions

No

Array of strings

List of normal status notifications.

period

Yes

Integer

Statistical period. Options: 60000: one minute; 300000: five minutes; 900000: 15 minutes; 3600000: one hour.

Enumeration values:

  • 60000

  • 300000

  • 900000

  • 36000000

statistic

Yes

String

Statistic.

Enumeration values:

  • maximum

  • minimum

  • average

  • sum

  • sampleCount

threshold

Yes

String

Threshold.

unit

Yes

String

Time series unit.

Table 4 Dimension

Parameter

Mandatory

Type

Description

name

Yes

String

Dimension name.

value

Yes

String

Dimension value.

Response Parameters

Status code: 200

Table 5 Response body parameters

Parameter

Type

Description

alarm_rule_id

Long

Threshold rule ID.

Status code: 400

Table 6 Response body parameters

Parameter

Type

Description

error_code

String

Error code.

error_msg

String

Error message.

error_type

String

Error type.

trace_id

String

Trace ID, which is used to search for logs and locate faults. If 2xx is returned, trace_id is empty. If 4xx, trace_id is not empty.

Example Requests

Modify a threshold rule whose name is testaom, alarm severity is 3, metric name is cpuCoreLimit, and namespace is PAAS.CONTAINER.

https://{Endpoint}/v2/{project_id}/alarm-rules

{
  "action_enabled" : false,
  "alarm_actions" : [ ],
  "alarm_advice" : "",
  "alarm_description" : "",
  "alarm_level" : 3,
  "alarm_rule_name" : "aom_rule",
  "comparison_operator" : ">=",
  "dimensions" : [ {
    "name" : "appName",
    "value" : "rhm-broker"
  } ],
  "evaluation_periods" : 1,
  "insufficient_data_actions" : [ ],
  "metric_name" : "cpuCoreLimit",
  "namespace" : "PAAS.CONTAINER",
  "ok_actions" : [ ],
  "period" : 60000,
  "statistic" : "average",
  "threshold" : 0,
  "unit" : "Core"
}

Example Responses

Status code: 200

OK: The request is successful.

{
  "alarm_rule_id" : 91307490000416600
}

Status code: 400

Bad Request: The request is invalid. The client should not repeat the request without modifications.

{
  "error_code" : "AOM.04003001",
  "error_msg" : "please check request param",
  "error_type" : "BAD_REQUEST"
}

SDK Sample Code

The SDK sample code is as follows.

Java

Modify a threshold rule whose name is testaom, alarm severity is 3, metric name is cpuCoreLimit, and namespace is PAAS.CONTAINER.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package com.huaweicloud.sdk.test;

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.aom.v2.region.AomRegion;
import com.huaweicloud.sdk.aom.v2.*;
import com.huaweicloud.sdk.aom.v2.model.*;

import java.util.List;
import java.util.ArrayList;

public class UpdateAlarmRuleSolution {

    public static void main(String[] args) {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        String ak = System.getenv("CLOUD_SDK_AK");
        String sk = System.getenv("CLOUD_SDK_SK");

        ICredential auth = new BasicCredentials()
                .withAk(ak)
                .withSk(sk);

        AomClient client = AomClient.newBuilder()
                .withCredential(auth)
                .withRegion(AomRegion.valueOf("<YOUR REGION>"))
                .build();
        UpdateAlarmRuleRequest request = new UpdateAlarmRuleRequest();
        UpdateAlarmRuleParam body = new UpdateAlarmRuleParam();
        List<Dimension> listbodyDimensions = new ArrayList<>();
        listbodyDimensions.add(
            new Dimension()
                .withName("appName")
                .withValue("rhm-broker")
        );
        body.withUnit("Core");
        body.withThreshold("0");
        body.withStatistic(UpdateAlarmRuleParam.StatisticEnum.fromValue("average"));
        body.withPeriod(UpdateAlarmRuleParam.PeriodEnum.NUMBER_60000);
        body.withNamespace("PAAS.CONTAINER");
        body.withMetricName("cpuCoreLimit");
        body.withEvaluationPeriods(1);
        body.withDimensions(listbodyDimensions);
        body.withComparisonOperator(UpdateAlarmRuleParam.ComparisonOperatorEnum.fromValue(">="));
        body.withAlarmRuleName("aom_rule");
        body.withAlarmLevel(UpdateAlarmRuleParam.AlarmLevelEnum.NUMBER_3);
        body.withAlarmDescription("");
        body.withAlarmAdvice("");
        body.withActionEnabled(false);
        request.withBody(body);
        try {
            UpdateAlarmRuleResponse response = client.updateAlarmRule(request);
            System.out.println(response.toString());
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getRequestId());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
    }
}

Python

Modify a threshold rule whose name is testaom, alarm severity is 3, metric name is cpuCoreLimit, and namespace is PAAS.CONTAINER.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# coding: utf-8

from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkaom.v2.region.aom_region import AomRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkaom.v2 import *

if __name__ == "__main__":
    # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak = __import__('os').getenv("CLOUD_SDK_AK")
    sk = __import__('os').getenv("CLOUD_SDK_SK")

    credentials = BasicCredentials(ak, sk) \

    client = AomClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(AomRegion.value_of("<YOUR REGION>")) \
        .build()

    try:
        request = UpdateAlarmRuleRequest()
        listDimensionsbody = [
            Dimension(
                name="appName",
                value="rhm-broker"
            )
        ]
        request.body = UpdateAlarmRuleParam(
            unit="Core",
            threshold="0",
            statistic="average",
            period=60000,
            namespace="PAAS.CONTAINER",
            metric_name="cpuCoreLimit",
            evaluation_periods=1,
            dimensions=listDimensionsbody,
            comparison_operator=">=",
            alarm_rule_name="aom_rule",
            alarm_level=3,
            alarm_description="",
            alarm_advice="",
            action_enabled=False
        )
        response = client.update_alarm_rule(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

Go

Modify a threshold rule whose name is testaom, alarm severity is 3, metric name is cpuCoreLimit, and namespace is PAAS.CONTAINER.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    aom "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/aom/v2"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/aom/v2/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/aom/v2/region"
)

func main() {
    // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak := os.Getenv("CLOUD_SDK_AK")
    sk := os.Getenv("CLOUD_SDK_SK")

    auth := basic.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        Build()

    client := aom.NewAomClient(
        aom.AomClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.UpdateAlarmRuleRequest{}
	var listDimensionsbody = []model.Dimension{
        {
            Name: "appName",
            Value: "rhm-broker",
        },
    }
	alarmDescriptionUpdateAlarmRuleParam:= ""
	alarmAdviceUpdateAlarmRuleParam:= ""
	actionEnabledUpdateAlarmRuleParam:= false
	request.Body = &model.UpdateAlarmRuleParam{
		Unit: "Core",
		Threshold: "0",
		Statistic: model.GetUpdateAlarmRuleParamStatisticEnum().AVERAGE,
		Period: model.GetUpdateAlarmRuleParamPeriodEnum().E_60000,
		Namespace: "PAAS.CONTAINER",
		MetricName: "cpuCoreLimit",
		EvaluationPeriods: int32(1),
		Dimensions: listDimensionsbody,
		ComparisonOperator: model.GetUpdateAlarmRuleParamComparisonOperatorEnum().GREATER_THAN_OR_EQUAL_TO,
		AlarmRuleName: "aom_rule",
		AlarmLevel: model.GetUpdateAlarmRuleParamAlarmLevelEnum().E_3,
		AlarmDescription: &alarmDescriptionUpdateAlarmRuleParam,
		AlarmAdvice: &alarmAdviceUpdateAlarmRuleParam,
		ActionEnabled: &actionEnabledUpdateAlarmRuleParam,
	}
	response, err := client.UpdateAlarmRule(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

More

For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.

Status Codes

Status Code

Description

200

OK: The request is successful.

400

Bad Request: The request is invalid. The client should not repeat the request without modifications.

401

Unauthorized: The authentication information is incorrect or invalid.

403

Forbidden: The request is rejected. The server has received the request and understood it, but the server refuses to respond to it. The client should not repeat the request without modifications.

500

Internal Server Error: The server is able to receive the request but unable to understand the request.

503

Service Unavailable: The requested service is invalid. The client should not repeat the request without modifications.

Error Codes

See Error Codes.