Membuat Notifikasi CloudWatch Alarm lebih noticeable dengan WhatsApp

Riski Cahyadi
4 min readMar 9, 2021

--

Pada platform Amazon Web Services ( AWS ) untuk monitoring dan alarm tools utama yang kita gunakan yaitu service CloudWatch, biasanya kita menggunakan e-mail notification sebagai endpoint untuk mengirim alert yang di trigger dari cloudwatch alarm.

Ketika kita hanya memanage jumlah resource yang kecil kita tidak terlalu terganggu dengan menggunakan e-mail notification sebagai endpoint. Pada kasus banyak resource yang dimonitor, notifikasi / alarm menjadi sulit untuk ter notice, yang mana bisa menyebabkan alarm tersebut terlewat / tidak ter notice.

Pada beberapa organisasi media komunikasi utama yang mereka gunakan yaitu WhatsApp baik dalam melakukan diskusi atau koordinasi untuk project. Maka dari itu biasanya message di WhatsApp menjadi more noticeable untuk case ini.

Untuk hal tersebut kita bisa hooking beberapa service yaitu cloudwatch sebagai event source kemudian di hook dengan lambda dan menggunakan Twilio WhatsApp SDK untuk mengirimkan alert via WhatsApp.

Event Flow

Pada artikel ini saya coba bagi ke beberapa bagian yaitu:

  1. Create CloudWatch Alarm
  2. Create Lambda Function and use python Twilio SDK
  3. Hooking Alarm dan Testing

Untuk bagian pertama yaitu cloudwatch alarm saya akan menggunakan cpu utilization sebagai parameter untuk trigger alarm. Berikut Terraform resource block untuk cloudwatch metric alarm yang saya gunakan:

resource "aws_cloudwatch_metric_alarm" "instance-cpu" {
alarm_name = format("instance-cpu-above-60")
comparison_operator = "GreaterThanOrEqualToThreshold"
evaluation_periods
= "2"
threshold
= 60
alarm_description
= "This metric monitors ec2 cpu utilization for instance instance-id"
alarm_actions
= [sns-topic-arn]
insufficient_data_actions = []
metric_query {
id = "m1"
return_data
= "true"
metric
{
metric_name = "CPUUtilization"
namespace
= "AWS/EC2"
period
= "300"
stat
= "Average"
unit
= "Percent"
dimensions
= {
InstanceId = instance-id
}
}
}
}

Selanjutnya kita bisa langsung membuat Lambda function. Pilih Python 3.8 sebagai runtime.

Twilio WhatsApp Lambda Function

Untuk flow nya kita lakukan consume JSON yang diterima dari CloudWatch Alarm kemudian di loads lalu dilakukan templating, setelah itu kita gunakan Twilio python SDK untuk mengirimkan message ke user.

Ada beberapa format messages yang perlu di penuhi saat menggunakan Twilio SDK, yang pertama yaitu untuk authentication dengan Twilio API kita membutuhkan TWILIO_ACCOUNT_SID dan TWILIO_AUTH_TOKEN yang bisa ditambahkan di Lambda Environment Variables. Untuk Account SID dan Auth Token itu bisa di ambil dari Twilio Console.

Kali ini kita akan menggunakan Twilio Python SDK. Untuk dokumentasi Twilio Python SDK kita bisa mengikuti guide pada link dibawah:

Berikut Code yang digunakan untuk case ini:

Untuk step terakhir kita bisa coba langsung untuk on boarding setup Twilio Sandbox WhatsApp, untuk guide ini bisa follow:

https://www.twilio.com/console/sms/whatsapp/learn

Ketika anda masuk ke console learn akan ada beberapa step yang perlu di lakukan, yang pertama yaitu untuk join sandbox account:

Setelah anda join di sandbox akan ada reply dari Twilio Sandbox

Join Sandbox Account Twilio

Ketika alarm tersebut ter trigger maka akan menjalankan Lambda function yang sudah kita define sebelumnya, kemudian akan ada message dengan konten sesuai template yang sudah kita define sebelumnya:

Triggered CloudWatch Alarm
WhatsApp Message

Summary

Penggunaan WhatsApp sebagai destination untuk kirim alert menjadi salah satu opsi yang bisa digunakan tergantung dari preferred communication media untuk kirim alerting. Pada case ini kita menggunakan beberapa komponen yaitu CloudWatch Alarm , Lambda dan Twilio Programmable Message dan juga WhatsApp itu sendiri sebagai destination.

Tentunya masih ada beberapa improvement yang bisa dilakukan seperti dalam segi cost maupun ada kemungkinan contohnya banyaknya alarm ter trigger dalam satu waktu yang cukup banyak. Untuk hal ini kita bisa improve dengan menambahkan Composite Alarm di CloudWatch.

Sign up to discover human stories that deepen your understanding of the world.

--

--

No responses yet

Write a response