Deskripsi
Aksi ACS::EventTrigger digunakan untuk menjalankan operasi O&M secara otomatis berdasarkan event. Setelah templat yang berisi aksi ACS::EventTrigger dibuat dan dieksekusi, eksekusi tersebut memasuki status Waiting. Ketika pemicu event mendeteksi terjadinya event yang dipantau, eksekusi beralih ke status Running dan tugas-tugas berikutnya yang didefinisikan dalam templat segera dijalankan. Sebagai contoh, jika Operation Orchestration Service (OOS) menerima notifikasi mengenai event interupsi instans preemptible, OOS akan menghapus instans preemptible yang terganggu tersebut dari server backend Server Load Balancer (SLB).
Operation Orchestration Service (OOS) memantau berbagai jenis event, seperti notifikasi status layanan cloud, event operasional, dan exception bisnis. Anda dapat menyaring event berdasarkan properti seperti nama CloudOps Orchestration Service, nama event, level event, dan detail event guna memastikan pemantauan yang akurat serta respons yang tepat waktu.
Batasan
Aksi ACS::AlarmTrigger memiliki batasan-batasan berikut:
Anda hanya dapat menggunakan satu aksi ACS::AlarmTrigger dalam satu templat.
Tugas yang berisi aksi ACS::AlarmTrigger harus didefinisikan sebagai tugas pertama dalam parameter Tasks suatu templat.
Anda tidak diperbolehkan menggunakan aksi ACS::AlarmTrigger dalam template anak.
Sintaksis
Tasks:
- Name: taskName # Nama tugas.
Action: 'ACS::EventTrigger'
Properties:
Product: productName1 # Nama layanan cloud, seperti ECS. Tipe: String.
Name: # Nama event, seperti ["Instance:StateChange"]. Tipe: List.
- eventName1
Level: # Level event, seperti ["INFO"]. Tipe: List.
- eventLevel1
Content: # Detail event, seperti { "state":["Stopped"] }. Tipe: Map.
contenAttrKey1: # Nama atribut yang digunakan untuk menyaring detail event.
- value1 # Nilai atribut yang digunakan untuk menyaring detail event.
Outputs: # Opsional. Output tugas.
outputParameterName1: # Nama parameter output. Nama ini dapat berisi huruf, angka, garis bawah (_), dan tanda hubung (-). Panjang maksimum 200 karakter.
ValueSelector: "jq selector" # Selektor jQuery untuk memilih data yang akan dikembalikan, seperti .content.resourceId. Selektor jQuery mengekstrak informasi dari notifikasi event dalam format JSON.
Type: type1 # Opsional. Tipe parameter output. Nilai yang valid mencakup 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 event
Sebelum mengonfigurasi aturan penyaringan dan output untuk event yang dipantau, Anda harus memahami format notifikasi event tersebut. Notifikasi event menggunakan format JSON. Lapisan luar berisi atribut umum, sedangkan bagian content berisi detail event. Contoh kode berikut memberikan ilustrasi. Dalam contoh ini, formatnya sama dengan format notifikasi event CloudMonitor. Untuk informasi lebih lanjut mengenai format notifikasi event yang berbeda, lihat event 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 event
Aturan penyaringan
Sebuah event hanya cocok jika event tersebut berisi semua atribut yang digunakan sebagai kondisi penyaringan dan struktur penyematan atribut kondisi penyaringan identik dengan struktur atribut event.
Nilai atribut kondisi penyaringan bersifat case-sensitive.
Jika nilai atribut kondisi penyaringan berupa array, array tersebut harus berisi setidaknya satu elemen. Jika salah satu elemen dalam array tersebut cocok dengan nilai atribut event, maka atribut kondisi penyaringan tersebut dianggap cocok dengan atribut event.
Dalam kasus lain, baik nilai atribut kondisi penyaringan maupun nilai atribut event keduanya berupa array. Jika salah satu elemen dalam array atribut kondisi penyaringan cocok dengan salah satu elemen dalam array atribut event, maka atribut kondisi penyaringan tersebut dianggap cocok dengan atribut event.
Sebuah event dipicu jika nilai semua atribut kondisi penyaringan cocok dengan nilai atribut event.
Atribut yang dapat didefinisikan sebagai kondisi penyaringan
Product: Nama layanan cloud. Untuk nilai yang valid, lihat bagian Format notifikasi event atau panggil API CloudMonitor DescribeSystemEventMetaList.Name: Nama event. Untuk nilai yang valid, lihat bagian Format notifikasi event atau panggil API CloudMonitor DescribeSystemEventMetaList.Level: level event. Nilai yang valid: CRITICAL, WARN, INFO, dan *. Nilai * menunjukkan semua level event.
Content: Detail event. Untuk atribut dan nilai yang dapat digunakan dalam penyaringan, lihat bagian Format notifikasi event.
Output event
Definisikan Outputs tugas untuk meneruskan informasi dari event yang cocok ke tugas-tugas berikutnya. Seperti pada tugas lainnya, ValueSelector memungkinkan Anda menggunakan ekspresi jq untuk mengekstrak data dari notifikasi event berformat JSON. Untuk struktur notifikasi tersebut, lihat bagian Format notifikasi event.
Contoh
Kode contoh berikut menunjukkan cara menjalankan instans Elastic Compute Service (ECS) segera setelah instans tersebut dihentikan:
---
FormatVersion: OOS-2019-06-01
Description: Start ECS instance when instance is stopped.
Parameters:
OOSAssumeRole:
Description: The RAM role to be assumed by 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: start instance.
Outputs:
InstanceId:
Value: '{{ whenInstanceStopped.InstanceId }}'
Type: String{
"FormatVersion": "OOS-2019-06-01",
"Description": "Start ECS instance when instance is stopped.",
"Parameters": {
"OOSAssumeRole": {
"Description": "The RAM role to be assumed by 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": "start instance."
}
],
"Outputs": {
"InstanceId": {
"Value": "{{ whenInstanceStopped.InstanceId }}",
"Type": "String"
}
}
}