Help Center/ Application Operations Management/ API Reference/ APIs/ Alarm/ Adding or Modifying Metric or Event Alarm Rules

Adding or Modifying Metric or Event Alarm Rules

Updated on 2025-01-07 GMT+08:00

Function

This API is used to add or modify metric or event alarm rules.

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.

Enumeration values:

  • true
  • false

alarm_rule_name

Yes

String

Alarm rule name.

alarm_rule_type

Yes

String

Alarm rule type.

  • metric: metric alarm rule
  • event: event alarm rule

Enumeration values:

  • metric
  • event

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

Enumeration values:

  • direct
  • alarm_policy

route_group_enable

Yes

Boolean

Whether to enable the 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.

Enumeration values:

  • true
  • 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.

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.

Enumeration values:

  • true
  • false

notify_triggered

No

Boolean

Whether to send a notification when an alarm is triggered.

  • true: Send a notification.
  • false: Do not send any notification.

Enumeration values:

  • true
  • false

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

Enumeration values:

  • 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

(Discarded) Whether to bind an alarm rule template.

Default: false

alarm_rule_template_id

No

String

(Discarded) ID of the alarm rule template.

Default: ""

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.

Enumeration values:

  • immediately
  • accumulative

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.

Enumeration values:

  • all_metric
  • promql
  • resource

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

(Discarded) Whether to bind an alarm rule template.

Default: false

alarm_rule_template_id

No

String

(Discarded) ID of the alarm rule template.

Default: ""

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.

Enumeration values:

  • no_data
  • alerting
  • ok
  • pre_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

Enumeration values:

  • AOM
  • PROM
  • NATIVE_PROM

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

Enumeration values:

  • FIXED_RATE
  • HOURLY
  • DAILY
  • WEEKLY
  • CRON

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

Enumeration values:

  • by
  • 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

Enumeration values:

  • single
  • mix

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.

Minimum: 12

Maximum: 12

error_msg

String

Error message.

Minimum: 0

Maximum: 1024

error_type

String

Error type.

Minimum: 0

Maximum: 128

trace_id

String

Request ID.

Minimum: 32

Maximum: 32

Status code: 500

Table 18 Response body parameters

Parameter

Type

Description

error_code

String

Error code.

Minimum: 12

Maximum: 12

error_msg

String

Error message.

Minimum: 0

Maximum: 1024

error_type

String

Error type.

Minimum: 0

Maximum: 128

trace_id

String

Request ID.

Minimum: 32

Maximum: 32

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" : ""
}

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.

Feedback

Feedback

Feedback

0/500

Selected Content

Submit selected content with the feedback