AWS

CloudWatch Slack 연동

KK_Ryong 2022. 2. 18. 11:26

SNS 생성 - Lambda 생성 - Alaram 생성

-Slack Webhooks URL 생성 -

앱 찾아보기 - 사용자 지정 통합 앱 - 수신 웹후크 에서 생성

-AWS SNS Topics생성-

SNS Topics 생성 - 표준 - 이름/표시이름 설정 후 생성

-AWS Lambda Function 생성-

Lambda - blueprint 사용 - 기본 Lambda 권한 - SNS Topics 연결 - 환경변수는 일단 지나가기 - 생성

Code Tab에 아래 내용 붙여 넣기

import boto3

import json

import logging

import os

from base64 import b64decode

from urllib.request import Request, urlopen

from urllib.error import URLError, HTTPError

HOOK_URL = os.environ['HOOK_URL']

logger = logging.getLogger()

logger.setLevel(logging.INFO)

def lambda_handler(event, context):

logger.info("Event: " + str(event))

message = json.loads(event['Records'][0]['Sns']['Message'])

logger.info("Message: " + str(message))

alarm_name = message['AlarmName']

#old_state = message['OldStateValue']

new_state = message['NewStateValue']

reason = message['NewStateReason']

slack_message = {

'text': "%s state is now %s: %s" % (alarm_name, new_state, reason)

}

req = Request(HOOK_URL, json.dumps(slack_message).encode('utf-8'))

try:

response = urlopen(req)

response.read()

logger.info("Message posted")

except HTTPError as e:

logger.error("Request failed: %d %s", e.code, e.reason)

except URLError as e:

logger.error("Server connection failed: %s", e.reason)

환경 변수 탭에서

HOOK_URL = URL 입력

slackChannel = 채널명

Test tab에 아래 내용 넣고 Test 해보기

{

"Records": [

{

"EventSource": "aws:sns",

"EventVersion": "1.0",

"EventSubscriptionArn": "arn:aws:sns:ap-northeast-2:981604548033:alarm-topic:test",

"Sns": {

"Type": "Notification",

"MessageId": "test",

"TopicArn": "arn:aws:sns:ap-northeast-2:123123:test-alarm-topic",

"Subject": "ALARM: \"RDS-CPUUtilization-high\" in Asia Pacific (Seoul)",

"Message": "{\"AlarmName\":\"Aurora PostgreSQL CPU 알람\",\"AlarmDescription\":\"Aurora PostgreSQL CPU 알람\",\"AWSAccountId\":\"111111111\",\"NewStateValue\":\"ALARM\",\"NewStateReason\":\"Threshold Crossed: 1 out of the last 31datapoints [8.891518474692088 (14/07/21 23:18:00), 9.72 (14/07/21 23:17:00), 9.18241509182415 (14/07/21 23:16:00)] were greater than or equal to the threshold (7.0) (minimum 3 datapoints for OK -> ALARM transition).\",\"StateChangeTime\":\"2021-07-14T23:20:50.708+0000\",\"Region\":\"Asia Pacific (Seoul)\",\"AlarmArn\":\"arn:aws:cloudwatch:ap-northeast-2:981604548033:alarm:Aurora PostgreSQL CPU 알람\",\"OldStateValue\":\"OK\",\"Trigger\":{\"MetricName\":\"CPUUtilization\",\"Namespace\":\"AWS/RDS\",\"StatisticType\":\"Statistic\",\"Statistic\":\"MAXIMUM\",\"Unit\":null,\"Dimensions\":[{\"value\":\"aurora-postgresql\",\"name\":\"EngineName\"}],\"Period\":60,\"EvaluationPeriods\":3,\"ComparisonOperator\":\"GreaterThanOrEqualToThreshold\",\"Threshold\":7,\"TreatMissingData\":\"- TreatMissingData: ignore\",\"EvaluateLowSampleCountPercentile\":\"\"}}",

"Timestamp": "2022-02-04T12:30:00",

"SignatureVersion": "1",

"MessageAttributes": {}

}

}

]

}

- CloudWatch Alarms 생성-

CloudWatch - Alarms - 생성 - 알람 조건 설정

모든 설정 후 알람 오는지 확인

다소 시간이 걸림

'AWS' 카테고리의 다른 글

AWS Chatbot | Slack 연동  (0) 2022.02.18
AWS Backup  (0) 2022.02.18
Zabbix Slack 연동  (0) 2022.02.18
AWS Zabbix 생성 (RDS)연동 (간단 메뉴얼)  (0) 2022.02.18
AWS 생성 순서  (0) 2022.02.18