目的
AlarmTrigger を含むテンプレートが実行されると、実行は最初に保留状態になります。 AlarmTrigger で指定されたメトリックが定義されたしきい値に達すると、実行ステータスはアクティブに変更されます。 その後、テンプレートで定義されている後続のタスクの実行を開始します。 これらのタスクは、一般的にアラームを自動的にクリアするための関連操作です。 例:ECS インスタンスの CPU 使用率が 90% を超えると、アラームがトリガーされ、インスタンスは自動的に再起動します。
AlarmTrigger は、インストールされているプラグインによって収集されたメトリックと、ECS によってネイティブに提供されるメトリックの 2 種類のメトリックをサポートしています。 これらを区別する方法の詳細については、メトリックの説明を参照してください。 CloudMonitor プラグインによって収集されたメトリックを監視するには、必要なプラグインがインスタンスにインストールされていることを確認してください。そうでない場合、アラームはトリガーされません。 プラグインをインストールする方法:[Cloud Monitor] コンソールで、[ホスト監視] に移動し、監視するインスタンスを選択して、[インストール] をクリックします。
制限事項
トリガーには次の制限があります。
1 つのテンプレートには、1 つのトリガーアクションのみが許可されます。
トリガーアクションのタスクは、テンプレートの最初のタスクとして定義する必要があります。
埋め込みテンプレート(子テンプレート)では、トリガーアクションは許可されません。
構文
YAML 形式
Tasks: - Name: taskName1 # タスクの名前。 Action: 'ACS::AlarmTrigger' Properties: Namespace: 'acs_ecs_dashboard' # 必須。監視する Alibaba Cloud サービスの名前空間(例:ECS)。 このパラメーターの有効な値を照会するには、DescribeMetricMetaList 操作を呼び出します。 MetricName: 'cpu_total' # 必須。メトリックの名前。 たとえば、現在消費されている CPU の合計パーセンテージ。 このパラメーターの有効な値を照会するには、DescribeMetricMetaList 操作を呼び出します。 Statistics: 'Average' # 監視対象データの処理方法。 たとえば、Average の値は、指定された期間における指定されたメトリックの平均値を計算することを示します。 このパラメーターの有効な値を照会するには、DescribeMetricMetaList 操作を呼び出します。 ComparisonOperator: 'GreaterThanThreshold' # 必須。メトリックの値をしきい値と比較するために使用される演算子。 有効な値:GreaterThanOrEqualToThreshold:しきい値以上、GreaterThanThreshold:しきい値より大きい、LessThanOrEqualToThreshold:しきい値以下、LessThanThreshold:しきい値より小さい、NotEqualToThreshold:しきい値と等しくない、GreaterThanYesterday:昨日と同じ時刻と比較して増加、LessThanYesterday:昨日と同じ時刻と比較して減少、GreaterThanLastWeek:先週の同じ時刻と比較して増加、LessThanLastWeek:先週の同じ時刻と比較して減少、GreaterThanLastPeriod:前回の期間と比較して増加、LessThanLastPeriod:前回の期間と比較して減少。 Threshold: '90' # アラートをトリガーするためのしきい値。 たとえば、CPU 使用率の合計の 90%。 Tags: [{"Key": "k1", "Value": "v1"}] # オプション。タグで監視対象のリソースをフィルタリングします。 Tags または ResourceGroup のいずれかを指定できますが、両方を指定することはできません。 ResourceGroup: 'rg-xxxx' # オプション。リソースグループで監視対象のリソースをフィルタリングします。 Tags または ResourceGroup のいずれかを指定できますが、両方を指定することはできません。 Resources: '[{"resource":"_ALL"}]' # 必須。アラートで監視するリソース。 たとえば、[{"resource":"_ALL"}] は現在のアカウント下のすべてのリソースを示します。 [{"instanceId":"i-bp123467zxcvb"}] は特定のインスタンスを示します。 [{"instanceId":"i-bp123467zxcvb","device":"/dev/vda1"}] はインスタンスの特定のディスクパーティションを示します。 [{"instanceId":"i-bp123467zxcvb","device":"/dev/vda1"},{"instanceId":"i-bp123467zxcvb","device":"/dev/vdb1"}] はインスタンスの複数のディスクパーティションを示します。 Times: 1 # アラートが繰り返される回数。 Interval: 60 # アラートルールが適用される間隔(秒単位)。 デフォルト値:60(メトリックの最小頻度)。 SilenceTime: 3600 # ミュート期間(秒単位)。 デフォルト値:86400(1 日に相当)。 最小値:3600(1 時間に相当)。 メトリック値がアラートルールで設定されたしきい値を継続的に超えていても、各ミュート期間中に送信されるアラート通知は 1 つだけです。 Outputs: paraName1: Type: String ValueSelector: .key # アラートの JSON メッセージ本文で照会するキーの値。 たとえば、.instanceId は "i-abc12345zxcv" を返します。 アラートイベントの JSON メッセージ本文の形式は { "curLevel": "INFO", "Minimum": "34.00", "Maximum": "95.00", "instanceId": "i-abc12345zxcv", "Average": "85.00", "ruleName": "alarmtrigger-13012345678-exec-2130c0c073fa487098d3", "userId": "13012345678", "timestamp": "1598349720000", "executionId": "exec-2130c0c073fa487098d3", "sourceAliUid": "13012345678" } です。JSON 形式(YAML のコメントを参照)
{ "Tasks": [ { "Name": "taskName1", "Action": "ACS::AlarmTrigger", "Properties": { "Namespace": "acs_ecs_dashboard", "MetricName": "cpu_total", "Statistics": "Average", "ComparisonOperator": "GreaterThanThreshold", "Threshold": "90", "Tags": "[{\"Key\": \"k1\", \"Value\": \"v1\"}]", "ResourceGroup": "rg-xxxx", "Resources": "[{\"resource\":\"_ALL\"}]", "Times": 1, "Interval": 60, "SilenceTime": 3600 }, "Outputs": { "paraName1": { "Type": "String", "ValueSelector": ".key" } } } ] }
例
1 分間に、監視対象の ECS インスタンスの合計 CPU 使用率がしきい値を超えると、インスタンスは自動的に再起動します。
YAML 形式
FormatVersion: OOS-2019-06-01 Description: en: Reboot ECS instance with specified tag when its CPU utilization exceeded threshold. The selected instance must already have the Cloud Monitor agent installed. name-en: ACS-ECS-RebootInstanceAtHighCpuByTags categories: - alarm-trigger Parameters: tags: Type: Json Description: en: The tags to select ECS instances. AssociationProperty: Tags threshold: Type: Number Description: en: The CPU utilization threshold. silenceTime: Type: Number Description: en: The silence time of alarm (seconds). Default: 60 OOSAssumeRole: Description: en: The RAM role to be assumed by OOS. Type: String Default: OOSServiceRole RamRole: '{{ OOSAssumeRole }}' Tasks: - Name: alarmTrigger Action: 'ACS::AlarmTrigger' Description: en: Set the CPU utilization alarm for ECS instance. Properties: Namespace: acs_ecs_dashboard MetricName: cpu_total Statistics: Average ComparisonOperator: GreaterThanThreshold Threshold: '{{threshold}}' Times: 1 SilenceTime: '{{ silenceTime }}' Period: 60 Interval: 60 Outputs: InstanceId: Type: String ValueSelector: .instanceId - Name: CheckForInstances Action: 'ACS::CheckFor' Description: en: Check ECS instance has specified tag. OnError: 'ACS::END' Properties: Service: ECS API: DescribeInstances Parameters: Tags: '{{ tags }}' InstanceIds: '["{{ alarmTrigger.instanceId }}"]' PropertySelector: TotalCount DesiredValues: - 1 - Name: RebootInstance Action: 'ACS::ECS::RebootInstance' Description: en: Restarts the ECS instances. Properties: instanceId: '{{ alarmTrigger.instanceId }}'
JSON 形式
{
"FormatVersion": "OOS-2019-06-01",
"Description": {
"en": "Reboot ECS instance with specified tag when its CPU utilization exceeded threshold. The selected instance must already have the Cloud Monitor agent installed.", // CPU 使用率がしきい値を超えたときに、指定されたタグを持つ ECS インスタンスを再起動します。選択されたインスタンスには、Cloud Monitor エージェントが既にインストールされている必要があります。
"name-en": "ACS-ECS-RebootInstanceAtHighCpuByTags",
"categories": [
"alarm-trigger"
]
},
"Parameters": {
"tags": {
"Type": "Json",
"Description": {
"en": "The tags to select ECS instances." // ECS インスタンスを選択するためのタグ
},
"AssociationProperty": "Tags"
},
"threshold": {
"Type": "Number",
"Description": {
"en": "The CPU utilization threshold." // CPU 使用率のしきい値
}
},
"silenceTime": {
"Type": "Number",
"Description": {
"en": "The silence time of alarm (seconds)." // アラームのミュート時間(秒)
},
"Default": 60
},
"OOSAssumeRole": {
"Description": {
"en": "The RAM role to be assumed by OOS." // OOS によって引き受けられる RAM ロール
},
"Type": "String",
"Default": "OOSServiceRole"
}
},
"RamRole": "{{ OOSAssumeRole }}",
"Tasks": [
{
"Name": "alarmTrigger",
"Action": "ACS::AlarmTrigger",
"Description": {
"en": "Set the CPU utilization alarm for ECS instance." // ECS インスタンスの CPU 使用率アラームを設定します。
},
"Properties": {
"Namespace": "acs_ecs_dashboard",
"MetricName": "cpu_total",
"Statistics": "Average",
"ComparisonOperator": "GreaterThanThreshold",
"Threshold": "{{threshold}}",
"Times": 1,
"SilenceTime": "{{ silenceTime }}",
"Period": 60,
"Interval": 60
},
"Outputs": {
"InstanceId": {
"Type": "String",
"ValueSelector": ".instanceId"
}
}
},
{
"Name": "CheckForInstances",
"Action": "ACS::CheckFor",
"Description": {
"en": "Check ECS instance has specified tag." // ECS インスタンスに指定されたタグがあることを確認します。
},
"OnError": "ACS::END",
"Properties": {
"Service": "ECS",
"API": "DescribeInstances",
"Parameters": {
"Tags": "{{ tags }}",
"InstanceIds": "[\"{{ alarmTrigger.instanceId }}\"]"
},
"PropertySelector": "TotalCount",
"DesiredValues": [
1
]
}
},
{
"Name": "RebootInstance",
"Action": "ACS::ECS::RebootInstance",
"Description": {
"en": "Restarts the ECS instances." // ECS インスタンスを再起動します。
},
"Properties": {
"instanceId": "{{ alarmTrigger.instanceId }}"
}
}
]
}