Adding or Modifying Metric or Event Alarm Rules
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
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
project_id |
Yes |
String |
Project ID obtained from IAM. Generally, a project ID contains 32 characters. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
action_id |
Yes |
String |
Alarm rule ID.
|
Request 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.
|
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.
|
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. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
notification_type |
Yes |
String |
Notification type.
|
route_group_enable |
Yes |
Boolean |
Whether to enable a grouping rule.
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.
|
notification_enable |
No |
Boolean |
Whether to enable an alarm action rule.
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.
|
notify_resolved |
No |
Boolean |
Whether to send a notification when an alarm is cleared.
|
notify_triggered |
No |
Boolean |
Whether to send a notification when an alarm is triggered.
|
notify_frequency |
No |
Integer |
Notification frequency.
|
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
alarm_source |
No |
String |
Alarm rule source.
|
event_source |
No |
String |
Alarm source.
|
monitor_objects |
No |
Array of Map<String,String> objects |
List of monitored objects. Key-value pair.
|
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. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
event_name |
No |
String |
Event name. |
trigger_type |
No |
String |
Trigger mode.
|
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.
|
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
monitor_type |
Yes |
String |
Monitoring 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. |
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.
|
notify_no_data |
No |
Boolean |
Whether to send a notification when data is insufficient. |
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. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
recovery_timeframe |
No |
Integer |
Number of consecutive periods for which the trigger condition is not met to clear an alarm. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
metric_query_mode |
Yes |
String |
Metric query mode.
|
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.
|
trigger_type |
No |
String |
Trigger type.
|
promql_for |
No |
String |
Native Prometheus monitoring duration. |
aggregation_type |
No |
String |
Statistical mode.
|
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.
|
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.
|
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.
|
expression |
No |
String |
Expression of a combined operation. |
mix_promql |
No |
String |
PromQL of a combined operation. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
app_id |
No |
String |
Application ID. |
node_ids |
No |
Array of NodeInfo objects |
Node information list. |
Response Parameters
Status code: 200
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Error code. |
error_message |
String |
Error message. |
alarm_rules |
Array of AddOrUpdateAlarmRuleV4ItemResult objects |
Alarm rule list. |
Parameter |
Type |
Description |
---|---|---|
alarm_rule_name |
String |
Alarm rule name. |
result |
String |
Whether an alarm rule is successfully added or modified. |
Status code: 400
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
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: ¬ifyNoDataNoDataConditions, }, } 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: ¬ificationEnableAlarmNotifications, BindNotificationRuleId: &bindNotificationRuleIdAlarmNotifications, NotifyResolved: ¬ifyResolvedAlarmNotifications, NotifyTriggered: ¬ifyTriggeredAlarmNotifications, NotifyFrequency: ¬ifyFrequencyAlarmNotifications, } 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: ¬ifyNoDataNoDataConditions, }, } 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: ¬ificationEnableAlarmNotifications, BindNotificationRuleId: &bindNotificationRuleIdAlarmNotifications, NotifyResolved: ¬ifyResolvedAlarmNotifications, NotifyTriggered: ¬ifyTriggeredAlarmNotifications, NotifyFrequency: ¬ifyFrequencyAlarmNotifications, } 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: ¬ificationEnableAlarmNotifications, BindNotificationRuleId: &bindNotificationRuleIdAlarmNotifications, NotifyResolved: ¬ifyResolvedAlarmNotifications, NotifyTriggered: ¬ifyTriggeredAlarmNotifications, NotifyFrequency: ¬ifyFrequencyAlarmNotifications, } 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: ¬ificationEnableAlarmNotifications, BindNotificationRuleId: &bindNotificationRuleIdAlarmNotifications, NotifyResolved: ¬ifyResolvedAlarmNotifications, NotifyTriggered: ¬ifyTriggeredAlarmNotifications, NotifyFrequency: ¬ifyFrequencyAlarmNotifications, } 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.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot