全部产品
Search
文档中心

CloudOps Orchestration Service:ACS::AlarmTrigger

更新时间:Jul 27, 2025

Tujuan

Ketika template yang mencakup AlarmTrigger dijalankan, eksekusi awalnya berstatus Pending. Jika metrik yang ditentukan dalam AlarmTrigger mencapai ambang batas yang telah ditetapkan, status eksekusi berubah menjadi Aktif. Selanjutnya, tugas-tugas berikutnya yang didefinisikan dalam template akan dijalankan. Tugas-tugas ini biasanya merupakan operasi untuk membersihkan alarm secara otomatis. Contohnya: Ketika penggunaan CPU instance ECS melebihi 90%, alarm dipicu dan instance tersebut akan reboot secara otomatis.

Penting

AlarmTrigger mendukung dua jenis metrik: dikumpulkan oleh plugin yang terinstal dan disediakan secara asli oleh ECS. Untuk detail lebih lanjut tentang cara membedakan keduanya, lihat deskripsi metrik. Untuk memantau metrik yang dikumpulkan oleh plugin CloudMonitor, pastikan plugin yang diperlukan sudah terinstal pada instance; jika tidak, alarm tidak dapat dipicu. Cara menginstal plugin: Di konsol Cloud Monitor, buka Host Monitoring, pilih instance yang ingin dimonitor, dan klik Install.

Batasan

Pemicu memiliki batasan berikut:

  • Sebuah template hanya boleh memiliki satu tindakan pemicu.

  • Tugas dari tindakan pemicu harus didefinisikan sebagai tugas pertama dalam template.

  • Tindakan pemicu tidak diperbolehkan dalam template tersemat (template anak).

Sintaksis

  • Format YAML

    Tasks:
    - Name: taskName1 # Nama tugas.
      Action: 'ACS::AlarmTrigger'
      Properties:
          Namespace: 'acs_ecs_dashboard'  # Diperlukan. Namespace dari layanan Alibaba Cloud yang akan dimonitor, seperti ECS. Untuk menanyakan nilai valid dari parameter ini, panggil operasi DescribeMetricMetaList.
          MetricName: 'cpu_total'  # Diperlukan. Nama metrik. Sebagai contoh, persentase total CPU yang saat ini digunakan. Untuk menanyakan nilai valid dari parameter ini, panggil operasi DescribeMetricMetaList.
          Statistics: 'Average' # Metode yang digunakan untuk memproses data yang dimonitor. Sebagai contoh, nilai Average menunjukkan menghitung nilai rata-rata dari metrik yang ditentukan dalam periode waktu tertentu. Untuk menanyakan nilai valid dari parameter ini, panggil operasi DescribeMetricMetaList.
          ComparisonOperator:  'GreaterThanThreshold' # Diperlukan. Operator yang digunakan untuk membandingkan nilai metrik dengan ambang batas. Nilai valid: GreaterThanOrEqualToThreshold: lebih besar dari atau sama dengan, GreaterThanThreshold: lebih besar dari, LessThanOrEqualToThreshold: kurang dari atau sama dengan, LessThanThreshold: kurang dari, NotEqualToThreshold: tidak sama dengan, GreaterThanYesterday: meningkat dibandingkan dengan waktu yang sama kemarin, LessThanYesterday: menurun dibandingkan dengan waktu yang sama kemarin, GreaterThanLastWeek: meningkat dibandingkan dengan waktu yang sama minggu lalu, LessThanLastWeek: menurun dibandingkan dengan waktu yang sama minggu lalu, GreaterThanLastPeriod: meningkat dibandingkan dengan periode sebelumnya, LessThanLastPeriod: menurun dibandingkan dengan periode sebelumnya.
          Threshold: '90' # Ambang batas untuk memicu peringatan. Sebagai contoh, 90% dari total penggunaan CPU.
          Tags: [{"Key": "k1", "Value": "v1"}] # Opsional. Filter sumber daya yang akan dimonitor berdasarkan tag. Anda dapat menentukan Tags atau ResourceGroup, tetapi tidak keduanya.
          ResourceGroup: 'rg-xxxx' # Opsional. Filter sumber daya yang akan dimonitor berdasarkan kelompok sumber daya. Anda dapat menentukan Tags atau ResourceGroup, tetapi tidak keduanya.
          Resources: '[{"resource":"_ALL"}]'  # Diperlukan. Sumber daya yang akan dimonitor dengan peringatan. Sebagai contoh, [{"resource":"_ALL"}] menunjukkan semua sumber daya di bawah akun saat ini. [{"instanceId":"i-bp123467zxcvb"}] menunjukkan instance tertentu. [{"instanceId":"i-bp123467zxcvb","device":"/dev/vda1"}] menunjukkan partisi disk tertentu dari instance. [{"instanceId":"i-bp123467zxcvb","device":"/dev/vda1"},{"instanceId":"i-bp123467zxcvb","device":"/dev/vdb1"}] menunjukkan beberapa partisi disk dari instance.
          Times: 1 # Jumlah kali peringatan diulang.
          Interval: 60 # Interval di mana aturan peringatan diterapkan, dalam detik. Nilai default: 60, yang merupakan frekuensi minimum dari metrik.
          SilenceTime: 3600   # Periode bisu (Unit: detik). Nilai default: 86400, yang setara dengan satu hari. Nilai minimum: 3600, yang setara dengan 1 jam. Hanya satu notifikasi peringatan yang dikirim selama setiap periode bisu meskipun nilai metrik terus melebihi ambang batas yang ditetapkan dalam aturan peringatan.
      Outputs:  
       paraName1:
           Type: String
           ValueSelector: .key # Nilai dari kunci yang akan diquery dalam badan pesan JSON dari peringatan. Sebagai contoh, .instanceId akan mengembalikan "i-abc12345zxcv". Format badan pesan JSON dari event peringatan adalah { "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" }
  • Format JSON (merujuk pada komentar 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"
            }
          }
        }
      ]
    }

