Help Center/ Application Operations Management/ API Reference/ APIs/ Alarm/ Querying Metric or Event Alarm Rules
Updated on 2024-12-12 GMT+08:00

Querying Metric or Event Alarm Rules

Function

This API is used to query metric or event alarm rules.

Calling Method

For details, see Calling APIs.

URI

GET /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

name

No

String

Alarm rule name.

limit

No

String

Number of records that can be returned.

offset

No

String

Start position for a pagination query, which must be a non-negative integer.

sort_by

No

String

Whether to sort alarms by alarm rule name or alarm creation time.

  • alarm_rule_name.asc
  • alarm_create_time.desc

event_source

No

String

Source of an event alarm rule.

  • RDS
  • EVS
  • CCE
  • LTS
  • AOM

event_severity

No

String

Alarm severity.

  • Critical
  • Major
  • Minor
  • Info

alarm_rule_status

No

String

Alarm rule status.

  • OK: normal
  • alarm: threshold-crossing
  • Effective: in use
  • Invalid: not in use

alarm_rule_type

No

String

Alarm rule type.

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

prom_instance_id

No

String

Prometheus instance ID.

bind_notification_rule_id

No

String

Name of the bound alarm action rule.

related_cce_clusters

No

String

CCE cluster ID.

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.

Response Parameters

Status code: 200

Table 4 Response body parameters

Parameter

Type

Description

alarm_rules

Array of AlarmParamForV4Db objects

Alarm rule list.

metadata

Object

Metadata information.

count

Integer

Number of alarm rules.

Table 5 AlarmParamForV4Db

Parameter

Type

Description

alarm_create_time

Long

Time when an alarm rule was created.

alarm_update_time

Long

Time when an alarm rule was modified.

alarm_rule_name

String

Alarm rule name.

alarm_rule_id

Long

Alarm rule ID.

enterprise_project_id

String

Enterprise project ID.

prom_instance_id

String

Prometheus instance ID.

alarm_rule_description

String

Alarm rule description.

alarm_rule_enable

Boolean

Enabled or not.

alarm_rule_status

String

Alarm status.

  • OK: normal
  • alarm: threshold-crossing
  • Effective: in use
  • Invalid: not in use

alarm_rule_type

String

Rule type.

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

metric_alarm_spec

MetricAlarmSpec object

Structure of a metric alarm rule.

event_alarm_spec

EventAlarmSpec object

Structure of an event alarm rule.

alarm_notifications

AlarmNotification object

Alarm notification module.

user_id

String

User ID.

Table 6 MetricAlarmSpec

Parameter

Type

Description

monitor_type

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

Array of NoDataCondition objects

Action taken for insufficient data.

alarm_tags

Array of AlarmTags objects

Alarm tags.

monitor_objects

Array of Map<String,String> objects

List of monitored objects.

recovery_conditions

RecoveryCondition object

Alarm clearance condition.

trigger_conditions

Array of TriggerCondition objects

Trigger conditions.

alarm_rule_template_bind_enable

Boolean

(Deprecated) Whether to bind an alarm rule template.

alarm_rule_template_id

String

(Deprecated) ID of the alarm rule template.

Table 7 NoDataCondition

Parameter

Type

Description

no_data_timeframe

Integer

Number of periods without data.

no_data_alert_state

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

Boolean

Whether to send a notification when data is insufficient.

Table 8 AlarmTags

Parameter

Type

Description

auto_tags

Array of strings

Automatic tag.

custom_tags

Array of strings

Custom tag.

custom_annotations

Array of strings

Alarm annotation.

Table 9 RecoveryCondition

Parameter

Type

Description

recovery_timeframe

Integer

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

Table 10 TriggerCondition

Parameter

Type

Description

metric_query_mode

String

Metric query mode.

  • AOM: native AOM
  • PROM: AOM Prometheus
  • NATIVE_PROM: native Prometheus

metric_namespace

String

Metric namespace.

metric_name

String

Metric name.

metric_unit

String

Metric unit.

metric_labels

Array of strings

Metric dimension.

promql

String

Prometheus statement.

promql_expr

Array of strings

Prometheus statement template.

trigger_times

String

Number of consecutive periods.

trigger_interval

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

String

Trigger type.

  • FIXED_RATE: fixed interval
  • HOURLY: every hour
  • DAILY: every day
  • WEEKLY: every week
  • CRON: Cron expression

promql_for

String

Native Prometheus monitoring duration.

aggregation_type

String

Statistical mode.

  • average
  • minimum
  • maximum
  • sum
  • sampleCount

operator

String

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

thresholds

Map<String,String>

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

aggregation_window

String

Statistical period.

  • 15s
  • 30s
  • 1m
  • 5m
  • 15m
  • 1h

cmdb

CmdbInfo object

CMDB information.

query_match

String

Query filter criteria.

query_param

String

Query parameters.

aom_monitor_level

String

Monitoring layer.

aggregate_type

String

Aggregation mode.

  • by: not grouped
  • avg
  • max
  • min
  • sum

metric_statistic_method

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

String

Expression of a combined operation.

mix_promql

String

PromQL of a combined operation.

Table 11 CmdbInfo

Parameter

Type

Description

app_id

String

Application ID.

node_ids

Array of NodeInfo objects

Node information list.

Table 12 NodeInfo

Parameter

Type

Description

node_type

String

Node type.

node_id

String

Node ID.

Table 13 EventAlarmSpec

Parameter

Type

Description

alarm_source

String

Alarm rule source.

  • systemEvent
  • customEvent

event_source

String

Alarm source.

  • RDS
  • EVS
  • CCE
  • LTS
  • AOM

monitor_objects

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

Array of EventTriggerCondition objects

Trigger conditions.

alarm_rule_template_bind_enable

Boolean

(Deprecated) Whether to bind an alarm rule template.

alarm_rule_template_id

String

(Deprecated) ID of the alarm rule template.

Table 14 EventTriggerCondition

Parameter

Type

Description

event_name

String

Event name.

trigger_type

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

Long

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

operator

String

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

thresholds

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

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 15 AlarmNotification

Parameter

Type

Description

notification_type

String

Notification type.

  • direct: direct alarm reporting
  • alarm_policy: alarm reporting after noise reduction

route_group_enable

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

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

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

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

Boolean

Whether to send a notification when an alarm is cleared.

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

notify_triggered

Boolean

Whether to send a notification when an alarm is triggered.

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

notify_frequency

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

Status code: 500

Table 16 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

Query metric or event alarm rules.

https://{Endpoint}/v4/{project_id}/alarm-rules?limit=100&offset=0

Example Responses

Status code: 200

OK: The request is successful.

