@@ -3,6 +3,8 @@ Provides a alarm policy resource for monitor.
3
3
4
4
Example Usage
5
5
6
+ cvm_device alarm policy
7
+
6
8
```hcl
7
9
resource "tencentcloud_monitor_alarm_policy" "group" {
8
10
policy_name = "hello"
@@ -36,6 +38,99 @@ resource "tencentcloud_monitor_alarm_policy" "group" {
36
38
}
37
39
}
38
40
```
41
+
42
+ k8s_cluster alarm policy
43
+
44
+ ```hcl
45
+ resource "tencentcloud_monitor_alarm_policy" "policy" {
46
+ enable = 1
47
+ monitor_type = "MT_QCE"
48
+ namespace = "k8s_cluster"
49
+ notice_ids = [
50
+ "notice-l9ziyxw6",
51
+ ]
52
+ policy_name = "TkeClusterNew"
53
+ project_id = 1244035
54
+
55
+ conditions {
56
+ is_union_rule = 0
57
+
58
+ rules {
59
+ continue_period = 3
60
+ description = "Allocatable Pods"
61
+ is_power_notice = 0
62
+ metric_name = "K8sClusterAllocatablePodsTotal"
63
+ notice_frequency = 3600
64
+ operator = "gt"
65
+ period = 60
66
+ rule_type = "STATIC"
67
+ unit = "Count"
68
+ value = "10"
69
+
70
+ filter {
71
+ dimensions = jsonencode(
72
+ [
73
+ [
74
+ {
75
+ Key = "region"
76
+ Operator = "eq"
77
+ Value = [
78
+ "ap-guangzhou",
79
+ ]
80
+ },
81
+ {
82
+ Key = "tke_cluster_instance_id"
83
+ Operator = "in"
84
+ Value = [
85
+ "cls-czhtobea",
86
+ ]
87
+ },
88
+ ],
89
+ ]
90
+ )
91
+ type = "DIMENSION"
92
+ }
93
+ }
94
+ rules {
95
+ continue_period = 3
96
+ description = "Total CPU Cores"
97
+ is_power_notice = 0
98
+ metric_name = "K8sClusterCpuCoreTotal"
99
+ notice_frequency = 3600
100
+ operator = "gt"
101
+ period = 60
102
+ rule_type = "STATIC"
103
+ unit = "Core"
104
+ value = "2"
105
+
106
+ filter {
107
+ dimensions = jsonencode(
108
+ [
109
+ [
110
+ {
111
+ Key = "region"
112
+ Operator = "eq"
113
+ Value = [
114
+ "ap-guangzhou",
115
+ ]
116
+ },
117
+ {
118
+ Key = "tke_cluster_instance_id"
119
+ Operator = "in"
120
+ Value = [
121
+ "cls-czhtobea",
122
+ ]
123
+ },
124
+ ],
125
+ ]
126
+ )
127
+ type = "DIMENSION"
128
+ }
129
+ }
130
+ }
131
+ }
132
+ ```
133
+
39
134
Import
40
135
41
136
Alarm policy instance can be imported, e.g.
@@ -98,6 +193,26 @@ func AlarmPolicyRule() map[string]*schema.Schema {
98
193
Computed : true ,
99
194
Description : "Whether the alarm frequency increases exponentially." ,
100
195
},
196
+ "filter" : {
197
+ Type : schema .TypeList ,
198
+ Optional : true ,
199
+ MaxItems : 1 ,
200
+ Description : "Filter condition for one single trigger rule." ,
201
+ Elem : & schema.Resource {
202
+ Schema : map [string ]* schema.Schema {
203
+ "type" : {
204
+ Type : schema .TypeString ,
205
+ Required : true ,
206
+ Description : "Filter condition type. Valid values: DIMENSION (uses dimensions for filtering)." ,
207
+ },
208
+ "dimensions" : {
209
+ Type : schema .TypeString ,
210
+ Required : true ,
211
+ Description : "JSON string generated by serializing the AlarmPolicyDimension two-dimensional array." ,
212
+ },
213
+ },
214
+ },
215
+ },
101
216
"description" : {
102
217
Type : schema .TypeString ,
103
218
Optional : true ,
@@ -315,6 +430,16 @@ func resourceTencentMonitorAlarmPolicyCreate(d *schema.ResourceData, meta interf
315
430
if m ["is_power_notice" ] != nil {
316
431
alarmPolicyRule .IsPowerNotice = helper .IntInt64 (m ["is_power_notice" ].(int ))
317
432
}
433
+ if m ["filter" ] != nil {
434
+ filters := m ["filter" ].([]interface {})
435
+ filter := filters [0 ].(map [string ]interface {})
436
+ alarmPolicyFilter := monitor.AlarmPolicyFilter {
437
+ Type : helper .String (filter ["type" ].(string )),
438
+ Dimensions : helper .String (filter ["dimensions" ].(string )),
439
+ }
440
+ alarmPolicyRule .Filter = & alarmPolicyFilter
441
+ }
442
+
318
443
if m ["description" ] != nil {
319
444
alarmPolicyRule .Description = helper .String (m ["description" ].(string ))
320
445
}
@@ -356,6 +481,15 @@ func resourceTencentMonitorAlarmPolicyCreate(d *schema.ResourceData, meta interf
356
481
if m ["is_power_notice" ] != nil {
357
482
alarmPolicyRule .IsPowerNotice = helper .IntInt64 (m ["is_power_notice" ].(int ))
358
483
}
484
+ if m ["filter" ] != nil {
485
+ filters := m ["filter" ].([]interface {})
486
+ filter := filters [0 ].(map [string ]interface {})
487
+ alarmPolicyFilter := monitor.AlarmPolicyFilter {
488
+ Type : helper .String (filter ["type" ].(string )),
489
+ Dimensions : helper .String (filter ["dimensions" ].(string )),
490
+ }
491
+ alarmPolicyRule .Filter = & alarmPolicyFilter
492
+ }
359
493
if m ["description" ] != nil {
360
494
alarmPolicyRule .Description = helper .String (m ["description" ].(string ))
361
495
}
@@ -461,13 +595,21 @@ func resourceTencentMonitorAlarmPolicyRead(d *schema.ResourceData, meta interfac
461
595
462
596
var rules = make ([]interface {}, 0 , 100 )
463
597
for _ , rule := range policy .Condition .Rules {
598
+ var filter = make ([]interface {}, 0 , 10 )
599
+ alarmPolicyFilter := map [string ]interface {}{
600
+ "type" : rule .Filter .Type ,
601
+ "dimensions" : rule .Filter .Dimensions ,
602
+ }
603
+ filter = append (filter , alarmPolicyFilter )
604
+
464
605
m := map [string ]interface {}{
465
606
"metric_name" : rule .MetricName ,
466
607
"period" : rule .Period ,
467
608
"operator" : rule .Operator ,
468
609
"value" : rule .Value ,
469
610
"continue_period" : rule .ContinuePeriod ,
470
611
"notice_frequency" : rule .NoticeFrequency ,
612
+ "filter" : filter ,
471
613
"description" : rule .Description ,
472
614
"unit" : rule .Unit ,
473
615
"rule_type" : rule .RuleType ,
@@ -483,6 +625,13 @@ func resourceTencentMonitorAlarmPolicyRead(d *schema.ResourceData, meta interfac
483
625
484
626
eventConditions := make ([]map [string ]interface {}, 0 , len (policy .EventCondition .Rules ))
485
627
for _ , eventRule := range policy .EventCondition .Rules {
628
+ var filter = make ([]interface {}, 0 , 10 )
629
+ alarmPolicyFilter := map [string ]interface {}{
630
+ "type" : eventRule .Filter .Type ,
631
+ "dimensions" : eventRule .Filter .Dimensions ,
632
+ }
633
+ filter = append (filter , alarmPolicyFilter )
634
+
486
635
m := make (map [string ]interface {}, 5 )
487
636
m ["metric_name" ] = eventRule .MetricName
488
637
m ["period" ] = eventRule .Period
@@ -492,6 +641,7 @@ func resourceTencentMonitorAlarmPolicyRead(d *schema.ResourceData, meta interfac
492
641
m ["notice_frequency" ] = eventRule .NoticeFrequency
493
642
m ["is_power_notice" ] = eventRule .IsPowerNotice
494
643
m ["notice_frequency" ] = eventRule .NoticeFrequency
644
+ m ["filter" ] = filter
495
645
m ["description" ] = eventRule .Description
496
646
m ["unit" ] = eventRule .Unit
497
647
m ["rule_type" ] = eventRule .RuleType
@@ -595,6 +745,16 @@ func resourceTencentMonitorAlarmPolicyUpdate(d *schema.ResourceData, meta interf
595
745
if m ["is_power_notice" ] != nil {
596
746
alarmPolicyRule .IsPowerNotice = helper .IntInt64 (m ["is_power_notice" ].(int ))
597
747
}
748
+ if m ["filter" ] != nil {
749
+ filters := m ["filter" ].([]interface {})
750
+ // Max Items is 1
751
+ filter := filters [0 ].(map [string ]interface {})
752
+ alarmPolicyFilter := monitor.AlarmPolicyFilter {
753
+ Type : helper .String (filter ["type" ].(string )),
754
+ Dimensions : helper .String (filter ["dimensions" ].(string )),
755
+ }
756
+ alarmPolicyRule .Filter = & alarmPolicyFilter
757
+ }
598
758
if m ["description" ] != nil {
599
759
alarmPolicyRule .Description = helper .String (m ["description" ].(string ))
600
760
}
@@ -635,6 +795,16 @@ func resourceTencentMonitorAlarmPolicyUpdate(d *schema.ResourceData, meta interf
635
795
if m ["is_power_notice" ] != nil {
636
796
alarmPolicyRule .IsPowerNotice = helper .IntInt64 (m ["is_power_notice" ].(int ))
637
797
}
798
+ if m ["filter" ] != nil {
799
+ filters := m ["filter" ].([]interface {})
800
+ // Max Items is 1
801
+ filter := filters [0 ].(map [string ]interface {})
802
+ alarmPolicyFilter := monitor.AlarmPolicyFilter {
803
+ Type : helper .String (filter ["type" ].(string )),
804
+ Dimensions : helper .String (filter ["dimensions" ].(string )),
805
+ }
806
+ alarmPolicyRule .Filter = & alarmPolicyFilter
807
+ }
638
808
if m ["description" ] != nil {
639
809
alarmPolicyRule .Description = helper .String (m ["description" ].(string ))
640
810
}
0 commit comments