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 |