AWS

Cloud Monitoring(클라우드 모니터링) - 클라우드 배포 성능에 대해

S_N_Y 2024. 3. 9. 16:30

 

 

#0 CloudWatch Metrics(지표 제공 서비스📊)와 CloudWatch Alarms(지표 알람 서비스🛎️)

 

<CloudWatch Metric 📊 - 지표 제공 서비스>

CloudWatch는 AWS 내 모든 서비스의 성능과 요금에 대한 지표를 제공하는데 여기서 지표는 정확하게 모니터링 대상이 되는 변수(CPUUtilization, StateCheck 등)를 말한다. 그리고 지표여서 시간에 대한 내용이 들어있는 타임스탬프도 가지고 있다.

+) CPUUtilization : CPU가 현재 얼마나 사용되고 있는지

    StateCheck : EC2등이 제대로 작동하는지

그리고 모든 지표를 한 번에 볼 수 있는 CloudWatch 대시보드를 생성할 수도 있다.

 

<CloudWatch Alarms 🛎️ - 지표 알림 서비스>

지표가 임계값을 넘어가면 CloudWatch 경보가 실행된다. 먼저 희망하는 EC2 인스턴스의 수를 늘리거나 줄여서 자동 스케일링이 가능하도록하는 Auto Scaling Group과 EC2가 중지, 종료, 재시작되거나 복구하는 작업과 SNS topics에 대해 알림을 보내는 SNS 알림 작업이 있다.

(예 :유저가 EC2 인스턴스 사용률이 90%가 넘어가면 문제가 혹 발생한건지 이메일로 알려달라고 설정할 수 있는 부분이다.)

 

#1 CloudWatch Logs - 로그 파일을 수집📥

 

로그 파일은 무엇일까?🤔

어느 서버든 간에 실행되는 애플리케이션에 대해 작업 내역에 대한 기록을 시킬 것이다. 사용자에게서 수집된 로그 파일을 사용자가 트러블 슈팅을 수행할 때에 해당 로그 파일로 가서 애플리케이션의 작업이나 설명을 확인할 때 쓰인다. 

AWS에선 Elastic Beanstalk, ECS, Lambda, CloudTrail, CloudWatch Logs를 이용해 로그를 수집할 수 있는데 EC2 머신이나 온프레미스 서버에 CloudWatch Logs agents를 설치해서 해당 서버에서 AWS로 직접 로그를 가져올 수 있다.

전반적으로 CloudWatch Logs는 이 모든 로그를 수집해서 로그에 대한 실시간 모니터링을 할 수 있고 이를 통해 로그에 발생하는 모든 상황에 대응할 수가 있다! => 한 가지 서비스로 중앙화

 

+) EC2 인스턴스에서 CloudWatch Logs 작동 방식

설명을 위한 이미지

기본적으로 EC2 인스턴스는 CloudWatch Logs에 로그 파일을 전송하지 않는데 위에서 언급했듯이 EC2 인스턴스에 CloudWatch Logs agents를 생성해야 한다. 그 후에 생성한 에이전트가 CloudWatch Logs 서비스로 로그 파일을 푸쉬한다.

그리고 오른쪽 그림과 같이 CloudWatch Logs agents는 온프레미스 서버에도 설치할 수 있는데 이것을 '하이브리드 에이전트'라고 불린다.

 

#2 CloudWatch EventBridge

CloudWatch EventBridge를 사용하면 AWS 계정 내에 발생하는 이벤트에 대처할 수 있다.

=> 특정 예약을 기반으로 규칙을 트리거하는 방식

사용 사례는 다음과 같다.

크론(Cron) 작업을 예약(정기적으로 스크립트를 예약하고 싶다고 할 때)하거나 해당 권한에서 뭔가를 시도할 때(루트로 로그인할 때) EventBridge를 사용할 수 있다.

추가로 Schema Registry(스키마 레지스트리)가 있어서 이벤트 스키마를 모델링해서 스키마 모양 및 데이터 유형 등을 확인할 수 있다. 또한 모든 이벤트를 아카이브하고 이벤트 버스로 보낼 수도 있다. (무기한 또는 설정된 기간동안)

 

#3 CloudTrail - AWS에서 한 행동들이 모두 기록되는 곳📚

AWS 계정에 대한 거버넌스, 규정 준수, 감사를 제공하는 서비스이다. 계정에서 수행된 활동을 기록하고 로그 파일을 Amazon S3 버킷으로 전송하는 웹 서비스이다!

=> 계정을 사용할 때마다 기본적으로 활성화

모든 API 호출과 이벤트 기록(사실상 AWS에서 한 모든 일들)을 가져오기 때문에 이 기능은 매우 중요하다.

따라서 여기 안에서 기록된 것을 토대로 감사와 보안을 확인할 수 있는데 장기적으로 이 기록들을 보관하려면 CloudWatch Logs나 S3버킷으로 전송하면 된다. 

필자의 이벤트 기록들 - cloudtrail에서 이벤트 기록 탭을 누르면 확인할 수 있다.

 

