RDS의 각종 이벤트를 슬랙으로 알람 받는 방법에 대한 글은 이미 많다
하지만 이번에 회사에서 적용한 기념으로 글을 쓰려고 한다.
어느날 아침 출근 후 오늘 할 일을 정리하고 심심해서 rds의 지표를 보다가 이상한 점을 발견했다.

특정 시간대에 cpu 사용량이 99퍼를 찍고 있었다.
이 알수 없는 현상을 동료들에게 공유하고 rds의 성능개선도우미를 살펴보니 슬로우쿼리가 원인이었다
슬로우쿼리가 발생하는 api가 admin에서 사용중이었고 이 api가 고작 29번 호출된것으로 인해 cpu 사용량이 99퍼에 도달하였던것이다.
해당 슬로우 쿼리는 해결하였으나 운좋게 피크 타임에 발생하지 않았던것이기에 앞으로도 이러한 일이 발생한다면 빠르게 확인할 필요성이 있었다.
그래서 AWS의 기능들을 활용해 RDS의 CPU 사용량을 슬랙으로 알람받도록 설정하기로 하였다.
기존에 젠킨스가 죽으면 알람을 받을수 있도록 이미 세팅이 되어있었기 때문에 해당 설정법을 목적에 맞게 적용하였다.
알람을 받기 위해서 cloud watch, AWS sns, lambda를 이용하였다.
AWS SNS 주제를 표준으로 하나 생성한다.

RDS에서 경보를 생성한다.

원하는 지표를 선택하고 임계값을 설정한다

lambda를 생성한다
환경변수는 필요에 맞게 채워넣는다.

// index.js
const { IncomingWebhook } = require('@slack/webhook');
const url = process.env.SLACK_WEBHOOK_URL;
const channel = process.env.CHANNEL;
const message = process.env.MESSAGE;
const webhook = new IncomingWebhook(url);
exports.handler = async (event) => {
console.log(event);
await webhook.send({
channel,
text: `:rage: ${message}`,
});
};

설정 완료!
이후 lambda의 테스트를 활용하면 SNS의 이벤트가 발생하도록 테스트해 볼 수 있다

다행히도 이 알람을 설정한 이후 아직까지는 알람이 오지는 않았다.
이 방법은 일일이 하나씩 설정해줘야하고 각 지표에 맞게 세팅을 해줘야해서 범용성도 떨어지는편이다.
효율적으로 모니터링 및 알람을 받을 수 있는 방법을 팀원들과 논의하여 도입해보면 좋을것 같다.