CloudWatch를 사용하여 AWS 리소스를 모니터링하고 관리하는 방법
AWS CloudWatch는 아마존 클라우드 생태계의 핵심 서비스로, 아마존 클라우드의 다양한 서비스 활동을 기록하고 관리하는 데 사용됩니다. 이 서비스는 메트릭 및 로그 파일을 수집하고 추적하며, 이 데이터를 바탕으로 다양한 활동에 대한 경보를 설정할 수 있습니다.
AWS CloudWatch를 통해 애플리케이션 성능, 리소스 활용도 및 서비스 운영 상태에 대한 전반적인 가시성을 확보할 수 있습니다. 또한 환경 내의 이상 동작을 감지하고, 자동화된 조치를 취하며, 문제 해결을 돕고, 로그에서 얻은 통찰력을 통해 시스템 또는 운영 개선에 필요한 조치를 취할 수 있습니다.
로그 모니터링은 보안 위협을 감지하고 잠재적 취약점을 식별하는 데 도움이 됩니다. 의심스러운 활동 및 비정상적인 동작을 감지하여 이에 대응하고 향후 공격을 예방할 수 있습니다.
또한 시스템 로그를 유지하고 모니터링하는 것은 종종 규정 준수를 위해 필요한 활동입니다. AWS CloudWatch는 이러한 요구 사항을 충족하는 데 도움을 줍니다.
이러한 모든 이점은 AWS CloudWatch를 활용함으로써 얻을 수 있는 직접적인 결과입니다. 이제 AWS CloudWatch를 시작하는 방법을 알아보겠습니다.
서비스를 위한 AWS CloudWatch 설정
출처: aws.amazon.com
설정 과정은 간단할 수도 있지만, 로깅 및 모니터링 시스템의 모든 측면을 세밀하게 조정하는 데는 상당한 시간이 소요될 수 있습니다. 이는 지속적인 개선 과정의 일부로 볼 수 있습니다.
간단하게 시작하는 방법은 다음과 같습니다.
- AWS 계정이 이미 있다고 가정하고 CloudWatch 콘솔로 이동하여 "시작하기" 버튼을 클릭하여 CloudWatch를 활성화합니다.
- 서비스에 대한 로그 수집을 시작하려면 로그 그룹을 생성해야 합니다. 로그 그룹은 동일한 보존, 모니터링 및 액세스 제어 설정을 공유하는 로그 스트림의 모음입니다. CloudWatch 콘솔에서 "로그 그룹 생성" 버튼을 클릭하여 로그 그룹을 만들 수 있습니다.
- 로그 이벤트를 특정 소스(서비스)로 좁히기 위해 로그 스트림을 생성합니다. CloudWatch 콘솔에서 "로그 스트림 생성" 버튼을 클릭하여 로그 스트림을 만들 수 있습니다.
- EC2 인스턴스에서 로그를 수집하려면 CloudWatch 에이전트를 설치해야 합니다. 에이전트는 인스턴스에서 실행되어 로그 데이터를 CloudWatch로 전송하는 소프트웨어입니다. AWS Systems Manager를 사용하거나 인스턴스에서 스크립트를 실행하여 에이전트를 설치할 수 있습니다.
- 정의된 패턴을 기반으로 로그에서 지표를 추출하는 지표 필터를 생성합니다. CloudWatch 콘솔에서 "지표 필터 생성" 버튼을 클릭하여 지표 필터를 만들 수 있습니다.
- 마지막으로 추출된 데이터를 한곳에 모아 시각화하여 대시보드를 만듭니다. 대시보드는 지표 및 기타 데이터를 표시하는 위젯 모음입니다. CloudWatch 콘솔에서 "대시보드 생성" 버튼을 클릭하여 대시보드를 생성할 수 있습니다.
AWS CloudWatch를 활용한 모니터링
앞서 언급했듯이 AWS CloudWatch를 사용하면 아마존 클라우드 내의 모든 서비스를 모니터링할 수 있습니다. 이러한 모니터링이 어떻게 이루어지는지에 대한 이해를 돕기 위해, 시스템에서 가장 많이 사용되는 AWS 서비스에 대한 모니터링 방법을 살펴보겠습니다.
출처: docs.aws.amazon.com
EC2 인스턴스
CPU 사용률, 네트워크 트래픽, 디스크 사용량 및 메모리 사용량과 같은 지표를 수집하여 EC2 인스턴스를 모니터링할 수 있습니다. 또한 EC2 인스턴스의 상태를 모니터링하고 인스턴스가 중지되거나 종료될 때 알림을 받을 수 있습니다.
EC2 인스턴스를 모니터링하려면 해당 인스턴스에 CloudWatch 에이전트를 설치하고 지표를 CloudWatch로 전송하도록 설정해야 합니다. 또한, 메트릭이 특정 임계값을 초과할 때 경고하는 경보를 생성할 수 있습니다.
RDS 데이터베이스
CPU 사용률, 메모리 사용량 또는 데이터베이스의 디스크 사용량과 같은 지표를 수집하여 Amazon RDS 데이터베이스를 모니터링할 수 있습니다. 또한 데이터베이스의 상태를 모니터링하고 데이터베이스가 중지, 일시 중지 또는 종료될 때 알림을 받을 수 있습니다.
RDS 데이터베이스를 모니터링하려면 향상된 모니터링을 활성화하고 지표를 CloudWatch로 전송하도록 설정해야 합니다. 메트릭 값이 정의된 범위를 벗어날 때 알려주는 경보를 생성할 수 있습니다.
람다 함수
Lambda 호출 횟수, 기간 및 오류율과 같은 지표를 수집하여 AWS Lambda 함수를 모니터링할 수 있습니다. 또한 함수 상태를 모니터링하고 함수가 실패할 때 알림을 받을 수 있습니다.
Lambda 함수를 모니터링하려면 CloudWatch Logs를 활성화하고 로그를 CloudWatch로 전송하도록 설정해야 합니다. 그런 다음 메트릭 필터를 생성하여 로그에서 지표를 추출하고 추출된 정보를 기반으로 조치를 취할 수 있습니다.
탄력적 로드 밸런서
Elastic Load Balancer 모니터링은 요청 수, 지연 시간 및 HTTP 응답 코드와 같은 메트릭을 수집하여 수행됩니다. 또한 로드 밸런서의 상태를 모니터링하고 로드 밸런서가 실패할 때 알림을 받을 수 있습니다.
로드 밸런서를 모니터링하려면 액세스 로그를 활성화하고 로그를 CloudWatch로 전송하도록 로드 밸런서를 설정해야 합니다. 그런 다음 지표 필터를 생성하여 로그에서 지표를 추출하고 지표가 정상 범위를 벗어날 때마다 경보를 생성할 수 있습니다.
Auto Scaling 그룹
그룹 크기, CPU 사용률, 네트워크 트래픽을 수집하여 Auto Scaling 그룹을 모니터링할 수 있습니다. 또한 그룹의 상태를 모니터링하고 그룹이 확장되거나 축소될 때 알림을 받을 수 있습니다.
Auto Scaling 그룹을 모니터링하려면 세부 모니터링을 활성화하고 지표를 CloudWatch로 전송하도록 설정해야 합니다. 그런 다음 메트릭이 특정 임계값을 초과할 때 경고하는 경보를 생성할 수 있습니다.
Elastic Beanstalk 애플리케이션
CPU 사용률 및 요청 수와 같은 지표를 수집하여 AWS Elastic Beanstalk 애플리케이션을 모니터링할 수 있습니다. 또한 애플리케이션의 상태를 모니터링하고 애플리케이션이 실패할 때 알림을 받을 수 있습니다.
Elastic Beanstalk 애플리케이션을 모니터링하려면 향상된 상태 보고를 활성화하고 지표를 CloudWatch로 전송하도록 구성해야 합니다. 그 후 메트릭이 미리 정의된 임계값을 벗어날 때 경고하는 경보를 생성할 수 있습니다.
CloudWatch 경보 관리
주요 지표 및 각 서비스에 대해 사용 가능한 CloudWatch 경보가 있습니다. 모범 사례에 따라 사전에 구성하여 문제가 발생할 때 도움을 받을 수 있습니다.
경보를 효과적으로 관리하면 중요한 문제에 대한 알림을 받고 AWS 리소스 및 애플리케이션의 상태와 성능을 유지하기 위해 적절한 조치를 취할 수 있습니다.
출처: aws.amazon.com
#1. 지표에 대한 경보 설정
경보를 설정하려면 먼저 모니터링할 메트릭을 선택합니다. 그런 다음 임계값과 비교 연산자를 지정하여 해당 지표를 기반으로 경보를 생성합니다.
예를 들어 CPU 사용률이 5분 이상 80%를 초과하면 트리거되는 경보를 생성할 수 있습니다. 경보를 생성한 후에는 경보가 트리거될 때 수행할 작업을 설정합니다. 이메일 알림, SMS 알림, 또는 시스템 리소스 확장 등의 조치를 취할 수 있습니다.
#2. 경보 조치 구성
경보 작업을 설정할 때는 SNS 주제로 알림 보내기, AWS Lambda 함수 실행, 또는 EC2 인스턴스 중지 또는 종료 등의 다양한 옵션 중에서 선택할 수 있습니다. 람다 함수를 통해 더 복잡한 자동화된 작업을 수행할 수도 있습니다.
각 경보에 대해 여러 작업을 구성할 수 있으며, 이를 통해 경보의 심각도에 따라 다른 작업을 실행할 수 있습니다. 예를 들어 중요도가 낮은 경보에 대한 이메일 알림을 보내고, 중요도가 높은 경보에 대한 인스턴스를 종료할 수 있습니다.
#삼. 알람 모범 사례
경보가 효과적이고 신뢰할 수 있도록 모범 사례를 따르는 것이 좋습니다. 몇 가지 모범 사례는 다음과 같습니다.
- 과거 데이터를 기반으로 적절한 임계값 설정
- 여러 메트릭을 함께 사용하여 문제 감지
- 알람이 올바르게 작동하는지 정기적으로 테스트
알람을 너무 많이 생성하지 않도록 주의해야 합니다. 과도한 알람은 피로를 유발하고, 모니터링 시스템을 복잡하게 만들며, 정말 중요한 문제를 식별하기 어렵게 만들 수 있습니다.
CloudWatch 경보에 문제가 있는 경우 다음과 같은 문제 해결 단계를 따를 수 있습니다.
- 알람 이력을 확인하여 알람이 트리거되었을 때 취한 조치를 확인하십시오.
- 지표 데이터를 검토하여 알람을 유발했을 수 있는 이상 또는 급증이 있는지 확인하십시오.
- 문제가 지속되면 알람 임계값을 조정하거나 알람에 지표를 추가하여 정확도를 높일 수 있습니다.
CloudWatch 대시보드를 활용한 지표 분석 및 시각화
출처: docs.aws.amazon.com
대시보드를 통해 지표를 분석하고 시각화하면 AWS 리소스 및 애플리케이션의 상태와 성능에 대한 이해하기 쉬운 통찰력을 얻을 수 있습니다. CloudWatch 대시보드는 지표에 대한 사용자 정의 가능한 보기를 제공합니다.
시간 경과에 따른 추세를 보여주고 시스템의 잠재적인 문제를 강조 표시하는 차트, 그래프 및 기타 시각화를 배치할 수 있습니다. 최종 목표는 로그 파일 데이터를 추상화하고, 시스템 상태를 확인하고 모니터링하려는 모든 사용자가 보다 읽기 쉽고 사용자 친화적인 형식으로 중요한 정보를 쉽게 얻을 수 있도록 하는 것입니다.
CloudWatch 대시보드를 생성하려면 CloudWatch 콘솔 또는 CloudWatch API를 사용할 수 있습니다. 대시보드에 표시하려는 메트릭을 보여주는 위젯을 대시보드에 추가하기만 하면 됩니다. 추가 정보를 제공하기 위해 텍스트와 이미지를 추가할 수도 있습니다.
대시보드를 생성한 후에는 특정 요구 사항에 맞게 사용자 정의할 수 있습니다. 위젯의 크기를 조정하고 재배열하며, 표시되는 데이터의 시간 범위를 변경하고, 중요한 이벤트나 변경 사항을 강조 표시하는 주석을 추가할 수 있습니다. 다른 사용자와 대시보드를 공유하여 동일한 메트릭과 시각화를 볼 수도 있습니다.
또한 여러 AWS 계정 및 환경에 동일한 대시보드를 쉽게 배포할 수 있습니다.
로그 수집 및 분석
로그 분석은 주로 CloudWatch의 Logs Insights 기능을 사용하는 것을 의미합니다.
CloudWatch Logs에서 로그 데이터를 수집하면 Logs Insights를 사용할 수 있습니다. CloudWatch Logs Insights를 사용하면 간단하지만 강력한 쿼리 언어를 사용하여 로그 데이터를 쿼리하고 시각화할 수 있습니다. 이는 SQL 쿼리 언어와 유사하지만 결과는 거의 동일합니다.
Logs Insights를 사용하여 특정 로그 이벤트를 검색하고, 특정 기준에 따라 로그 데이터를 필터링하고, 차트 및 테이블과 같은 시각화를 생성할 수 있습니다. 이를 통해 문제 해결, 성능 최적화 또는 보안 개선에 도움이 되는 애플리케이션 및 인프라 동작에 대한 추가적인 통찰력을 얻을 수 있습니다.
추가 읽기: AWS Logs Insights를 활용하여 AWS 서비스 로그에서 대시보드 지표를 쿼리하는 방법
CloudWatch 이벤트를 활용한 작업 자동화
CloudWatch에 충분한 로그 데이터 정보가 있으면 이를 사용하여 AWS 리소스 및 애플리케이션에서 발생하는 이벤트를 기반으로 작업을 트리거할 수 있습니다. CloudWatch Events는 작업을 예약하고 자동화하는 방법을 제공합니다. 예를 들어, 인스턴스 사용률이 정상 범위를 벗어날 때마다 EC2 인스턴스를 시작하거나 중지할 수 있습니다(예: 야간에 인스턴스를 중지하고 근무 시간 동안 다시 시작).
CloudWatch 이벤트로 작업을 자동화하려면 일치시킬 이벤트 패턴과 이벤트 발생 시 취할 조치를 지정하는 규칙을 생성해야 합니다. CloudWatch 콘솔 또는 CloudWatch Events API를 사용하여 이러한 규칙을 만들 수 있습니다. 그런 다음 AWS Lambda 함수, SNS 주제 또는 EC2 인스턴스와 같은 규칙에 대한 하나 이상의 대상을 구성합니다.
CloudWatch Events는 AWS 서비스, 사용자 지정 애플리케이션 및 타사 서비스를 포함한 광범위한 이벤트 소스를 지원합니다. 따라서 리소스 확장, 백업 트리거 또는 보안 사고 대응이 필요한 경우, CloudWatch Events를 사용하여 작업을 자동화할 수 있습니다.
작업을 자동화하면 시스템에 대한 수동 개입을 줄이고 AWS 리소스와 애플리케이션이 항상 최적 수준으로 실행되도록 할 수 있습니다.
고급 CloudWatch 기능
AWS 리소스에 대한 더 깊은 통찰력을 얻기 위해 설정할 수 있는 몇 가지 고급 CloudWatch 기능이 있습니다. 그중 하나는 이미 언급한 로그 인사이트입니다. 다른 주요 고급 기능은 다음과 같습니다.
- CloudWatch Contributor Insights는 EC2 인스턴스 또는 Lambda 함수와 같은 리소스 사용률의 주요 기여자를 식별하는 데 도움이 됩니다. 이를 통해 리소스를 가장 많이 사용하는 작업을 파악하고 그에 따라 리소스를 최적화할 수 있습니다.
- CloudWatch Anomaly Detection은 기계 학습 알고리즘을 사용하여 지표에서 비정상적인 동작을 자동으로 감지합니다. 이상 감지를 사용하여 지표에서 비정상적인 급증 또는 하락을 식별하고 이에 대처하기 위한 조치를 취할 수 있습니다.
- CloudWatch Synthetics는 사용자 동작을 시뮬레이션하는 카나리아를 생성하여 애플리케이션의 가용성과 성능을 테스트할 수 있습니다. Synthetics를 사용하여 비즈니스 사용자보다 먼저 문제를 사전에 탐색하고 감지할 수 있습니다.
- CloudWatch Logs Insights Query Acceleration은 로그 쿼리 속도를 최대 10배까지 높여줍니다. Query Acceleration을 사용하면 대량의 로그 데이터를 빠르고 효율적으로 분석할 수 있습니다.
CloudWatch와 AWS 서비스 통합
출처: aws.amazon.com
AWS 시스템을 구축할 때 CloudWatch 통합은 항상 최우선 순위가 되어야 합니다. 심층적인 통합을 통해서만 모든 서비스 또는 시스템 구성 요소에서 메트릭과 로그를 수집하고 모니터링할 수 있습니다. 또한 설정 및 사용이 쉽고 통합 기능은 대부분의 AWS 서비스에 내장되어 있습니다. 따라서 AWS 클라우드 시스템에서 이점을 활용하지 않을 이유가 거의 없습니다.
AWS 리소스와 애플리케이션에 대한 포괄적인 보기를 얻고, 상태, 성능 및 가용성을 모니터링할 수 있습니다. 수집된 모든 정보를 사용하여 경보를 설정하고 AWS 환경에서 발생하는 이벤트를 기반으로 작업을 자동화할 수 있습니다.
마지막 말
AWS CloudWatch는 프로젝트의 모든 로깅, 모니터링 및 시스템 상태 시각화 요구 사항을 처리할 수 있는 포괄적인 클라우드 서비스입니다.
아키텍처에 이러한 구성 요소를 포함시키는 것은 시스템을 능동적으로 관리하고 안정성을 보장하는 방법입니다. 나중을 위해 미루지 말고 Sprint 1에서 강력한 모니터링 시스템을 구축하는 것부터 시작하십시오. 이는 나중에 분명히 도움이 될 것입니다.
다음으로, 최고의 AWS 모니터링 도구를 확인해 보십시오.