#4 X - Ray🩻 - 합져진 애플리케이션들의 로그를 분산 추적

기본적으로 몇몇 사람들은 production환경에서 디버깅을 하는데 애플리케이션이 배포됐을 때, 기본적으로 로컬에서 테스트한 뒤 CloudWatch Logs 등에 로그 상태를 추가하고 production환경에서 다시 배포해서 문제를 확인한다.

=> 그러나 이런 식으로 하면 여러 애플리케이션의 로그가 남아버린다.. (이것들을 또 모두 결합해야해서 로그 분석이 어려워진다🥵)

...

이 문제를 해결하려면 AWS X-Ray라는 서비스를 이용하면 된다.

AWS X-Ray를 사용하면 애플리케이션을 추적하고 시작적으로 분석할 수 있는 자료도 준다. (각 서비스에서 일어나는 일을 전체적으로 볼 수 있다)

요청이 잘못됐거나 장애나 성능 같은 것을 한 눈에 확인할 수 있고 이를 통해 마이크로서비스 아키텍처의 종속성도 이해하 수 있다. 

따라서 AWS X-Ray는 서로 통신할 때 성능을 분석해서 근본적인 원인을 분석해서 문제 해결할 수 있고, 그래프를 눈에 보여주는 등 유용하게 사용할 수 있다!

 

#5 CodeGuru - 머신 러닝으로 코드를 검토하고 권장사항을 주는 서비스 ☑️

머신 러닝 기반의 서비스로 2가지를 실행한다. 1. 자동화된 코드를 검토(품질개선)하거나 2. 애플리케이션 성능 사항 분석한 뒤, 권장한다.

개발자가 코드를 푸쉬하면 다른 개발자가 코드를 검토하고 코드가 production에 배포되면 코드의 성능을 모니터링한 뒤, 버그를 탐지할 수도 있다. 

=> 이런 기능들을 CodeGuru에서 자동화된 방식으로 수행

1. CodeGuru Reviewer : 정적 코드 분석으로 자동으로 코드 리뷰를 실행한다. (코드를 CodeCommit이나 깃허브같은 레포지토리에 배포하면 CodeGuru는 전체 코드줄을 확인해서 버그나 메모리 누수와 같은 문제사항을 발견하면 그에 따른 권장사항을 알려주는 것이다..!

2. CodeGuru profiler : production이나 런타임 도중에 애플리케이션 성능에 관한 권장 사항을 제공한다.

 

#7 AWS Health DashBoard - 서비스/사용자 상태 대시보드🗓️

 

콘솔 가장 상단 종모양을 선택하면  Account Health DashBoard를 활성화할 수 있다.

< Service Health DashBoard - 서비스 히스토리 부분 >

서비스 상태 대시보드 안에선 서비스 상태와 모든 region이 표시가 되고 서비스가 어떻게 작동했는지, 어떤 문제가 있었는지 region별로 추적할 수 있다. (기록도 볼 수 있다.) -> RSS 피드도 있어서 구독 가능

이전에는 AWS Service Health DashBoard라고 불려왔다. 지금은 바로 아래에서 설명하는 사용자 부문인 PHD와 합쳐져 있다.

< Account Health DashBoard - 사용자 부분 >

사용자에게 직접적인 영향을 미치는 이벤트가 AWS 상에서 발생했을 때, 알림과 해결방안을 같이 보내준다. 

이것도 서비스 히스토리 부분과 나뉘어져서 AWS Personal Health Dashboard(PHD)라고 불렸고 마찬가지로 지금은 Account Health DashBoard라고 불린다.

...

결론적으로 Service Health DashBoard에는 모든 서비스의 일반적인 상태가 표시되지만 Account Health DashBoard에서는 사용자의 계정과 리소스에서 사용 중인 서비스의 성능과 가용성을 확인할 수 있다

+) Account Health DashBoard에서는 사용자의 모든 AWS 조직의 데이터를 집계할 수 있다! 

 

#8 개인 상태 대시보드 설정해보기

아까 보여줬던 종모양에서 이벤트보기를 클릭하면 나오는 Health DashBoard 메인 페이지

1. Service Health DashBoard 확인하기

Service History 들어가면 AWS에 있는 모든 서비스의 상태를 region별 날짜별로 확인할 수 있다.

2. Account Health DashBoard 확인하기

Open and recent issues에서 확인이 가능한데 제 계정에는 이슈가 없어서 뜨지않지만 문제가 있다면 상단 작은 종 아이콘에 표시가 되고 이 부분에도 정확하게 어떤 이슈인지 확인이 가능하다.

이슈는 미해결한 문제나 스케줄이 변경된 사항들, 기타 알림 등이 제공된다..!

 

✅짤막한 개념 정리

CloudTrail은 AWS 계정 내에서 이루어진 이벤트/API 호출 기록을 기록할 수 있으며, 이는 누가 리소스를 삭제했는지 확인하는 데 도움이 되니 먼저 이걸로 조사해야 한다고 한다.