[AWS CloudWatch] CloudWatch를 활용한 SQL Server RDS 데드락 모니터링
l Version : AWS CloudWatch, RDS for SQL Server
SQL Server를 운영할 때, 여러 성능 지표 모니터링은 필수이다. 그 중 하나가 데드락 모니터링이다. AWS RDS for SQL Server 환경에서 데드락 발생시 CloudWatch를 활용하면 특별한 서드파티 모니터링 도구가 없어도 발생 즉시 알림을 받을 수 있다.
이번 포스트는 AWS 공식 블로그 내용을 요약한 것으로 자세한 내용은 원문을 참고한다.
l Monitor deadlocks in Amazon RDS for SQL Server and set notifications using Amazon CloudWatch : https://aws.amazon.com/blogs/database/monitor-deadlocks-in-amazon-rds-for-sql-server-and-set-notifications-using-amazon-cloudwatch/
데드락 발생시 아래와 같은 이벤트 로그를 확인할 수 있다. 이 로그는 온프레미스 SQL Server 또는 클라우드 환경에서의 SQL Server 모두 동일하다. 데드락이 발생하면 현재 실행중인 프로세스들은 모두 대기하게 되므로, SQL Server는 현재 데드락에 관련된 프로세스 중 하나를 강제로 종료시켜 이 문제를 해결한다. 그리고 아래와 같은 오류 로그를 기록한다.
Msg 1205, Level 13, State 51, Line 3 Transaction (Process ID xx) was deadlocked on {xxx} resources with another process and has been chosen as the deadlock victim. Rerun the transaction |
AWS RDS를 사용하면 데드락을 모니터링 하고 이벤트가 발생하는 즉시 Amazon SNS(Simple Notification Service)로 알림을 보낼 수 있다. 이렇게 알림 시스템을 구성할 경우 데드락 발생에 대한 알림을 자동화하고 데드락 예방을 위한 조치를 취하는데 도움이 된다. 아래는 데드락 발생시 알림을 보내는 아키텍처이지만 데드락 뿐만 아니라 다양한 오류 로그 및 사용자 정의 이벤트를 모니터링 할 수 있다.
1. SQL Server RDS에 대한 데드락 모니터링 감지를 활성화
2. SQL Server 오류 로그를 CloudWatch에 게시
3. 교착 상태 이벤트를 시뮬레이션
4. 필터 패턴과 CloudWatch 경보를 생성
5. Amazon RDS 성능 개선 도우미를 사용하여 솔루션을 모니터링
데드락 모니터링을 활성화 하기 위해서는 파라메터 그룹에서 데드락 이벤트인 1204, 1222를 선택하고 값을 1로 설정한다. 파라메터 그룹 수정 후 적용을 위해서는 RDS 인스턴스를 재시작 해야 한다.
CloudWatch가 오류 로그를 모니터링 할 수 있도록 Log exports에서 Error log항목을 선택한다. 변경 사항을 적용하려면 RDS DB 인스턴스 재시작이 필요하다.
위 설정이 완료되고 나면 CloudWatch 콘솔에서 로그가 기록되는 것을 확인할 수 있다. 로그 그룹은 /aws/rds/instance/<Your-RDS-Instance-Name>/error 형식으로 그룹화 되어 있다.
Metric filter 탭에서 데드락에 대한 이벤트를 입력한다. 이때 통계에서 최소를 선택하고 0 보다 클 경우 알림이 발생하도록 설정한다. (데드락은 1건만 있어도 알림을 받아야 한다.)
알림이 발생했을 때 수신할 이메일을 입력하여 SNS 주제를 생성하고 나면 실제 데드락 발생시 메일로 해당 알림을 받을 수 있다.
이번 포스트에서는 CloudWatch를 사용하여 SQL Server RDS에서 발생하는 데드락에 대해서만 모니터링 하였지만, 실제 SQL Server의 오류 로그에는 매우 다양한 이벤트 로그가 기록된다. 데드락 외에도 운영에 필요한 로그를 모니터링 하여 알림을 받을 수 있도록 한다.
l SQL Server DBA 체크리스트 : https://blog.naver.com/jevida/221018122813
[참고자료]
l Monitor deadlocks in Amazon RDS for SQL Server and set notifications using Amazon CloudWatch : https://aws.amazon.com/blogs/database/monitor-deadlocks-in-amazon-rds-for-sql-server-and-set-notifications-using-amazon-cloudwatch/
2022-04-12 / Sungwook Kang / http://sungwookkang.com
AWS SQL RDS, CloudWatch, 오류로그, 이벤트 로그, 장애알림, DB 모니터링
'AWS' 카테고리의 다른 글
[AWS RDS] AWS RDS for Oracle 교차 리전 자동 백업 – Part 2/2 (0) | 2022.04.18 |
---|---|
[AWS RDS] AWS RDS for Oracle 교차 리전 자동 백업 – Part 1/2 (0) | 2022.04.13 |
[AWS Aurora] Babelfish를 사용하여 MS SQL 쿼리를 변경 없이 PostgreSQL에서 사용하기 (0) | 2022.04.08 |
[AWS SCT] AWS SCT를 활용하여 이기종 데이터베이스 스키마 전환하기 (0) | 2022.04.07 |
[AWS DMS] AWS DMS를 활용하여 데이터 마이그레이션 과정에서 데이터 마스킹 하기 (0) | 2022.04.03 |