Deskripsi
Aksi ACS::EventTrigger dapat digunakan untuk menjalankan operasi O&M berbasis peristiwa secara otomatis. Setelah template yang mencakup aksi ACS::EventTrigger dibuat dan dijalankan, eksekusi akan memasuki status Menunggu. Ketika pemicu peristiwa mendeteksi bahwa peristiwa yang dipantau terjadi, eksekusi beralih ke status Berjalan dan tugas-tugas selanjutnya yang didefinisikan dalam template segera dijalankan. Sebagai contoh, jika Operation Orchestration Service (OOS) menerima notifikasi peristiwa interupsi instance preemptible, OOS menghapus instance preemptible yang terganggu dari server backend Server Load Balancer (SLB).
OOS dapat memantau status layanan cloud, peristiwa O&M, dan pengecualian bisnis. Anda dapat menyaring peristiwa berdasarkan atribut seperti nama layanan cloud, nama peristiwa, tingkat peristiwa, dan detail peristiwa untuk mencapai pemantauan yang akurat dan tanggapan tepat waktu.
Batasan
Aksi ACS::AlarmTrigger memiliki batasan sebagai berikut:
Hanya satu aksi ACS::AlarmTrigger yang dapat digunakan dalam sebuah template.
Tugas yang menggunakan aksi ACS::AlarmTrigger harus didefinisikan sebagai tugas pertama dalam parameter Tasks sebuah template.
Aksi ACS::AlarmTrigger tidak diizinkan digunakan dalam template anak.
Sintaksis
Tasks:
- Name: taskName # Nama tugas.
Action: 'ACS::EventTrigger'
Properties:
Product: productName1 # Nama layanan cloud, seperti ECS. Tipe: String.
Name: # Nama peristiwa, seperti ["Instance:StateChange"]. Tipe: List.
- eventName1
Level: # Tingkat peristiwa, seperti ["INFO"]. Tipe: List.
- eventLevel1
Content: # Detail peristiwa, seperti { "state":["Stopped"] }. Tipe: Map.
contenAttrKey1: # Nama atribut yang digunakan untuk menyaring detail peristiwa.
- value1 # Nilai atribut yang digunakan untuk menyaring detail peristiwa.
Outputs: # Opsional. Keluaran tugas.
outputParameterName1: # Nama parameter keluaran. Nama dapat berisi huruf, angka, garis bawah (_), dan tanda hubung (-). Panjangnya bisa hingga 200 karakter.
ValueSelector: "jq selector" # Pemilih jQuery untuk memilih data yang akan dikembalikan, seperti .content.resourceId. Pemilih jQuery mengekstrak informasi dari notifikasi peristiwa dalam format JSON.
Type: type1 # Opsional. Tipe parameter keluaran. Nilai valid termasuk tipe parameter dasar yang didukung oleh format YAML atau JSON, seperti String, Number, Boolean, List atau Array, dan Object. Nilai default: String.{
"Tasks": [
{
"Name": "taskName",
"Action": "ACS::EventTrigger",
"Properties": {
"Product": "productName1",
"Name": [
"eventName1"
],
"Level": [
"eventLevel1"
],
"Content": {
"contenAttrKey1": [
"value1"
]
}
},
"Outputs": {
"outputParameterName1": {
"ValueSelector": "jq selector",
"Type": "type1"
}
}
}
]
}Format Notifikasi Peristiwa
Sebelum mengonfigurasi aturan filter dan keluaran untuk peristiwa yang dipantau, Anda harus memahami format notifikasi peristiwa yang dipantau. Notifikasi peristiwa disajikan dalam format JSON. Lapisan luar berisi atribut umum, sedangkan bagian konten mencakup detail peristiwa. Kode sampel berikut memberikan ilustrasi. Dalam contoh ini, formatnya sama dengan format notifikasi peristiwa CloudMonitor. Untuk informasi lebih lanjut tentang format notifikasi peristiwa lainnya, lihat Peristiwa Layanan Alibaba Cloud.
Contoh:
{
"product": "ECS",
"resourceId": "acs:ecs:cn-shanghai:1612345678890:instance/i-abcdef",
"level": "WARN",
"instanceName": "instanceName",
"regionId": "cn-hangzhou",
"name": "Instance:PreemptibleInstanceInterruption",
"content": {
"instanceId": "i-abcdef",
"action": "delete"
}
}Penyaringan Peristiwa
Aturan Filter
Peristiwa dianggap cocok hanya jika peristiwa tersebut mencakup semua atribut yang digunakan sebagai kondisi filter dan struktur penyematan atribut kondisi filter sesuai dengan atribut peristiwa.
Nilai atribut kondisi filter bersifat peka huruf besar kecil.
Jika nilai atribut kondisi filter adalah array, array tersebut harus mencakup setidaknya satu elemen. Jika elemen dalam array cocok dengan nilai atribut peristiwa, atribut kondisi filter ini dianggap cocok dengan atribut peristiwa.
Dalam kasus lain, baik nilai atribut kondisi filter maupun atribut peristiwa merupakan array. Jika elemen dalam array atribut kondisi filter cocok dengan elemen dalam array atribut peristiwa, atribut kondisi filter ini dianggap cocok dengan atribut peristiwa.
Peristiwa dipicu jika nilai semua atribut kondisi filter cocok dengan nilai atribut peristiwa.
Atribut yang Dapat Didefinisikan sebagai Kondisi Filter
Produk: nama layanan cloud. Untuk informasi lebih lanjut tentang nilainya, lihat bagian Event notification format topik ini. Anda juga dapat memanggil operasi DescribeSystemEventMetaList untuk menanyakan nilainya.
Nama: nama peristiwa. Untuk informasi lebih lanjut tentang nilainya, lihat bagian Event notification format topik ini. Anda juga dapat memanggil operasi DescribeSystemEventMetaList untuk menanyakan nilainya.
Tingkat: tingkat peristiwa. Nilai valid: CRITICAL, WARN, INFO, dan *. Nilai * mencakup semua tingkat peristiwa.
Konten: detail peristiwa. Untuk informasi lebih lanjut tentang definisi dan nilai atribut kondisi filter, lihat bagian Event notification format topik ini.
Keluaran Peristiwa
Anda dapat mendefinisikan atribut Tasks.Outputs untuk menentukan informasi keluaran suatu peristiwa. Informasi keluaran dapat digunakan dalam tugas-tugas selanjutnya. Atribut Outputs.ValueSelector sama dengan tugas reguler dan digunakan untuk mengekstrak informasi dari notifikasi peristiwa dalam format JSON. Untuk informasi lebih lanjut, lihat bagian Event notification format topik ini.
Contoh
Kode sampel berikut menunjukkan cara memulai instance Elastic Compute Service (ECS) segera setelah dihentikan:
---
FormatVersion: OOS-2019-06-01
Description: Mulai instance ECS ketika instance dihentikan.
Parameters:
OOSAssumeRole:
Description: Peran RAM yang akan diasumsikan oleh OOS.
Type: String
Default: OOSServiceRole
RamRole: '{{OOSAssumeRole}}'
Tasks:
- Name: whenInstanceStopped
Action: 'ACS::EventTrigger'
Properties:
Product: ECS
Name:
- 'Instance:StateChange'
Level:
- INFO
Content:
state:
- Stopped
Outputs:
InstanceId:
ValueSelector: .content.resourceId
Type: String
- Name: startInstance
Action: 'ACS::ExecuteAPI'
Properties:
Service: ECS
API: StartInstance
Parameters:
InstanceId: '{{ whenInstanceStopped.InstanceId }}'
Description: mulai instance.
Outputs:
InstanceId:
Value: '{{ whenInstanceStopped.InstanceId }}'
Type: String{
"FormatVersion": "OOS-2019-06-01",
"Description": "Mulai instance ECS ketika instance dihentikan.",
"Parameters": {
"OOSAssumeRole": {
"Description": "Peran RAM yang akan diasumsikan oleh OOS.",
"Type": "String",
"Default": "OOSServiceRole"
}
},
"RamRole": "{{OOSAssumeRole}}",
"Tasks": [
{
"Name": "whenInstanceStopped",
"Action": "ACS::EventTrigger",
"Properties": {
"Product": "ECS",
"Name": [
"Instance:StateChange"
],
"Level": [
"INFO"
],
"Content": {
"state": [
"Stopped"
]
}
},
"Outputs": {
"InstanceId": {
"ValueSelector": ".content.resourceId",
"Type": "String"
}
}
},
{
"Name": "startInstance",
"Action": "ACS::ExecuteAPI",
"Properties": {
"Service": "ECS",
"API": "StartInstance",
"Parameters": {
"InstanceId": "{{ whenInstanceStopped.InstanceId }}"
}
},
"Description": "mulai instance."
}
],
"Outputs": {
"InstanceId": {
"Value": "{{ whenInstanceStopped.InstanceId }}",
"Type": "String"
}
}
}