Help Center/ Application Operations Management/ API Reference/ APIs/ Alarm/ Adding or Modifying Metric or Event Alarm Rules
Updated on 2024-11-27 GMT+08:00

Adding or Modifying Metric or Event Alarm Rules

Function

This API is used to add or modify metric or event alarm rules. (Note: This API is available in CN East-Shanghai1.)

Calling Method

For details, see Calling APIs.

URI

POST /v4/{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.

Table 2 Query Parameters

Parameter

Mandatory

Type

Description

action_id

Yes

String

Alarm rule ID.

  • To add an alarm rule, enter add-alarm-action.

  • To modify an alarm rule, enter update-alarm-action.

Request Parameters

Table 3 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.

Enterprise-Project-Id

No

String

Enterprise project ID.

  • To query instances in an enterprise project, enter the enterprise project ID.

  • To query instances in all enterprise projects, enter all_granted_eps.

Table 4 Request body parameters

Parameter

Mandatory

Type

Description

alarm_notifications

No

AlarmNotification object

Alarm notification module.

alarm_rule_description

No

String

Alarm rule description.

alarm_rule_enable

No

Boolean

Enabled or not.

alarm_rule_name

Yes

String

Alarm rule name.

alarm_rule_type

Yes

String

Alarm rule type.

  • metric: metric alarm rule

  • event: event alarm rule

event_alarm_spec

No

EventAlarmSpec object

Structure of an event alarm rule.

metric_alarm_spec

No

MetricAlarmSpec object

Structure of a metric alarm rule.

prom_instance_id

No

String

Prometheus instance ID.

Table 5 AlarmNotification

Parameter

Mandatory

Type

Description

notification_type

Yes

String

Notification type.

  • direct: direct alarm reporting

  • alarm_policy: alarm reporting after noise reduction

route_group_enable

Yes

Boolean

Whether to enable a grouping rule.

  • If the notification type is alarm_policy, set this parameter to true.

  • If the notification type is direct, set this parameter to false.

NOTE:

If both notify_triggered and notify_resolved are set to false, route_group_enable must be set to false.

route_group_rule

Yes

String

Grouping rule name.

  • If route_group_enable is set to true, enter a grouping rule name.

  • If route_group_enable is set to false, enter "".

notification_enable

No

Boolean

Whether to enable an alarm action rule.

  • If the notification type is direct, set this parameter to true.

  • If the notification type is alarm_policy, set this parameter to false.

NOTE:

If both notify_triggered and notify_resolved are set to false, notification_enable must be set to false.

bind_notification_rule_id

No

String

Alarm action rule ID.

  • If notification_enable is set to true, enter an alarm action rule ID.

  • If notification_enable is set to false, enter "".

notify_resolved

No

Boolean

Whether to send a notification when an alarm is cleared.

  • true: Send a notification.

  • false: Do not send any notification.

notify_triggered

No

Boolean

Whether to send a notification when an alarm is triggered.

  • true: Send a notification.

  • false: Do not send any notification.

notify_frequency

No

Integer

Notification frequency.

  • If the notification type is alarm_policy, set this parameter to -1.

  • If the notification type is direct, set this parameter to any of the following:

  • 0: alarm sent only once

  • 300: every 5 minutes

  • 600: every 10 minutes

  • 900: every 15 minutes

  • 1800: every 30 minutes

  • 3600: every hour

  • 10800: every 3 hours

  • 21600: every 6 hours

  • 43200: every 12 hours

  • 86400: every day

Table 6 EventAlarmSpec

Parameter

Mandatory

Type

Description

alarm_source

No

String

Alarm rule source.

  • systemEvent

  • customEvent

event_source

No

String

Alarm source.

  • RDS

  • EVS

  • CCE

  • LTS

  • AOM

monitor_objects

No

Array of Map<String,String> objects

List of monitored objects. Key-value pair.

  • event_type: notification type

  • event_severity: alarm severity

  • event_name: event name

  • namespace: namespace

  • clusterId: cluster ID

  • customField: user-defined field

trigger_conditions

No

Array of EventTriggerCondition objects

Trigger conditions.

alarm_rule_template_bind_enable

No

Boolean

(Deprecated) Whether to bind an alarm rule template.

alarm_rule_template_id

No

String

(Deprecated) ID of the alarm rule template.

Table 7 EventTriggerCondition

Parameter

Mandatory

Type

Description

event_name

No

String

Event name.

trigger_type

No

String

Trigger mode.

  • immediately: An alarm is triggered immediately if the alarm condition is met.

  • accumulative: An alarm is triggered if the alarm condition is met for a specified number of times.

aggregation_window

No

Long

Statistical period, in seconds. For example, 3600 indicates one hour. Leave this parameter empty if trigger_type is set to immediately.

operator

No

String

Operator. Options: >, <, =, >=, and <=. Leave this parameter empty if trigger_type is set to immediately.

thresholds

No

Map<String,Integer>

Key-value pair. The key indicates the alarm severity while the value indicates the number of accumulated trigger times. Leave this parameter empty if trigger_type is set to immediately.

frequency

No

String

Event alarm notification frequency. Leave this parameter empty if trigger_type is set to immediately.

  • 0: alarm sent only once

  • 300: every 5 minutes

  • 600: every 10 minutes

  • 900: every 15 minutes

  • 1800: every 30 minutes

  • 3600: every hour

  • 10800: every 3 hours

  • 21600: every 6 hours

  • 43200: every 12 hours

  • 86400: every day

Table 8 MetricAlarmSpec

Parameter

Mandatory

Type

Description

monitor_type

Yes

String

Monitoring type.

  • all_metric: Select metrics from all metrics.

  • promql: Select metrics using PromQL.

  • resource (unavailable soon): Select metrics by resource type.

no_data_conditions

No

Array of NoDataCondition objects

Action taken for insufficient data.

alarm_tags

Yes

Array of AlarmTags objects

Alarm tags.

monitor_objects

No

Array of Map<String,String> objects

List of monitored objects.

recovery_conditions

Yes

RecoveryCondition object

Alarm clearance condition.

trigger_conditions

Yes

Array of TriggerCondition objects

Trigger conditions.

alarm_rule_template_bind_enable

No

Boolean

(Deprecated) Whether to bind an alarm rule template.

alarm_rule_template_id

No

String

(Deprecated) ID of the alarm rule template.

Table 9 NoDataCondition

Parameter

Mandatory

Type

Description

no_data_timeframe

No

Integer

Number of periods without data.

no_data_alert_state

No

String

Status of the threshold rule when the data is insufficient.

  • no_data: A notification indicating insufficient data is sent.

  • alerting: An alarm is triggered.

  • ok: No exception occurs.

  • pre_state: Retain the previous state.

notify_no_data

No

Boolean

Whether to send a notification when data is insufficient.

Table 10 AlarmTags

Parameter

Mandatory

Type

Description

auto_tags

No

Array of strings

Automatic tag.

custom_tags

No

Array of strings

Custom tag.

custom_annotations

No

Array of strings

Alarm annotation.

Table 11 RecoveryCondition

Parameter

Mandatory

Type

Description

recovery_timeframe

No

Integer

Number of consecutive periods for which the trigger condition is not met to clear an alarm.

Table 12 TriggerCondition

Parameter

Mandatory

Type

Description

metric_query_mode

Yes

String

Metric query mode.

  • AOM: native AOM

  • PROM: AOM Prometheus

  • NATIVE_PROM: native Prometheus

metric_namespace

Yes

String

Metric namespace.

metric_name

Yes

String

Metric name.

metric_unit

Yes

String

Metric unit.

metric_labels

Yes

Array of strings

Metric dimension.

promql

Yes

String

Prometheus statement.

promql_expr

No

Array of strings

Prometheus statement template.

trigger_times

No

String

Number of consecutive periods.

trigger_interval

No

String

Check interval.

  • If trigger_type is set to HOURLY*, set this parameter to "".

  • If trigger_type is set to DAILY, set 00:00–23:00. Example: 03:00.

  • If trigger_type is set to WEEKLY, select a day in a week and then select 00:00–23:00. Example: **1 03:00" indicates 03:00 on every Monday.

  • If trigger_type is set to CRON, specify a standard cron expression.

  • If trigger_type is set to FIXED_RATE, select 15s, 30s, 1–59 min, or 1–24 h.

trigger_type

No

String

Trigger type.

  • FIXED_RATE: fixed interval

  • HOURLY: every hour

  • DAILY: every day

  • WEEKLY: every week

  • CRON: Cron expression

promql_for

No

String

Native Prometheus monitoring duration.

aggregation_type

No

String

Statistical mode.

  • average

  • minimum

  • maximum

  • sum

  • sampleCount

operator

No

String

Operator. Options: >, <, =, >=, and <=.

thresholds

No

Map<String,String>

Key-value pair. The key indicates the alarm severity while the value indicates the alarm threshold.

aggregation_window

No

String

Statistical period.

  • 15s

  • 30s

  • 1m

  • 5m

  • 15m

  • 1h

cmdb

No

CmdbInfo object

CMDB information.

query_match

No

String

Query filter criteria.

query_param

Yes

String

Query parameters.

aom_monitor_level

No

String

Monitoring layer.

aggregate_type

No

String

Aggregation mode.

  • by: not grouped

  • avg

  • max

  • min

  • sum

metric_statistic_method

No

String

Metric statistics method to be used when you set Configuration Mode to Select from all metrics during alarm rule setting.

  • single: single metric

  • mix: multi-metric combined operations

expression

No

String

Expression of a combined operation.

mix_promql

No

String

PromQL of a combined operation.

Table 13 CmdbInfo

Parameter

Mandatory

Type

Description

app_id

No

String

Application ID.

node_ids

No

Array of NodeInfo objects

Node information list.

Table 14 NodeInfo

Parameter

Mandatory

Type

Description

node_type

No

String

Node type.

node_id

No

String

Node ID.

Response Parameters

Status code: 200

Table 15 Response body parameters

Parameter

Type

Description

error_code

String

Error code.

error_message

String

Error message.

alarm_rules

Array of AddOrUpdateAlarmRuleV4ItemResult objects

Alarm rule list.

Table 16 AddOrUpdateAlarmRuleV4ItemResult

Parameter

Type

Description

alarm_rule_name

String

Alarm rule name.

result

String

Whether an alarm rule is successfully added or modified.

Status code: 400

Table 17 Response body parameters

Parameter

Type

Description

error_code

String

Error code.

error_msg

String

Error message.

error_type

String

Error type.

trace_id

String

Request ID.

Status code: 500

Table 18 Response body parameters

Parameter

Type

Description

error_code

String

Error code.

error_msg

String

Error message.

error_type

String

Error type.

trace_id

String

Request ID.

Example Requests

  • Add a metric alarm rule.

    https://{Endpoint}/v4/{project_id}/alarm-rules?action_id=add-alarm-action
    
    {
      "alarm_notifications" : {
        "bind_notification_rule_id" : "",
        "notification_enable" : false,
        "notification_type" : "alarm_policy",
        "notify_frequency" : -1,
        "notify_resolved" : true,
        "notify_triggered" : true,
        "route_group_enable" : true,
        "route_group_rule" : "aom_route_group_rule"
      },
      "alarm_rule_description" : "aom_alarm_rule",
      "alarm_rule_enable" : true,
      "alarm_rule_name" : "aom_alarm_rule",
      "alarm_rule_type" : "metric",
      "metric_alarm_spec" : {
        "alarm_rule_template_bind_enable" : false,
        "alarm_rule_template_id" : "",
        "alarm_tags" : [ {
          "auto_tags" : [ ],
          "custom_annotations" : [ "333=rrr" ],
          "custom_tags" : [ "333=rrr" ]
        } ],
        "monitor_objects" : [ ],
        "monitor_type" : "all_metric",
        "no_data_conditions" : [ {
          "no_data_alert_state" : "no_data",
          "no_data_timeframe" : 3,
          "notify_no_data" : true
        } ],
        "recovery_conditions" : {
          "recovery_timeframe" : 2
        },
        "trigger_conditions" : [ {
          "aggregate_type" : "by",
          "aggregation_type" : "average",
          "aggregation_window" : "5m",
          "aom_monitor_level" : "",
          "cmdb" : {
            "app_id" : "",
            "node_ids" : [ ]
          },
          "expression" : "",
          "metric_labels" : [ ],
          "metric_name" : "aom_metrics_total",
          "metric_namespace" : "",
          "metric_query_mode" : "PROM",
          "metric_statistic_method" : "single",
          "metric_unit" : "",
          "mix_promql" : "",
          "operator" : ">",
          "promql" : "label_replace(avg_over_time(aom_metrics_total{instance=\"1117919565\"}[59999ms]),\"__name__\",\"aom_metrics_total\",\"\",\"\")",
          "query_match" : [ {
            "addMode" : "first",
            "conditionCompare" : "=",
            "conditionList" : [ {
              "name" : "1117919565"
            } ],
            "conditionValue" : [ {
              "name" : "1117919565"
            } ],
            "dimension" : "instance",
            "id" : "first",
            "regExpress" : null
          } ],
          "query_param" : { },
          "thresholds" : {
            "Info" : "100"
          },
          "trigger_interval" : "15m",
          "trigger_times" : 4,
          "trigger_type" : "FIXED_RATE"
        } ]
      },
      "prom_instance_id" : "0"
    }
  • Modify a metric alarm rule.

    https://{Endpoint}/v4/{project_id}/alarm-rules?action_id=update-alarm-action
    
    {
      "alarm_notifications" : {
        "bind_notification_rule_id" : "",
        "notification_enable" : false,
        "notification_type" : "alarm_policy",
        "notify_frequency" : -1,
        "notify_resolved" : true,
        "notify_triggered" : true,
        "route_group_enable" : true,
        "route_group_rule" : "aom_route_group_rule"
      },
      "alarm_rule_description" : "aom_alarm_rule",
      "alarm_rule_enable" : true,
      "alarm_rule_name" : "aom_alarm_rule",
      "alarm_rule_type" : "metric",
      "metric_alarm_spec" : {
        "alarm_rule_template_bind_enable" : false,
        "alarm_rule_template_id" : "",
        "alarm_tags" : [ {
          "auto_tags" : [ ],
          "custom_annotations" : [ "333=rrr" ],
          "custom_tags" : [ "333=rrr" ]
        } ],
        "monitor_objects" : [ ],
        "monitor_type" : "all_metric",
        "no_data_conditions" : [ {
          "no_data_alert_state" : "no_data",
          "no_data_timeframe" : 3,
          "notify_no_data" : true
        } ],
        "recovery_conditions" : {
          "recovery_timeframe" : 2
        },
        "trigger_conditions" : [ {
          "aggregate_type" : "by",
          "aggregation_type" : "average",
          "aggregation_window" : "5m",
          "aom_monitor_level" : "",
          "cmdb" : {
            "app_id" : "",
            "node_ids" : [ ]
          },
          "expression" : "",
          "metric_labels" : [ ],
          "metric_name" : "aom_metrics_total",
          "metric_namespace" : "",
          "metric_query_mode" : "PROM",
          "metric_statistic_method" : "single",
          "metric_unit" : "",
          "mix_promql" : "",
          "operator" : ">",
          "promql" : "label_replace(avg_over_time(aom_metrics_total{instance=\"1117919565\"}[59999ms]),\"__name__\",\"aom_metrics_total\",\"\",\"\")",
          "query_match" : [ {
            "addMode" : "first",
            "conditionCompare" : "=",
            "conditionList" : [ {
              "name" : "1117919565"
            } ],
            "conditionValue" : [ {
              "name" : "1117919565"
            } ],
            "dimension" : "instance",
            "id" : "first",
            "regExpress" : null
          } ],
          "query_param" : { },
          "thresholds" : {
            "Info" : "100"
          },
          "trigger_interval" : "15m",
          "trigger_times" : 4,
          "trigger_type" : "FIXED_RATE"
        } ]
      },
      "prom_instance_id" : "0"
    }
  • Add an event alarm rule.

    https://{Endpoint}/v4/{project_id}/alarm-rules?action_id=add-alarm-action
    
    {
      "alarm_notifications" : {
        "bind_notification_rule_id" : "aom_event_notification_rule",
        "notification_enable" : true,
        "notification_type" : "direct",
        "notify_frequency" : "-1",
        "notify_resolved" : false,
        "notify_triggered" : false,
        "route_group_enable" : false,
        "route_group_rule" : ""
      },
      "alarm_rule_description" : "aom_alarm_event_rule",
      "alarm_rule_enable" : true,
      "alarm_rule_name" : "aom_event_alarm_rule",
      "alarm_rule_type" : "event",
      "event_alarm_spec" : {
        "alarm_source" : "systemEvent",
        "event_source" : "CCE",
        "monitor_objects" : [ {
          "event_name" : "ScaleUpTimedOut; VolumeResizeFailed",
          "event_type" : "event"
        } ],
        "trigger_conditions" : [ {
          "aggregation_window" : 300,
          "event_name" : "ScaleUpTimedOut",
          "frequency" : "-1",
          "operator" : ">",
          "thresholds" : {
            "Critical" : 1
          },
          "trigger_type" : "accumulative"
        }, {
          "event_name" : "VolumeResizeFailed",
          "thresholds" : {
            "Critical" : 1
          },
          "trigger_type" : "immediately"
        } ]
      }
    }
  • Modify an event alarm rule.

    https://{Endpoint}/v4/{project_id}/alarm-rules?action_id=update-alarm-action
    
    {
      "alarm_notifications" : {
        "bind_notification_rule_id" : "aom_event_notification_rule",
        "notification_enable" : true,
        "notification_type" : "direct",
        "notify_frequency" : "-1",
        "notify_resolved" : false,
        "notify_triggered" : false,
        "route_group_enable" : false,
        "route_group_rule" : ""
      },
      "alarm_rule_description" : "aom_alarm_event_rule",
      "alarm_rule_enable" : true,
      "alarm_rule_name" : "aom_event_alarm_rule",
      "alarm_rule_type" : "event",
      "event_alarm_spec" : {
        "alarm_source" : "systemEvent",
        "event_source" : "CCE",
        "monitor_objects" : [ {
          "event_name" : "ScaleUpTimedOut; VolumeResizeFailed",
          "event_type" : "event"
        } ],
        "trigger_conditions" : [ {
          "aggregation_window" : 300,
          "event_name" : "ScaleUpTimedOut",
          "frequency" : "-1",
          "operator" : ">",
          "thresholds" : {
            "Critical" : 1
          },
          "trigger_type" : "accumulative"
        }, {
          "event_name" : "VolumeResizeFailed",
          "thresholds" : {
            "Critical" : 2
          },
          "trigger_type" : "immediately"
        } ]
      }
    }

Example Responses

Status code: 200

OK: The request is successful.

{
  "alarm_rules" : [ {
    "alarm_rule_name" : "aom_alarm_rule",
    "result" : "success"
  } ],
  "error_code" : "200",
  "error_message" : "success"
}

Status code: 400

Bad Request: Invalid request. The client should not repeat this request without modification.

{
  "error_code" : "AOM.02021006",
  "error_msg" : "This rule actionId is invalid",
  "error_type" : "PARAM_INVALID",
  "trace_id" : "58ef0f7c107a2b577f78b9cc7f48b46f"
}

Status code: 500

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

{
  "error_code" : "AOM.02021500",
  "error_msg" : "internal server error",
  "error_type" : "INTERNAL_SERVER_ERROR",
  "trace_id" : ""
}

SDK Sample Code

The SDK sample code is as follows.

Java

  • Add a metric alarm rule.

      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
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    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;
    import java.util.Map;
    import java.util.HashMap;
    
    public class AddOrUpdateMetricOrEventAlarmRuleSolution {
    
        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");
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    .withAk(ak)
                    .withSk(sk);
    
            AomClient client = AomClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(AomRegion.valueOf("<YOUR REGION>"))
                    .build();
            AddOrUpdateMetricOrEventAlarmRuleRequest request = new AddOrUpdateMetricOrEventAlarmRuleRequest();
            AddOrUpdateAlarmRuleV4RequestBody body = new AddOrUpdateAlarmRuleV4RequestBody();
            CmdbInfo cmdbTriggerConditions = new CmdbInfo();
            cmdbTriggerConditions.withAppId("");
            Map listTriggerConditionsThresholds = new HashMap<>();
            listTriggerConditionsThresholds.put("Info", "100");
            List listMetricAlarmSpecTriggerConditions = new ArrayList<>();
            listMetricAlarmSpecTriggerConditions.add(
                new TriggerCondition()
                    .withMetricQueryMode(TriggerCondition.MetricQueryModeEnum.fromValue("PROM"))
                    .withMetricNamespace("")
                    .withMetricName("aom_metrics_total")
                    .withMetricUnit("")
                    .withMetricLabels()
                    .withPromql("label_replace(avg_over_time(aom_metrics_total{instance="1117919565"}[59999ms]),"__name__","aom_metrics_total","","")")
                    .withTriggerTimes("4")
                    .withTriggerInterval("15m")
                    .withTriggerType(TriggerCondition.TriggerTypeEnum.fromValue("FIXED_RATE"))
                    .withAggregationType("average")
                    .withOperator(">")
                    .withThresholds(listTriggerConditionsThresholds)
                    .withAggregationWindow("5m")
                    .withCmdb(cmdbTriggerConditions)
                    .withQueryMatch("[{addMode=first, conditionCompare==, conditionList=[{name=1117919565}], conditionValue=[{name=1117919565}], dimension=instance, id=first, regExpress=null}]")
                    .withQueryParam("{}")
                    .withAomMonitorLevel("")
                    .withAggregateType(TriggerCondition.AggregateTypeEnum.fromValue("by"))
                    .withMetricStatisticMethod(TriggerCondition.MetricStatisticMethodEnum.fromValue("single"))
                    .withExpression("")
                    .withMixPromql("")
            );
            RecoveryCondition recoveryConditionsMetricAlarmSpec = new RecoveryCondition();
            recoveryConditionsMetricAlarmSpec.withRecoveryTimeframe(2);
            List listAlarmTagsCustomAnnotations = new ArrayList<>();
            listAlarmTagsCustomAnnotations.add("333=rrr");
            List listAlarmTagsCustomTags = new ArrayList<>();
            listAlarmTagsCustomTags.add("333=rrr");
            List listMetricAlarmSpecAlarmTags = new ArrayList<>();
            listMetricAlarmSpecAlarmTags.add(
                new AlarmTags()
                    .withAutoTags()
                    .withCustomTags(listAlarmTagsCustomTags)
                    .withCustomAnnotations(listAlarmTagsCustomAnnotations)
            );
            List listMetricAlarmSpecNoDataConditions = new ArrayList<>();
            listMetricAlarmSpecNoDataConditions.add(
                new NoDataCondition()
                    .withNoDataTimeframe(3)
                    .withNoDataAlertState(NoDataCondition.NoDataAlertStateEnum.fromValue("no_data"))
                    .withNotifyNoData(true)
            );
            MetricAlarmSpec metricAlarmSpecbody = new MetricAlarmSpec();
            metricAlarmSpecbody.withMonitorType(MetricAlarmSpec.MonitorTypeEnum.fromValue("all_metric"))
                .withNoDataConditions(listMetricAlarmSpecNoDataConditions)
                .withAlarmTags(listMetricAlarmSpecAlarmTags)
                .withRecoveryConditions(recoveryConditionsMetricAlarmSpec)
                .withTriggerConditions(listMetricAlarmSpecTriggerConditions)
                .withAlarmRuleTemplateBindEnable(false)
                .withAlarmRuleTemplateId("");
            AlarmNotification alarmNotificationsbody = new AlarmNotification();
            alarmNotificationsbody.withNotificationType(AlarmNotification.NotificationTypeEnum.fromValue("alarm_policy"))
                .withRouteGroupEnable(true)
                .withRouteGroupRule("aom_route_group_rule")
                .withNotificationEnable(false)
                .withBindNotificationRuleId("")
                .withNotifyResolved(true)
                .withNotifyTriggered(true)
                .withNotifyFrequency(-1);
            body.withPromInstanceId("0");
            body.withMetricAlarmSpec(metricAlarmSpecbody);
            body.withAlarmRuleType(AddOrUpdateAlarmRuleV4RequestBody.AlarmRuleTypeEnum.fromValue("metric"));
            body.withAlarmRuleName("aom_alarm_rule");
            body.withAlarmRuleEnable(true);
            body.withAlarmRuleDescription("aom_alarm_rule");
            body.withAlarmNotifications(alarmNotificationsbody);
            request.withBody(body);
            try {
                AddOrUpdateMetricOrEventAlarmRuleResponse response = client.addOrUpdateMetricOrEventAlarmRule(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());
            }
        }
    }
    
  • Modify a metric alarm rule.

      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
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    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;
    import java.util.Map;
    import java.util.HashMap;
    
    public class AddOrUpdateMetricOrEventAlarmRuleSolution {
    
        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");
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    .withAk(ak)
                    .withSk(sk);
    
            AomClient client = AomClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(AomRegion.valueOf("<YOUR REGION>"))
                    .build();
            AddOrUpdateMetricOrEventAlarmRuleRequest request = new AddOrUpdateMetricOrEventAlarmRuleRequest();
            AddOrUpdateAlarmRuleV4RequestBody body = new AddOrUpdateAlarmRuleV4RequestBody();
            CmdbInfo cmdbTriggerConditions = new CmdbInfo();
            cmdbTriggerConditions.withAppId("");
            Map<String, String> listTriggerConditionsThresholds = new HashMap<>();
            listTriggerConditionsThresholds.put("Info", "100");
            List<TriggerCondition> listMetricAlarmSpecTriggerConditions = new ArrayList<>();
            listMetricAlarmSpecTriggerConditions.add(
                new TriggerCondition()
                    .withMetricQueryMode(TriggerCondition.MetricQueryModeEnum.fromValue("PROM"))
                    .withMetricNamespace("")
                    .withMetricName("aom_metrics_total")
                    .withMetricUnit("")
                    .withMetricLabels()
                    .withPromql("label_replace(avg_over_time(aom_metrics_total{instance="1117919565"}[59999ms]),"__name__","aom_metrics_total","","")")
                    .withTriggerTimes("4")
                    .withTriggerInterval("15m")
                    .withTriggerType(TriggerCondition.TriggerTypeEnum.fromValue("FIXED_RATE"))
                    .withAggregationType("average")
                    .withOperator(">")
                    .withThresholds(listTriggerConditionsThresholds)
                    .withAggregationWindow("5m")
                    .withCmdb(cmdbTriggerConditions)
                    .withQueryMatch("[{addMode=first, conditionCompare==, conditionList=[{name=1117919565}], conditionValue=[{name=1117919565}], dimension=instance, id=first, regExpress=null}]")
                    .withQueryParam("{}")
                    .withAomMonitorLevel("")
                    .withAggregateType(TriggerCondition.AggregateTypeEnum.fromValue("by"))
                    .withMetricStatisticMethod(TriggerCondition.MetricStatisticMethodEnum.fromValue("single"))
                    .withExpression("")
                    .withMixPromql("")
            );
            RecoveryCondition recoveryConditionsMetricAlarmSpec = new RecoveryCondition();
            recoveryConditionsMetricAlarmSpec.withRecoveryTimeframe(2);
            List<String> listAlarmTagsCustomAnnotations = new ArrayList<>();
            listAlarmTagsCustomAnnotations.add("333=rrr");
            List<String> listAlarmTagsCustomTags = new ArrayList<>();
            listAlarmTagsCustomTags.add("333=rrr");
            List<AlarmTags> listMetricAlarmSpecAlarmTags = new ArrayList<>();
            listMetricAlarmSpecAlarmTags.add(
                new AlarmTags()
                    .withAutoTags()
                    .withCustomTags(listAlarmTagsCustomTags)
                    .withCustomAnnotations(listAlarmTagsCustomAnnotations)
            );
            List<NoDataCondition> listMetricAlarmSpecNoDataConditions = new ArrayList<>();
            listMetricAlarmSpecNoDataConditions.add(
                new NoDataCondition()
                    .withNoDataTimeframe(3)
                    .withNoDataAlertState(NoDataCondition.NoDataAlertStateEnum.fromValue("no_data"))
                    .withNotifyNoData(true)
            );
            MetricAlarmSpec metricAlarmSpecbody = new MetricAlarmSpec();
            metricAlarmSpecbody.withMonitorType(MetricAlarmSpec.MonitorTypeEnum.fromValue("all_metric"))
                .withNoDataConditions(listMetricAlarmSpecNoDataConditions)
                .withAlarmTags(listMetricAlarmSpecAlarmTags)
                .withRecoveryConditions(recoveryConditionsMetricAlarmSpec)
                .withTriggerConditions(listMetricAlarmSpecTriggerConditions)
                .withAlarmRuleTemplateBindEnable(false)
                .withAlarmRuleTemplateId("");
            AlarmNotification alarmNotificationsbody = new AlarmNotification();
            alarmNotificationsbody.withNotificationType(AlarmNotification.NotificationTypeEnum.fromValue("alarm_policy"))
                .withRouteGroupEnable(true)
                .withRouteGroupRule("aom_route_group_rule")
                .withNotificationEnable(false)
                .withBindNotificationRuleId("")
                .withNotifyResolved(true)
                .withNotifyTriggered(true)
                .withNotifyFrequency(-1);
            body.withPromInstanceId("0");
            body.withMetricAlarmSpec(metricAlarmSpecbody);
            body.withAlarmRuleType(AddOrUpdateAlarmRuleV4RequestBody.AlarmRuleTypeEnum.fromValue("metric"));
            body.withAlarmRuleName("aom_alarm_rule");
            body.withAlarmRuleEnable(true);
            body.withAlarmRuleDescription("aom_alarm_rule");
            body.withAlarmNotifications(alarmNotificationsbody);
            request.withBody(body);
            try {
                AddOrUpdateMetricOrEventAlarmRuleResponse response = client.addOrUpdateMetricOrEventAlarmRule(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());
            }
        }
    }
    
  • Add an event alarm rule.

     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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    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;
    import java.util.Map;
    import java.util.HashMap;
    
    public class AddOrUpdateMetricOrEventAlarmRuleSolution {
    
        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");
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    .withAk(ak)
                    .withSk(sk);
    
            AomClient client = AomClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(AomRegion.valueOf("<YOUR REGION>"))
                    .build();
            AddOrUpdateMetricOrEventAlarmRuleRequest request = new AddOrUpdateMetricOrEventAlarmRuleRequest();
            AddOrUpdateAlarmRuleV4RequestBody body = new AddOrUpdateAlarmRuleV4RequestBody();
            Map<String, Integer> listTriggerConditionsThresholds = new HashMap<>();
            listTriggerConditionsThresholds.put("Critical", 1);
            Map<String, Integer> listTriggerConditionsThresholds1 = new HashMap<>();
            listTriggerConditionsThresholds1.put("Critical", 1);
            List<EventTriggerCondition> listEventAlarmSpecTriggerConditions = new ArrayList<>();
            listEventAlarmSpecTriggerConditions.add(
                new EventTriggerCondition()
                    .withEventName("ScaleUpTimedOut")
                    .withTriggerType(EventTriggerCondition.TriggerTypeEnum.fromValue("accumulative"))
                    .withAggregationWindow(300L)
                    .withOperator(">")
                    .withThresholds(listTriggerConditionsThresholds1)
                    .withFrequency("-1")
            );
            listEventAlarmSpecTriggerConditions.add(
                new EventTriggerCondition()
                    .withEventName("VolumeResizeFailed")
                    .withTriggerType(EventTriggerCondition.TriggerTypeEnum.fromValue("immediately"))
                    .withThresholds(listTriggerConditionsThresholds)
            );
            Map<String, String> listMonitorObjectsMonitorObjects = new HashMap<>();
            listMonitorObjectsMonitorObjects.put("event_name", "ScaleUpTimedOut; VolumeResizeFailed");
            listMonitorObjectsMonitorObjects.put("event_type", "event");
            List<Map<String, String>> listEventAlarmSpecMonitorObjects = new ArrayList<>();
            listEventAlarmSpecMonitorObjects.add(listMonitorObjectsMonitorObjects);
            EventAlarmSpec eventAlarmSpecbody = new EventAlarmSpec();
            eventAlarmSpecbody.withAlarmSource(EventAlarmSpec.AlarmSourceEnum.fromValue("systemEvent"))
                .withEventSource("CCE")
                .withMonitorObjects(listEventAlarmSpecMonitorObjects)
                .withTriggerConditions(listEventAlarmSpecTriggerConditions);
            AlarmNotification alarmNotificationsbody = new AlarmNotification();
            alarmNotificationsbody.withNotificationType(AlarmNotification.NotificationTypeEnum.fromValue("direct"))
                .withRouteGroupEnable(false)
                .withRouteGroupRule("")
                .withNotificationEnable(true)
                .withBindNotificationRuleId("aom_event_notification_rule")
                .withNotifyResolved(false)
                .withNotifyTriggered(false)
                .withNotifyFrequency(-1);
            body.withEventAlarmSpec(eventAlarmSpecbody);
            body.withAlarmRuleType(AddOrUpdateAlarmRuleV4RequestBody.AlarmRuleTypeEnum.fromValue("event"));
            body.withAlarmRuleName("aom_event_alarm_rule");
            body.withAlarmRuleEnable(true);
            body.withAlarmRuleDescription("aom_alarm_event_rule");
            body.withAlarmNotifications(alarmNotificationsbody);
            request.withBody(body);
            try {
                AddOrUpdateMetricOrEventAlarmRuleResponse response = client.addOrUpdateMetricOrEventAlarmRule(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());
            }
        }
    }
    
  • Modify an event alarm rule.

     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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    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;
    import java.util.Map;
    import java.util.HashMap;
    
    public class AddOrUpdateMetricOrEventAlarmRuleSolution {
    
        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");
            String projectId = "{project_id}";
    
            ICredential auth = new BasicCredentials()
                    .withProjectId(projectId)
                    .withAk(ak)
                    .withSk(sk);
    
            AomClient client = AomClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(AomRegion.valueOf("<YOUR REGION>"))
                    .build();
            AddOrUpdateMetricOrEventAlarmRuleRequest request = new AddOrUpdateMetricOrEventAlarmRuleRequest();
            AddOrUpdateAlarmRuleV4RequestBody body = new AddOrUpdateAlarmRuleV4RequestBody();
            Map<String, Integer> listTriggerConditionsThresholds = new HashMap<>();
            listTriggerConditionsThresholds.put("Critical", 2);
            Map<String, Integer> listTriggerConditionsThresholds1 = new HashMap<>();
            listTriggerConditionsThresholds1.put("Critical", 1);
            List<EventTriggerCondition> listEventAlarmSpecTriggerConditions = new ArrayList<>();
            listEventAlarmSpecTriggerConditions.add(
                new EventTriggerCondition()
                    .withEventName("ScaleUpTimedOut")
                    .withTriggerType(EventTriggerCondition.TriggerTypeEnum.fromValue("accumulative"))
                    .withAggregationWindow(300L)
                    .withOperator(">")
                    .withThresholds(listTriggerConditionsThresholds1)
                    .withFrequency("-1")
            );
            listEventAlarmSpecTriggerConditions.add(
                new EventTriggerCondition()
                    .withEventName("VolumeResizeFailed")
                    .withTriggerType(EventTriggerCondition.TriggerTypeEnum.fromValue("immediately"))
                    .withThresholds(listTriggerConditionsThresholds)
            );
            Map<String, String> listMonitorObjectsMonitorObjects = new HashMap<>();
            listMonitorObjectsMonitorObjects.put("event_name", "ScaleUpTimedOut; VolumeResizeFailed");
            listMonitorObjectsMonitorObjects.put("event_type", "event");
            List<Map<String, String>> listEventAlarmSpecMonitorObjects = new ArrayList<>();
            listEventAlarmSpecMonitorObjects.add(listMonitorObjectsMonitorObjects);
            EventAlarmSpec eventAlarmSpecbody = new EventAlarmSpec();
            eventAlarmSpecbody.withAlarmSource(EventAlarmSpec.AlarmSourceEnum.fromValue("systemEvent"))
                .withEventSource("CCE")
                .withMonitorObjects(listEventAlarmSpecMonitorObjects)
                .withTriggerConditions(listEventAlarmSpecTriggerConditions);
            AlarmNotification alarmNotificationsbody = new AlarmNotification();
            alarmNotificationsbody.withNotificationType(AlarmNotification.NotificationTypeEnum.fromValue("direct"))
                .withRouteGroupEnable(false)
                .withRouteGroupRule("")
                .withNotificationEnable(true)
                .withBindNotificationRuleId("aom_event_notification_rule")
                .withNotifyResolved(false)
                .withNotifyTriggered(false)
                .withNotifyFrequency(-1);
            body.withEventAlarmSpec(eventAlarmSpecbody);
            body.withAlarmRuleType(AddOrUpdateAlarmRuleV4RequestBody.AlarmRuleTypeEnum.fromValue("event"));
            body.withAlarmRuleName("aom_event_alarm_rule");
            body.withAlarmRuleEnable(true);
            body.withAlarmRuleDescription("aom_alarm_event_rule");
            body.withAlarmNotifications(alarmNotificationsbody);
            request.withBody(body);
            try {
                AddOrUpdateMetricOrEventAlarmRuleResponse response = client.addOrUpdateMetricOrEventAlarmRule(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

  • Add a metric alarm rule.

      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
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    # coding: utf-8
    
    import os
    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 = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = AomClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(AomRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = AddOrUpdateMetricOrEventAlarmRuleRequest()
            cmdbTriggerConditions = CmdbInfo(
                app_id=""
            )
            listThresholdsTriggerConditions = {
                "Info": "100"
            }
            listTriggerConditionsMetricAlarmSpec = [
                TriggerCondition(
                    metric_query_mode="PROM",
                    metric_namespace="",
                    metric_name="aom_metrics_total",
                    metric_unit="",
                    promql="label_replace(avg_over_time(aom_metrics_total{instance="1117919565"}[59999ms]),"__name__","aom_metrics_total","","")",
                    trigger_times="4",
                    trigger_interval="15m",
                    trigger_type="FIXED_RATE",
                    aggregation_type="average",
                    operator=">",
                    thresholds=listThresholdsTriggerConditions,
                    aggregation_window="5m",
                    cmdb=cmdbTriggerConditions,
                    query_match="[{addMode=first, conditionCompare==, conditionList=[{name=1117919565}], conditionValue=[{name=1117919565}], dimension=instance, id=first, regExpress=null}]",
                    query_param="{}",
                    aom_monitor_level="",
                    aggregate_type="by",
                    metric_statistic_method="single",
                    expression="",
                    mix_promql=""
                )
            ]
            recoveryConditionsMetricAlarmSpec = RecoveryCondition(
                recovery_timeframe=2
            )
            listCustomAnnotationsAlarmTags = [
                "333=rrr"
            ]
            listCustomTagsAlarmTags = [
                "333=rrr"
            ]
            listAlarmTagsMetricAlarmSpec = [
                AlarmTags(
                    custom_tags=listCustomTagsAlarmTags,
                    custom_annotations=listCustomAnnotationsAlarmTags
                )
            ]
            listNoDataConditionsMetricAlarmSpec = [
                NoDataCondition(
                    no_data_timeframe=3,
                    no_data_alert_state="no_data",
                    notify_no_data=True
                )
            ]
            metricAlarmSpecbody = MetricAlarmSpec(
                monitor_type="all_metric",
                no_data_conditions=listNoDataConditionsMetricAlarmSpec,
                alarm_tags=listAlarmTagsMetricAlarmSpec,
                recovery_conditions=recoveryConditionsMetricAlarmSpec,
                trigger_conditions=listTriggerConditionsMetricAlarmSpec,
                alarm_rule_template_bind_enable=False,
                alarm_rule_template_id=""
            )
            alarmNotificationsbody = AlarmNotification(
                notification_type="alarm_policy",
                route_group_enable=True,
                route_group_rule="aom_route_group_rule",
                notification_enable=False,
                bind_notification_rule_id="",
                notify_resolved=True,
                notify_triggered=True,
                notify_frequency=-1
            )
            request.body = AddOrUpdateAlarmRuleV4RequestBody(
                prom_instance_id="0",
                metric_alarm_spec=metricAlarmSpecbody,
                alarm_rule_type="metric",
                alarm_rule_name="aom_alarm_rule",
                alarm_rule_enable=True,
                alarm_rule_description="aom_alarm_rule",
                alarm_notifications=alarmNotificationsbody
            )
            response = client.add_or_update_metric_or_event_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)
    
  • Modify a metric alarm rule.

      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
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    # coding: utf-8
    
    import os
    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 = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = AomClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(AomRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = AddOrUpdateMetricOrEventAlarmRuleRequest()
            cmdbTriggerConditions = CmdbInfo(
                app_id=""
            )
            listThresholdsTriggerConditions = {
                "Info": "100"
            }
            listTriggerConditionsMetricAlarmSpec = [
                TriggerCondition(
                    metric_query_mode="PROM",
                    metric_namespace="",
                    metric_name="aom_metrics_total",
                    metric_unit="",
                    promql="label_replace(avg_over_time(aom_metrics_total{instance="1117919565"}[59999ms]),"__name__","aom_metrics_total","","")",
                    trigger_times="4",
                    trigger_interval="15m",
                    trigger_type="FIXED_RATE",
                    aggregation_type="average",
                    operator=">",
                    thresholds=listThresholdsTriggerConditions,
                    aggregation_window="5m",
                    cmdb=cmdbTriggerConditions,
                    query_match="[{addMode=first, conditionCompare==, conditionList=[{name=1117919565}], conditionValue=[{name=1117919565}], dimension=instance, id=first, regExpress=null}]",
                    query_param="{}",
                    aom_monitor_level="",
                    aggregate_type="by",
                    metric_statistic_method="single",
                    expression="",
                    mix_promql=""
                )
            ]
            recoveryConditionsMetricAlarmSpec = RecoveryCondition(
                recovery_timeframe=2
            )
            listCustomAnnotationsAlarmTags = [
                "333=rrr"
            ]
            listCustomTagsAlarmTags = [
                "333=rrr"
            ]
            listAlarmTagsMetricAlarmSpec = [
                AlarmTags(
                    custom_tags=listCustomTagsAlarmTags,
                    custom_annotations=listCustomAnnotationsAlarmTags
                )
            ]
            listNoDataConditionsMetricAlarmSpec = [
                NoDataCondition(
                    no_data_timeframe=3,
                    no_data_alert_state="no_data",
                    notify_no_data=True
                )
            ]
            metricAlarmSpecbody = MetricAlarmSpec(
                monitor_type="all_metric",
                no_data_conditions=listNoDataConditionsMetricAlarmSpec,
                alarm_tags=listAlarmTagsMetricAlarmSpec,
                recovery_conditions=recoveryConditionsMetricAlarmSpec,
                trigger_conditions=listTriggerConditionsMetricAlarmSpec,
                alarm_rule_template_bind_enable=False,
                alarm_rule_template_id=""
            )
            alarmNotificationsbody = AlarmNotification(
                notification_type="alarm_policy",
                route_group_enable=True,
                route_group_rule="aom_route_group_rule",
                notification_enable=False,
                bind_notification_rule_id="",
                notify_resolved=True,
                notify_triggered=True,
                notify_frequency=-1
            )
            request.body = AddOrUpdateAlarmRuleV4RequestBody(
                prom_instance_id="0",
                metric_alarm_spec=metricAlarmSpecbody,
                alarm_rule_type="metric",
                alarm_rule_name="aom_alarm_rule",
                alarm_rule_enable=True,
                alarm_rule_description="aom_alarm_rule",
                alarm_notifications=alarmNotificationsbody
            )
            response = client.add_or_update_metric_or_event_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)
    
  • Add an event alarm rule.

     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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    # coding: utf-8
    
    import os
    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 = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = AomClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(AomRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = AddOrUpdateMetricOrEventAlarmRuleRequest()
            listThresholdsTriggerConditions = {
                "Critical": 1
            }
            listThresholdsTriggerConditions1 = {
                "Critical": 1
            }
            listTriggerConditionsEventAlarmSpec = [
                EventTriggerCondition(
                    event_name="ScaleUpTimedOut",
                    trigger_type="accumulative",
                    aggregation_window=300,
                    operator=">",
                    thresholds=listThresholdsTriggerConditions1,
                    frequency="-1"
                ),
                EventTriggerCondition(
                    event_name="VolumeResizeFailed",
                    trigger_type="immediately",
                    thresholds=listThresholdsTriggerConditions
                )
            ]
            listMonitorObjectsMonitorObjects = {
                "event_name": "ScaleUpTimedOut; VolumeResizeFailed",
                "event_type": "event"
            }
            listMonitorObjectsEventAlarmSpec = [
                listMonitorObjectsMonitorObjects
            ]
            eventAlarmSpecbody = EventAlarmSpec(
                alarm_source="systemEvent",
                event_source="CCE",
                monitor_objects=listMonitorObjectsEventAlarmSpec,
                trigger_conditions=listTriggerConditionsEventAlarmSpec
            )
            alarmNotificationsbody = AlarmNotification(
                notification_type="direct",
                route_group_enable=False,
                route_group_rule="",
                notification_enable=True,
                bind_notification_rule_id="aom_event_notification_rule",
                notify_resolved=False,
                notify_triggered=False,
                notify_frequency=-1
            )
            request.body = AddOrUpdateAlarmRuleV4RequestBody(
                event_alarm_spec=eventAlarmSpecbody,
                alarm_rule_type="event",
                alarm_rule_name="aom_event_alarm_rule",
                alarm_rule_enable=True,
                alarm_rule_description="aom_alarm_event_rule",
                alarm_notifications=alarmNotificationsbody
            )
            response = client.add_or_update_metric_or_event_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)
    
  • Modify an event alarm rule.

     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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    # coding: utf-8
    
    import os
    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 = os.environ["CLOUD_SDK_AK"]
        sk = os.environ["CLOUD_SDK_SK"]
        projectId = "{project_id}"
    
        credentials = BasicCredentials(ak, sk, projectId)
    
        client = AomClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(AomRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = AddOrUpdateMetricOrEventAlarmRuleRequest()
            listThresholdsTriggerConditions = {
                "Critical": 2
            }
            listThresholdsTriggerConditions1 = {
                "Critical": 1
            }
            listTriggerConditionsEventAlarmSpec = [
                EventTriggerCondition(
                    event_name="ScaleUpTimedOut",
                    trigger_type="accumulative",
                    aggregation_window=300,
                    operator=">",
                    thresholds=listThresholdsTriggerConditions1,
                    frequency="-1"
                ),
                EventTriggerCondition(
                    event_name="VolumeResizeFailed",
                    trigger_type="immediately",
                    thresholds=listThresholdsTriggerConditions
                )
            ]
            listMonitorObjectsMonitorObjects = {
                "event_name": "ScaleUpTimedOut; VolumeResizeFailed",
                "event_type": "event"
            }
            listMonitorObjectsEventAlarmSpec = [
                listMonitorObjectsMonitorObjects
            ]
            eventAlarmSpecbody = EventAlarmSpec(
                alarm_source="systemEvent",
                event_source="CCE",
                monitor_objects=listMonitorObjectsEventAlarmSpec,
                trigger_conditions=listTriggerConditionsEventAlarmSpec
            )
            alarmNotificationsbody = AlarmNotification(
                notification_type="direct",
                route_group_enable=False,
                route_group_rule="",
                notification_enable=True,
                bind_notification_rule_id="aom_event_notification_rule",
                notify_resolved=False,
                notify_triggered=False,
                notify_frequency=-1
            )
            request.body = AddOrUpdateAlarmRuleV4RequestBody(
                event_alarm_spec=eventAlarmSpecbody,
                alarm_rule_type="event",
                alarm_rule_name="aom_event_alarm_rule",
                alarm_rule_enable=True,
                alarm_rule_description="aom_alarm_event_rule",
                alarm_notifications=alarmNotificationsbody
            )
            response = client.add_or_update_metric_or_event_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

  • Add a metric alarm rule.

      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
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    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")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := aom.NewAomClient(
            aom.AomClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.AddOrUpdateMetricOrEventAlarmRuleRequest{}
    	appIdCmdb:= ""
    	cmdbTriggerConditions := &model.CmdbInfo{
    		AppId: &appIdCmdb,
    	}
    	var listThresholdsTriggerConditions = map[string]string{
            "Info": "100",
        }
    	triggerTimesTriggerConditions:= "4"
    	triggerIntervalTriggerConditions:= "15m"
    	triggerTypeTriggerConditions:= model.GetTriggerConditionTriggerTypeEnum().FIXED_RATE
    	aggregationTypeTriggerConditions:= "average"
    	operatorTriggerConditions:= ">"
    	aggregationWindowTriggerConditions:= "5m"
    	queryMatchTriggerConditions:= "[{addMode=first, conditionCompare==, conditionList=[{name=1117919565}], conditionValue=[{name=1117919565}], dimension=instance, id=first, regExpress=null}]"
    	aomMonitorLevelTriggerConditions:= ""
    	aggregateTypeTriggerConditions:= model.GetTriggerConditionAggregateTypeEnum().BY
    	metricStatisticMethodTriggerConditions:= model.GetTriggerConditionMetricStatisticMethodEnum().SINGLE
    	expressionTriggerConditions:= ""
    	mixPromqlTriggerConditions:= ""
    	var listTriggerConditionsMetricAlarmSpec = []model.TriggerCondition{
            {
                MetricQueryMode: model.GetTriggerConditionMetricQueryModeEnum().PROM,
                MetricNamespace: "",
                MetricName: "aom_metrics_total",
                MetricUnit: "",
                Promql: "label_replace(avg_over_time(aom_metrics_total{instance="1117919565"}[59999ms]),"__name__","aom_metrics_total","","")",
                TriggerTimes: &triggerTimesTriggerConditions,
                TriggerInterval: &triggerIntervalTriggerConditions,
                TriggerType: &triggerTypeTriggerConditions,
                AggregationType: &aggregationTypeTriggerConditions,
                Operator: &operatorTriggerConditions,
                Thresholds: listThresholdsTriggerConditions,
                AggregationWindow: &aggregationWindowTriggerConditions,
                Cmdb: cmdbTriggerConditions,
                QueryMatch: &queryMatchTriggerConditions,
                QueryParam: "{}",
                AomMonitorLevel: &aomMonitorLevelTriggerConditions,
                AggregateType: &aggregateTypeTriggerConditions,
                MetricStatisticMethod: &metricStatisticMethodTriggerConditions,
                Expression: &expressionTriggerConditions,
                MixPromql: &mixPromqlTriggerConditions,
            },
        }
    	recoveryTimeframeRecoveryConditions:= int32(2)
    	recoveryConditionsMetricAlarmSpec := &model.RecoveryCondition{
    		RecoveryTimeframe: &recoveryTimeframeRecoveryConditions,
    	}
    	var listCustomAnnotationsAlarmTags = []string{
            "333=rrr",
        }
    	var listCustomTagsAlarmTags = []string{
            "333=rrr",
        }
    	var listAlarmTagsMetricAlarmSpec = []model.AlarmTags{
            {
                CustomTags: &listCustomTagsAlarmTags,
                CustomAnnotations: &listCustomAnnotationsAlarmTags,
            },
        }
    	noDataTimeframeNoDataConditions:= int32(3)
    	noDataAlertStateNoDataConditions:= model.GetNoDataConditionNoDataAlertStateEnum().NO_DATA
    	notifyNoDataNoDataConditions:= true
    	var listNoDataConditionsMetricAlarmSpec = []model.NoDataCondition{
            {
                NoDataTimeframe: &noDataTimeframeNoDataConditions,
                NoDataAlertState: &noDataAlertStateNoDataConditions,
                NotifyNoData: &notifyNoDataNoDataConditions,
            },
        }
    	alarmRuleTemplateBindEnableMetricAlarmSpec:= false
    	alarmRuleTemplateIdMetricAlarmSpec:= ""
    	metricAlarmSpecbody := &model.MetricAlarmSpec{
    		MonitorType: model.GetMetricAlarmSpecMonitorTypeEnum().ALL_METRIC,
    		NoDataConditions: &listNoDataConditionsMetricAlarmSpec,
    		AlarmTags: listAlarmTagsMetricAlarmSpec,
    		RecoveryConditions: recoveryConditionsMetricAlarmSpec,
    		TriggerConditions: listTriggerConditionsMetricAlarmSpec,
    		AlarmRuleTemplateBindEnable: &alarmRuleTemplateBindEnableMetricAlarmSpec,
    		AlarmRuleTemplateId: &alarmRuleTemplateIdMetricAlarmSpec,
    	}
    	notificationEnableAlarmNotifications:= false
    	bindNotificationRuleIdAlarmNotifications:= ""
    	notifyResolvedAlarmNotifications:= true
    	notifyTriggeredAlarmNotifications:= true
    	notifyFrequencyAlarmNotifications:= int32(-1)
    	alarmNotificationsbody := &model.AlarmNotification{
    		NotificationType: model.GetAlarmNotificationNotificationTypeEnum().ALARM_POLICY,
    		RouteGroupEnable: true,
    		RouteGroupRule: "aom_route_group_rule",
    		NotificationEnable: &notificationEnableAlarmNotifications,
    		BindNotificationRuleId: &bindNotificationRuleIdAlarmNotifications,
    		NotifyResolved: &notifyResolvedAlarmNotifications,
    		NotifyTriggered: &notifyTriggeredAlarmNotifications,
    		NotifyFrequency: &notifyFrequencyAlarmNotifications,
    	}
    	promInstanceIdAddOrUpdateAlarmRuleV4RequestBody:= "0"
    	alarmRuleEnableAddOrUpdateAlarmRuleV4RequestBody:= true
    	alarmRuleDescriptionAddOrUpdateAlarmRuleV4RequestBody:= "aom_alarm_rule"
    	request.Body = &model.AddOrUpdateAlarmRuleV4RequestBody{
    		PromInstanceId: &promInstanceIdAddOrUpdateAlarmRuleV4RequestBody,
    		MetricAlarmSpec: metricAlarmSpecbody,
    		AlarmRuleType: model.GetAddOrUpdateAlarmRuleV4RequestBodyAlarmRuleTypeEnum().METRIC,
    		AlarmRuleName: "aom_alarm_rule",
    		AlarmRuleEnable: &alarmRuleEnableAddOrUpdateAlarmRuleV4RequestBody,
    		AlarmRuleDescription: &alarmRuleDescriptionAddOrUpdateAlarmRuleV4RequestBody,
    		AlarmNotifications: alarmNotificationsbody,
    	}
    	response, err := client.AddOrUpdateMetricOrEventAlarmRule(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Modify a metric alarm rule.

      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
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    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")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := aom.NewAomClient(
            aom.AomClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.AddOrUpdateMetricOrEventAlarmRuleRequest{}
    	appIdCmdb:= ""
    	cmdbTriggerConditions := &model.CmdbInfo{
    		AppId: &appIdCmdb,
    	}
    	var listThresholdsTriggerConditions = map[string]string{
            "Info": "100",
        }
    	triggerTimesTriggerConditions:= "4"
    	triggerIntervalTriggerConditions:= "15m"
    	triggerTypeTriggerConditions:= model.GetTriggerConditionTriggerTypeEnum().FIXED_RATE
    	aggregationTypeTriggerConditions:= "average"
    	operatorTriggerConditions:= ">"
    	aggregationWindowTriggerConditions:= "5m"
    	queryMatchTriggerConditions:= "[{addMode=first, conditionCompare==, conditionList=[{name=1117919565}], conditionValue=[{name=1117919565}], dimension=instance, id=first, regExpress=null}]"
    	aomMonitorLevelTriggerConditions:= ""
    	aggregateTypeTriggerConditions:= model.GetTriggerConditionAggregateTypeEnum().BY
    	metricStatisticMethodTriggerConditions:= model.GetTriggerConditionMetricStatisticMethodEnum().SINGLE
    	expressionTriggerConditions:= ""
    	mixPromqlTriggerConditions:= ""
    	var listTriggerConditionsMetricAlarmSpec = []model.TriggerCondition{
            {
                MetricQueryMode: model.GetTriggerConditionMetricQueryModeEnum().PROM,
                MetricNamespace: "",
                MetricName: "aom_metrics_total",
                MetricUnit: "",
                Promql: "label_replace(avg_over_time(aom_metrics_total{instance="1117919565"}[59999ms]),"__name__","aom_metrics_total","","")",
                TriggerTimes: &triggerTimesTriggerConditions,
                TriggerInterval: &triggerIntervalTriggerConditions,
                TriggerType: &triggerTypeTriggerConditions,
                AggregationType: &aggregationTypeTriggerConditions,
                Operator: &operatorTriggerConditions,
                Thresholds: listThresholdsTriggerConditions,
                AggregationWindow: &aggregationWindowTriggerConditions,
                Cmdb: cmdbTriggerConditions,
                QueryMatch: &queryMatchTriggerConditions,
                QueryParam: "{}",
                AomMonitorLevel: &aomMonitorLevelTriggerConditions,
                AggregateType: &aggregateTypeTriggerConditions,
                MetricStatisticMethod: &metricStatisticMethodTriggerConditions,
                Expression: &expressionTriggerConditions,
                MixPromql: &mixPromqlTriggerConditions,
            },
        }
    	recoveryTimeframeRecoveryConditions:= int32(2)
    	recoveryConditionsMetricAlarmSpec := &model.RecoveryCondition{
    		RecoveryTimeframe: &recoveryTimeframeRecoveryConditions,
    	}
    	var listCustomAnnotationsAlarmTags = []string{
            "333=rrr",
        }
    	var listCustomTagsAlarmTags = []string{
            "333=rrr",
        }
    	var listAlarmTagsMetricAlarmSpec = []model.AlarmTags{
            {
                CustomTags: &listCustomTagsAlarmTags,
                CustomAnnotations: &listCustomAnnotationsAlarmTags,
            },
        }
    	noDataTimeframeNoDataConditions:= int32(3)
    	noDataAlertStateNoDataConditions:= model.GetNoDataConditionNoDataAlertStateEnum().NO_DATA
    	notifyNoDataNoDataConditions:= true
    	var listNoDataConditionsMetricAlarmSpec = []model.NoDataCondition{
            {
                NoDataTimeframe: &noDataTimeframeNoDataConditions,
                NoDataAlertState: &noDataAlertStateNoDataConditions,
                NotifyNoData: &notifyNoDataNoDataConditions,
            },
        }
    	alarmRuleTemplateBindEnableMetricAlarmSpec:= false
    	alarmRuleTemplateIdMetricAlarmSpec:= ""
    	metricAlarmSpecbody := &model.MetricAlarmSpec{
    		MonitorType: model.GetMetricAlarmSpecMonitorTypeEnum().ALL_METRIC,
    		NoDataConditions: &listNoDataConditionsMetricAlarmSpec,
    		AlarmTags: listAlarmTagsMetricAlarmSpec,
    		RecoveryConditions: recoveryConditionsMetricAlarmSpec,
    		TriggerConditions: listTriggerConditionsMetricAlarmSpec,
    		AlarmRuleTemplateBindEnable: &alarmRuleTemplateBindEnableMetricAlarmSpec,
    		AlarmRuleTemplateId: &alarmRuleTemplateIdMetricAlarmSpec,
    	}
    	notificationEnableAlarmNotifications:= false
    	bindNotificationRuleIdAlarmNotifications:= ""
    	notifyResolvedAlarmNotifications:= true
    	notifyTriggeredAlarmNotifications:= true
    	notifyFrequencyAlarmNotifications:= int32(-1)
    	alarmNotificationsbody := &model.AlarmNotification{
    		NotificationType: model.GetAlarmNotificationNotificationTypeEnum().ALARM_POLICY,
    		RouteGroupEnable: true,
    		RouteGroupRule: "aom_route_group_rule",
    		NotificationEnable: &notificationEnableAlarmNotifications,
    		BindNotificationRuleId: &bindNotificationRuleIdAlarmNotifications,
    		NotifyResolved: &notifyResolvedAlarmNotifications,
    		NotifyTriggered: &notifyTriggeredAlarmNotifications,
    		NotifyFrequency: &notifyFrequencyAlarmNotifications,
    	}
    	promInstanceIdAddOrUpdateAlarmRuleV4RequestBody:= "0"
    	alarmRuleEnableAddOrUpdateAlarmRuleV4RequestBody:= true
    	alarmRuleDescriptionAddOrUpdateAlarmRuleV4RequestBody:= "aom_alarm_rule"
    	request.Body = &model.AddOrUpdateAlarmRuleV4RequestBody{
    		PromInstanceId: &promInstanceIdAddOrUpdateAlarmRuleV4RequestBody,
    		MetricAlarmSpec: metricAlarmSpecbody,
    		AlarmRuleType: model.GetAddOrUpdateAlarmRuleV4RequestBodyAlarmRuleTypeEnum().METRIC,
    		AlarmRuleName: "aom_alarm_rule",
    		AlarmRuleEnable: &alarmRuleEnableAddOrUpdateAlarmRuleV4RequestBody,
    		AlarmRuleDescription: &alarmRuleDescriptionAddOrUpdateAlarmRuleV4RequestBody,
    		AlarmNotifications: alarmNotificationsbody,
    	}
    	response, err := client.AddOrUpdateMetricOrEventAlarmRule(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Add an event alarm rule.

      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
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    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")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := aom.NewAomClient(
            aom.AomClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.AddOrUpdateMetricOrEventAlarmRuleRequest{}
    	var listThresholdsTriggerConditions = Map{
            "Critical": int32(1),
        }
    	var listThresholdsTriggerConditions1 = Map{
            "Critical": int32(1),
        }
    	eventNameTriggerConditions:= "ScaleUpTimedOut"
    	triggerTypeTriggerConditions:= model.GetEventTriggerConditionTriggerTypeEnum().ACCUMULATIVE
    	aggregationWindowTriggerConditions:= int64(300)
    	operatorTriggerConditions:= ">"
    	frequencyTriggerConditions:= "-1"
    	eventNameTriggerConditions1:= "VolumeResizeFailed"
    	triggerTypeTriggerConditions1:= model.GetEventTriggerConditionTriggerTypeEnum().IMMEDIATELY
    	var listTriggerConditionsEventAlarmSpec = []model.EventTriggerCondition{
            {
                EventName: &eventNameTriggerConditions,
                TriggerType: &triggerTypeTriggerConditions,
                AggregationWindow: &aggregationWindowTriggerConditions,
                Operator: &operatorTriggerConditions,
                Thresholds: listThresholdsTriggerConditions1,
                Frequency: &frequencyTriggerConditions,
            },
            {
                EventName: &eventNameTriggerConditions1,
                TriggerType: &triggerTypeTriggerConditions1,
                Thresholds: listThresholdsTriggerConditions,
            },
        }
    	var listMonitorObjectsMonitorObjects = Map{
            "event_name": "ScaleUpTimedOut; VolumeResizeFailed",
            "event_type": "event",
        }
    	var listMonitorObjectsEventAlarmSpec = List{
            listMonitorObjectsMonitorObjects,
        }
    	alarmSourceEventAlarmSpec:= model.GetEventAlarmSpecAlarmSourceEnum().SYSTEM_EVENT
    	eventSourceEventAlarmSpec:= "CCE"
    	eventAlarmSpecbody := &model.EventAlarmSpec{
    		AlarmSource: &alarmSourceEventAlarmSpec,
    		EventSource: &eventSourceEventAlarmSpec,
    		MonitorObjects: &listMonitorObjectsEventAlarmSpec,
    		TriggerConditions: &listTriggerConditionsEventAlarmSpec,
    	}
    	notificationEnableAlarmNotifications:= true
    	bindNotificationRuleIdAlarmNotifications:= "aom_event_notification_rule"
    	notifyResolvedAlarmNotifications:= false
    	notifyTriggeredAlarmNotifications:= false
    	notifyFrequencyAlarmNotifications:= int32(-1)
    	alarmNotificationsbody := &model.AlarmNotification{
    		NotificationType: model.GetAlarmNotificationNotificationTypeEnum().DIRECT,
    		RouteGroupEnable: false,
    		RouteGroupRule: "",
    		NotificationEnable: &notificationEnableAlarmNotifications,
    		BindNotificationRuleId: &bindNotificationRuleIdAlarmNotifications,
    		NotifyResolved: &notifyResolvedAlarmNotifications,
    		NotifyTriggered: &notifyTriggeredAlarmNotifications,
    		NotifyFrequency: &notifyFrequencyAlarmNotifications,
    	}
    	alarmRuleEnableAddOrUpdateAlarmRuleV4RequestBody:= true
    	alarmRuleDescriptionAddOrUpdateAlarmRuleV4RequestBody:= "aom_alarm_event_rule"
    	request.Body = &model.AddOrUpdateAlarmRuleV4RequestBody{
    		EventAlarmSpec: eventAlarmSpecbody,
    		AlarmRuleType: model.GetAddOrUpdateAlarmRuleV4RequestBodyAlarmRuleTypeEnum().EVENT,
    		AlarmRuleName: "aom_event_alarm_rule",
    		AlarmRuleEnable: &alarmRuleEnableAddOrUpdateAlarmRuleV4RequestBody,
    		AlarmRuleDescription: &alarmRuleDescriptionAddOrUpdateAlarmRuleV4RequestBody,
    		AlarmNotifications: alarmNotificationsbody,
    	}
    	response, err := client.AddOrUpdateMetricOrEventAlarmRule(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Modify an event alarm rule.

      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
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    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")
        projectId := "{project_id}"
    
        auth := basic.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            WithProjectId(projectId).
            Build()
    
        client := aom.NewAomClient(
            aom.AomClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.AddOrUpdateMetricOrEventAlarmRuleRequest{}
    	var listThresholdsTriggerConditions = map[string]int32{
            "Critical": int32(2),
        }
    	var listThresholdsTriggerConditions1 = map[string]int32{
            "Critical": int32(1),
        }
    	eventNameTriggerConditions:= "ScaleUpTimedOut"
    	triggerTypeTriggerConditions:= model.GetEventTriggerConditionTriggerTypeEnum().ACCUMULATIVE
    	aggregationWindowTriggerConditions:= int64(300)
    	operatorTriggerConditions:= ">"
    	frequencyTriggerConditions:= "-1"
    	eventNameTriggerConditions1:= "VolumeResizeFailed"
    	triggerTypeTriggerConditions1:= model.GetEventTriggerConditionTriggerTypeEnum().IMMEDIATELY
    	var listTriggerConditionsEventAlarmSpec = []model.EventTriggerCondition{
            {
                EventName: &eventNameTriggerConditions,
                TriggerType: &triggerTypeTriggerConditions,
                AggregationWindow: &aggregationWindowTriggerConditions,
                Operator: &operatorTriggerConditions,
                Thresholds: listThresholdsTriggerConditions1,
                Frequency: &frequencyTriggerConditions,
            },
            {
                EventName: &eventNameTriggerConditions1,
                TriggerType: &triggerTypeTriggerConditions1,
                Thresholds: listThresholdsTriggerConditions,
            },
        }
    	var listMonitorObjectsMonitorObjects = map[string]string{
            "event_name": "ScaleUpTimedOut; VolumeResizeFailed",
            "event_type": "event",
        }
    	var listMonitorObjectsEventAlarmSpec = []map[string]string{
            listMonitorObjectsMonitorObjects,
        }
    	alarmSourceEventAlarmSpec:= model.GetEventAlarmSpecAlarmSourceEnum().SYSTEM_EVENT
    	eventSourceEventAlarmSpec:= "CCE"
    	eventAlarmSpecbody := &model.EventAlarmSpec{
    		AlarmSource: &alarmSourceEventAlarmSpec,
    		EventSource: &eventSourceEventAlarmSpec,
    		MonitorObjects: &listMonitorObjectsEventAlarmSpec,
    		TriggerConditions: &listTriggerConditionsEventAlarmSpec,
    	}
    	notificationEnableAlarmNotifications:= true
    	bindNotificationRuleIdAlarmNotifications:= "aom_event_notification_rule"
    	notifyResolvedAlarmNotifications:= false
    	notifyTriggeredAlarmNotifications:= false
    	notifyFrequencyAlarmNotifications:= int32(-1)
    	alarmNotificationsbody := &model.AlarmNotification{
    		NotificationType: model.GetAlarmNotificationNotificationTypeEnum().DIRECT,
    		RouteGroupEnable: false,
    		RouteGroupRule: "",
    		NotificationEnable: &notificationEnableAlarmNotifications,
    		BindNotificationRuleId: &bindNotificationRuleIdAlarmNotifications,
    		NotifyResolved: &notifyResolvedAlarmNotifications,
    		NotifyTriggered: &notifyTriggeredAlarmNotifications,
    		NotifyFrequency: &notifyFrequencyAlarmNotifications,
    	}
    	alarmRuleEnableAddOrUpdateAlarmRuleV4RequestBody:= true
    	alarmRuleDescriptionAddOrUpdateAlarmRuleV4RequestBody:= "aom_alarm_event_rule"
    	request.Body = &model.AddOrUpdateAlarmRuleV4RequestBody{
    		EventAlarmSpec: eventAlarmSpecbody,
    		AlarmRuleType: model.GetAddOrUpdateAlarmRuleV4RequestBodyAlarmRuleTypeEnum().EVENT,
    		AlarmRuleName: "aom_event_alarm_rule",
    		AlarmRuleEnable: &alarmRuleEnableAddOrUpdateAlarmRuleV4RequestBody,
    		AlarmRuleDescription: &alarmRuleDescriptionAddOrUpdateAlarmRuleV4RequestBody,
    		AlarmNotifications: alarmNotificationsbody,
    	}
    	response, err := client.AddOrUpdateMetricOrEventAlarmRule(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: Invalid request. The client should not repeat this request without modification.

500

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

Error Codes

See Error Codes.