{
  "alarm_rules" : [ {
    "alarm_create_time" : 1713929265429,
    "alarm_notifications" : {
      "bind_notification_rule_id" : "aom_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" : "",
    "alarm_rule_enable" : true,
    "alarm_rule_id" : 0,
    "alarm_rule_name" : "aom_alarm_rule",
    "alarm_rule_status" : "Effective",
    "alarm_rule_type" : "event",
    "alarm_update_time" : 0,
    "enterprise_project_id" : "0",
    "event_alarm_spec" : {
      "alarm_rule_template_bind_enable" : false,
      "alarm_rule_template_id" : "",
      "alarm_source" : "systemEvent",
      "event_source" : "CCE",
      "monitor_objects" : [ {
        "clusterId" : "a4****6b-f**9-1**e-a**d-02****10***a",
        "event_type" : "event"
      } ],
      "trigger_conditions" : [ {
        "aggregation_window" : 300,
        "event_name" : "",
        "frequency" : "1",
        "operator" : ">=",
        "thresholds" : {
          "Critical" : 2
        },
        "trigger_type" : "immediately"
      } ]
    },
    "user_id" : "2a****56****48****73****1b****cf"
  }, {
    "alarm_create_time" : 1711458243395,
    "alarm_notifications" : {
      "bind_notification_rule_id" : "",
      "notification_enable" : false,
      "notification_type" : "direct",
      "notify_frequency" : 0,
      "notify_resolved" : false,
      "notify_triggered" : false,
      "route_group_enable" : false,
      "route_group_rule" : ""
    },
    "alarm_rule_description" : "",
    "alarm_rule_enable" : false,
    "alarm_rule_id" : 1,
    "alarm_rule_name" : "aom_alarm_rule_1",
    "alarm_rule_status" : "Invalid",
    "alarm_rule_type" : "metric",
    "alarm_update_time" : 0,
    "enterprise_project_id" : "0",
    "metric_alarm_spec" : {
      "alarm_rule_template_bind_enable" : false,
      "alarm_rule_template_id" : "",
      "alarm_tags" : [ {
        "auto_tags" : [ ],
        "custom_annotations" : [ ],
        "custom_tags" : [ ]
      } ],
      "monitor_objects" : [ ],
      "monitor_type" : "all_metric",
      "no_data_conditions" : [ {
        "no_data_timeframe" : 0,
        "notify_no_data" : false
      } ],
      "recovery_conditions" : {
        "recovery_timeframe" : 1
      },
      "trigger_conditions" : [ {
        "aggregate_type" : "by",
        "aggregation_type" : "average",
        "aggregation_window" : "30s",
        "aom_monitor_level" : "",
        "cmdb" : {
          "app_id" : "",
          "node_ids" : [ ]
        },
        "expression" : "",
        "metric_labels" : [ ],
        "metric_name" : "container_memory_rss",
        "metric_namespace" : "",
        "metric_query_mode" : "PROM",
        "metric_statistic_method" : "single",
        "metric_unit" : "",
        "mix_promql" : "",
        "operator" : ">",
        "promql" : "label_replace(container_memory_rss{node=\"172.**.**.206\"},\"__name__\",\"container_memory_rss\",\"\",\"\") or label_replace(avg_over_time(container_memory_rss{node=\"172.**.**.206\"}[29999ms]),\"__name__\",\"container_memory_rss\",\"\",\"\")",
        "promql_for" : "1m",
        "query_match" : "[{\"conditionList\":[{\"name\":\"172.**.**.206\"},{\"name\":\"172.**.**.133\"}],\"addMode\":\"first\",\"conditionValue\":[{\"name\":\"172.**.**.206\"}],\"id\":\"first\",\"conditionCompare\":\"=\",\"dimension\":\"node\"}]",
        "query_param" : {
          "apmMetricReg" : "",
          "code" : "a"
        },
        "thresholds" : {
          "Critical" : "1"
        },
        "trigger_interval" : "15s",
        "trigger_times" : 1,
        "trigger_type" : "FIXED_RATE"
      } ]
    },
    "prom_instance_id" : "90e***88-1**4-4**9-9**3-1f*******cd3",
    "user_id" : "2a****56****48****73****1b****cf"
  } ],
  "count" : 29,
  "metadata" : {
    "alarm_rule_template_id" : [ ],
    "bind_notification_rule_id" : [ "aom_notification_rule", "1", "00********qq", "00*****3", "m***m" ],
    "event_source" : [ "CCE", "DCS", "ES", "AOM" ],
    "prom_instance_id" : [ "0", "796***7d-1**8-4**9-a**0-99*******ca0", "6cc***c8-f**f-4**4-9**2-90*******fcf", "90e***88-1**4-4**9-9**3-1f*******cd3" ],
    "resource_kind" : [ "HC:DCS:REDIS_3.0", "CCE", "HC:ES:METRICS", "AOM" ]
  }
}

Status code: 500

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

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

SDK Sample Code

The SDK sample code is as follows.

Java

 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
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.*;


public class ListMetricOrEventAlarmRuleSolution {

    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();
        ListMetricOrEventAlarmRuleRequest request = new ListMetricOrEventAlarmRuleRequest();
        try {
            ListMetricOrEventAlarmRuleResponse response = client.listMetricOrEventAlarmRule(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

 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
# 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 = ListMetricOrEventAlarmRuleRequest()
        response = client.list_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

 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
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.ListMetricOrEventAlarmRuleRequest{}
	response, err := client.ListMetricOrEventAlarmRule(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.

500

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

Error Codes

See Error Codes.