본문 바로가기

컴퓨터/도커

8. 프로메테우스 AlertManager

모니터링과 알림은 안정적인 애플리케이션 운영의 핵심이다.

특히, 쿠버네티스 환경에서 다양한 애플리케이션이 배포되고 운영되는 상황에서, 시스템의 상태를 실시간으로 파악하고 문제가 발생했을 때 신속하게 대응할 수 있는 체계를 구축하는 것이 중요하다.

따라서 Prometheus와 Alertmanager를 활용하여 알림을 설정하는 방법에 대해서 이야기를 할 것이다.

 

프로메네우스 알림

 

 

Prometheus: 메트릭 수집 및 평가

Prometheus는 쿠버네티스 클러스터와 애플리케이션에서 다양한 메트릭을 수집하고 평가한다.

이 메트릭들은 시스템 상태를 파악하는 데 필수적이다.

예를 들어, CPU 사용량, 메모리 사용량, 네트워크 트래픽 등이 주요 모니터링 대상이다.

Prometheus는 설정된 규칙에 따라 이러한 메트릭을 지속적으로 평가하며, 임계치를 초과하거나 비정상적인 상태가 감지되면 경고를 트리거한다.

 

 - 리소스 사용량 기반 규칙

CPU 사용량

특정 애플리케이션이나 컨테이너의 CPU 사용량이 일정 임계치를 초과할 때 이는 시스템이 과부하 상태에 있을 수 있음을 의미함으로 경고를 생성한다.

 

메모리 사용량

애플리케이션이나 노드에서 사용 중인 메모리가 특정 비율을 넘을 때 애플리케이션의 성능 저하나 시스템 충돌을 초래할 수 있기 때문에 경고를 발생시킨다.

 

디스크 사용량

노드나 특정 디스크 파티션의 사용량이 매우 높아질 경우 디스크가 가득 차면 데이터 저장이 불가능해져 시스템 문제가 발생할 수 있기 때문에 경고를 트리거한다.

 

네트워크 트래픽

네트워크 인터페이스에서 비정상적으로 높은 트래픽이 감지되거나, 반대로 너무 낮은 트래픽이 감지될 때 네트워크 공격 또는 시스템 오류의 징후일 수 있기때문에 경고를 발생한다.

 

 - 애플리케이션 성능 및 상태 규칙

응답 시간

특정 서비스나 애플리케이션의 응답 시간이 지정된 기준을 초과할 경우 경고를 생성한다.

예를 들어, 웹 서비스의 응답 시간이 너무 길어질 경우 사용자가 불만을 느낄 수 있기 때문에 이를 조치하기 위한 알림을 발생시킨다.

 

HTTP 상태 코드

HTTP 요청에 대한 오류 응답이 일정 비율 이상 발생할경우 서비스에 장애가 발생하거나 오류가 생긴것으로 추정할 수 있기 때문에 경고를 발생시킨다.

 

 - 시스템 상태 규칙

노드 가용성

클러스터 내 특정 노드가 응답하지 않거나 오프라인 상태가 될 경우 경고를 발생시켜 노드를 복구하거나 대체할 수 있게 한다.

 

클러스터 상태

쿠버네티스 클러스터의 전반적인 상태를 모니터링하여, API서버와 같은 특정 구성 요소가 비정상적인 상태에 있을 경우 경고를 생성하여 클러스터의 안정성과 가용성을 유지시킨다.

 

 - 비즈니스 메트릭 기반 규칙

트랜잭션 수

일정 기간 동안 처리된 거래나 트랜잭션의 수가 예상보다 낮거나 높을 때 경고를 발생시켜 서비스의 사용 패턴 변화나 장애를 파악할 수 있게 한다.

 

사용자 활동

사용자 로그인 수, 주문 수 등의 비즈니스 관련 메트릭이 갑작스럽게 변동할 때 경고를 생성하여, 비즈니스 운영에 문제나 기회가 발생했음을 알 수 있게 해준다.

Alertmanager: 알림 처리 및 라우팅

Alertmanager는 Prometheus로부터 전달받은 경고를 처리한다.

여기서 알림의 라우팅, 집계, 조절 등을 수행하며, 특정 조건에 맞는 수신자에게 알림을 전달한다.

예를 들어, 알림을 Slack, 이메일 등으로 라우팅할 수 있고, 이 과정에서 알림의 우선순위를 설정하고, 중복된 알림을 집계하여 효율적으로 관리할 수 있다.

Slack으로 알림 전송

Alertmanager는 설정에 따라 Slack의 특정 채널로 알림을 전송할 수 있다.

이를 위해서 외부 애플리케이션이나 서비스가 Slack 채널로 메시지를 전송할 수 있도록 해주는 HTTP 기반의 인터페이스인 Slack Webhook을 사용해야 한다.

수신을 위한 slack webhook

이때 Slack Webhook URL을 사용하여 메시지를 전송하며, 이 URL을 통해 JSON 형식의 데이터를 수신하여 데이터가 Slack 메시지로 변환되어 지정된 채널에 게시된다.

 

Slack에 Webhook 연결하기

이제 Slack에 Webhook을 설정하여 Prometheus Alertmanager와 연결하는 방법을 알아보겠다.

먼저 Slack 워크스페이스에 로그인한 후, "Incoming Webhooks" 앱을 추가한다.

그리고 새로운 Webhook URL을 생성하고, 슬랙에서 #알림과 같이 알림을 받을 채널을 선택한다.

이후 Alertmanager 설정에서 사용하기 위해서 생성된 Webhook URL을 복사한다.

 

Alertmanager 설정 파일에 복사한 Slack Webhook URL을 추가하고, 설정 파일에서 Slack 알림을 받을 수신자를 정의하고, 알림의 형식을 설정한다.

설정이 완료되면, Prometheus에서 수집된 메트릭이 사용자가 지정한 특정 조건을 충족할 때, 알림이 Slack으로 전송되도록 구성한다.

 

결론

Prometheus와 Alertmanager를 사용하여 Slack에 알림을 설정함으로써, 쿠버네티스 클러스터에서 발생하는 중요한 이벤트를 실시간으로 모니터링하고 대응할 수 있는 체계를 구축할 수 있다.

서비스를 운영하는 사람은 Slack에서 알림을 받아 발생한 문제를 신속하게 파악하고, 적절한 조치를 취할 수 있다.

또한, 문제 해결 후에는 Alertmanager가 다시 Slack에 해결 알림을 보내어, 프로젝트를 진행하는 모든 구성원이 문제 해결 상황을 공유할 수 있다.