Skip to main content
  1. Posts/

Membuat Notifikasi Slack untuk AWS CloudWatch

·3 mins·
aws aws
Table of Contents

Panduan ini membahas cara mengirim notifikasi alarm Cloudwatch ke Slack. Amazon CloudWatch adalah layanan monitoring untuk sumber daya AWS Cloud dan aplikasi yang Anda jalankan di AWS.

Anda dapat menggunakan Amazon CloudWatch untuk mengumpulkan dan melacak metrik, mengumpulkan dan memantau file log, dan menetapkan alarm pada kondisi tertentu.

Create SNS Topic
#

aws sns create-topic --name cloudwatch-slack

Slack Channel Create
#

  • Login ke Workspace Slack
  • Kunjungi https://api.slack.com/apps/ untuk membuat app
  • Pilih Create New App
  • Pilih from scratch
  • Beri nama app dan pilih workspace
  • Pada bagian Features klik Incoming Webhooks lalu aktifkan
  • Klik Add New Webhook to Workspace dan pilih channel lalu klik Allow
  • Simpan Webhook URL untuk digunakan pada Lambda function

Create Lambda function
#

  • Login ke Console AWS lalu pilih Lambda > Functions > Create function
  • Pilih Author from scratch
  • Beri nama fungsi
  • Pilih Runtime Python 3.9
  • Selanjutnya edit lambda_function.py pada bagian Code source
import urllib3 
import json
http = urllib3.PoolManager() 
def lambda_handler(event, context): 
    url = ""    
    msg = {
        "channel": "",
        "username": "WEBHOOK_USERNAME",
        "text": event['Records'][0]['Sns']['Message'],
        "icon_emoji" : ""
    }
    encoded_msg = json.dumps(msg).encode('utf-8')
    resp = http.request('POST',url, body=encoded_msg)
    print({
        "message": event['Records'][0]['Sns']['Message'], 
        "status_code": resp.status, 
        "response": resp.data
    })
  • url diisi dengan Webhook URL, sedangkan channel diisi dengan nama channel yang ada di slack
  • Klik Deploy
  • Klik Test dan Configure test event
  • Klik Test kembali dan apabila Status Succeeded maka pesan akan terkirim ke channel.
  • Selanjutnya pada Function overview klik + Add Trigger
  • Pilih SNS dan tentukan SNS topic sesuai yang telah dibuat sebelumnya
  • Test message melalui SNS
aws sns publish \
--topic-arn "arn:aws:sns:us-west-2:123456789012:my-topic" \
--message file://message.txt

Create CloudWatch Alarm
#

  • Tentukan instance yang akan ditambahkan ke CloudWatch
  • Selanjutnya pilih Actions > Monitor and Troubleshoot > Manage CloudWatch alarms
  • Pada Alarm notification pilih SNS Topic
  • Bagian Alarm thresholds dapat Anda sesuaikan mulai Type, Percent, dan Period
  • Klik Create
  • Untuk pengaturan lebih lanjut dapat melalui CloudWatch > Alarms
  • Pengetesan alarm bisa dengan command stress apabila metric yang dipilih adalah CPUUtilization
apt -y install stress
stress --cpu 2 --timeout 300s

AWS Chatbot
#

Langkah ini opsional, apabila Anda masih ingin menggunakan lambda maka langkah ini dapat dilewati, namun jika Anda kurang menyukai output alarm dari lambda maka AWS Chatbot dapat menjadi alternatif dari lambda

  • Pilih AWS Chatbot > Configure a chat client
  • Pada Chat client pilih Slack
  • Klik Configure client
  • Halaman akan otomatis rediect ke URL slack untuk proses request permission. Pilih Allow untuk memberikan permission.
  • Klik Configure new channel
  • Beri nama channel
  • Bagian Slack channel, tentukan channel yang sudah dibuat sebelumnya di slack
  • Bagian Permissions, buat Channel role
  • Pada Notifications, tentukan region SNS dan SNS topic
  • Klik Configure
  • In Alarm
  • OK

Related

Cara Melihat Console dan Log System di AWS EC2
·2 mins
aws aws
Enable Driver ENA pada Instance EC2
·5 mins
aws aws
Import Disk VM sebagai Snapshot
·1 min
aws aws
Ubah Instance Attribute Amazon EC2
·1 min
aws aws
Export AMI ke file VM
·2 mins
aws aws
Export Instance ke Bucket Amazon S3
·1 min
aws aws