CloudNet@ 팀의 가시다님께서 Leading 하시는 PKOS 2기 Study 내용 요약
해당 Kubernetes Study 는 '24단계 실습으로 정복하는 쿠버네티스' 책을 기반으로 진행 중입니다.
이번 포스팅에서는 프로메테우스에서 장애 메시지 전달을 위해 사용하는 얼럿 매니저(Alert Manager) 에 대해 알아보겠습니다.
0. 실습 과제
- 프로메테우스 & 얼럿 매니저의 경고 기능 확인
- Slack 채널을 통한 경고 메시지 전달
0.1. Prometheus Stack 설치
kube-prometheus-stack 45.8.1 · prometheus/prometheus-community
kube-prometheus-stack collects Kubernetes manifests, Grafana dashboards, and Prometheus rules combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with Prometheus using the Prometheus Operator.
artifacthub.io
상황에 맞게 설정 변경 후 배포
1. Alert Manager
프로메테우스는 임곗값 설정에 의해 경고 메시지가 발생하면 이를 얼럿 매니저에게 푸시 이벤트로 전달하고,
얼럿매니저는 이를 그룹화, 일시 중지(Silence) 등의 가공 과정을 거쳐 이메일, Slack 등을 통해 사용자에게 전달합니다.
출처) https://www.oreilly.com/library/view/prometheus-up/9781492034131/ch18.html
1.1. 경고 시스템 구성 요건
- 사용자가 빠르게 이해할 수 있는 메시지
시스템 경고 메시지만으로 운영자는 장애의 근본 원인을 빠르게 파악할 수 있어야 한다.
ex) 시간에 따른 변화량 그래프
- 심각도 구분, 경고 주기 설정
너무 잦은 경고 메시지 발송은 담당자에게 피로감을 줌.
정작 필요한 메시지를 놓치는 상황이 발생하므로 심각도와 발송 주기를 적절하게 관리
- 효과적인 채널 선택
슬랙, 이메일, 문자 등
- 정확한 담당자에게 전달
에러 메시지별 구분, 심각도에 따라 전체 시스템 담당자 조회 기능 추가
1.2. 프로메테우스 경고 기능
프로메테우스 Web UI - Alert
- Inactive 비활성화
프로메테우스 룰에 등록한 메시지 중 정상적인 상태
- Pending 지연
설정된 임곗값을 초과해서 경고 상황이 발생했으나, 메시지 전달 전까지 설정한 임곗값 시간을 초과하지 않은 상태
이를 통해, 오탐과 자동 복구된 에러 메시지 처리
- Firing 경보
임곗값과 임계 시간을 초과해서 경보가 발생한 메시지.
해당 메시지는 얼럿매니저에 전달되어 얼럿매니저를 통해 담당자에게 전달됨
Watchdog 메시지는 얼럿매니저 정상 작동 여부를 확인하기 위해 발생하는 메시지, 실제 장애와는 관련이 없습니다.
1.3. 얼럿매니저 경고 기능
얼럿매니저 Web UI
- Silence 일시 중지
작업 등의 계획된 서비스 다운으로 경고 메시지를 받고 싶지 않을 때, 임시 중단하도록 설정 가능
- Status 상태
얼럿매니저 설정 확인, 메시지를 전달 받을 방법 (슬랙, 텔레그램 등) 확인 가능
2. Alert Manager 활용
2.1. Slack 연동
Alert Manager 는 메시지 전달을 위한 설정을 alertmanager.yaml 에서 관리합니다.
해당 파일은 프로메테우스 헬름 차트의 values.yaml 을 수정하면 됩니다.
앞서 프로메테우스 스택으로 설치했기 때문에, Alert Manager 설정 파일 생성 후 헬름 업그레이드로 헬름 차트를 변경하겠습니다.
헬름 업그레이드
반영 되면 해당 슬랙 채널에 알림이 전달됩니다.
2.2. Silence 기능
시스템 유지 보수 등과 같이 서비스를 계획적으로 중단할 경우, 경고 메시지 전송 기능을 일시 중지할 수 있습니다.
2.3. PrometheuseRule 정책 설정
프로메테우스는 CRD 를 통해 규칙을 관리합니다.
- 해당 CRD 에는 여러 규칙이 있지만 실습을 위해 Node Exporter 의 FileSystem 관련 정책을 변경하겠습니다.
여유 공간이 50% 미만이면 경고 발생 규칙
NodeFilesystemAlmostOutOfFiles 규칙을 찾아 다음과 같이 변경합니다.
Worker Node 에 접속하여 임의의 큰 파일을 생성합니다.
프로메테우스 UI
얼럿매니저 UI
슬랙 메시지