Contoh

Dalam periode 1 menit, jika penggunaan CPU total dari instance ECS yang dimonitor melebihi ambang batas, instance tersebut akan reboot secara otomatis.

  • Format YAML

    VersiFormat: OOS-2019-06-01
    Deskripsi:
      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
    Parameter:
      tags:
        Jenis: Json
        Deskripsi:
          en: The tags to select ECS instances.
        PropertiAsosiasi: Tags
      ambang:
        Jenis: Angka
        Deskripsi:
          en: The CPU utilization threshold.
      waktuSenyap:
        Jenis: Angka
        Deskripsi:
          en: The silence time of alarm (seconds).
        Default: 60
      OOSAssumeRole:
        Deskripsi:
          en: The RAM role to be assumed by OOS.
        Jenis: String
        Default: OOSServiceRole
    RamRole: '{{ OOSAssumeRole }}'
    Tugas:
      - Nama: alarmTrigger
        Aksi: 'ACS::AlarmTrigger'
        Deskripsi:
          en: Set the CPU utilization alarm for ECS instance.
        Properti:
          Namespace: acs_ecs_dashboard
          MetricName: cpu_total
          Statistik: Rata-rata
          OperatorPerbandingan: LebihBesarDariAmbang
          Ambang: '{{ambang}}'
          Kali: 1
          WaktuSenyap: '{{ waktuSenyap }}'
          Periode: 60
          Interval: 60
        Keluaran:
          InstanceId:
            Jenis: String
            PemilihNilai: .instanceId
      - Nama: CheckForInstances
        Aksi: 'ACS::CheckFor'
        Deskripsi:
          en: Check ECS instance has specified tag.
        OnError: 'ACS::END'
        Properti:
          Layanan: ECS
          API: DescribeInstances
          Parameter:
            Tags: '{{ tags }}'
            InstanceIds: '["{{ alarmTrigger.instanceId }}"]'
          PemilihProperti: TotalCount
          NilaiDiinginkan:
            - 1
      - Nama: RebootInstance
        Aksi: 'ACS::ECS::RebootInstance'
        Deskripsi:
          en: Restarts the ECS instances.
        Properti:
          instanceId: '{{ alarmTrigger.instanceId }}'
                                            

  • Format 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.",
    "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 }}"
      }
    }
  ]
}