본문 바로가기

Backend

모니터링 시스템 구축을 위한 리서치

Index

0) 요구사항

  • 우리팀 서버에 문제가 생겼을 때 알 수 있어야 한다.
  • 현 시스템이 DB 로그에 보는 것에 익숙하지 않다.
  • Kubernates에 접근하기 어려우며, 서버 배포 환경을 이해하기 어려운 구조이다.
  • API Application 필터링 해서 로그를 봐야 한다.
  • Kubernates는 로그를 보는데 가독성이 떨어진다. → 시각화의 필요성
  • Kubernates 인스턴스 모니터링 + 각각의 pod 요소들의 전반적인 메트릭은 Prometheus가 보기 편하다.
  • 서버 모니터링과 서비스 모니터링의 차이점
    • 서버 모니터링 : 여러대의 서버 중 1대라도 죽는 경우를 모니터링
    • 서비스 모니터링 : 사용자 입장에서 서비스가 안되는 경우가 모니터링

*** 경고 시스템의 구성 요건**

  • 우리 팀이 빠르게 이해할 수 있는 메시지
  • 심각도 구분
  • 경고 주기 설정
  • 효과적인 채널 선택 (Ex. email)
  • 정확한 담당자에게 전달
  • 모니터링 시스템 구축 목적
    • 빠른 장애 탐지
    • 다운타임 최소화
    • 의사결정 도움
    • 자동화

적용 사례

1) Prometheus → Alert Manager → Slack 개념

Prometheus : 서버에 접근해서 정보를 pull 해오는 데이터 수집기 서버

  • Prometheus 서버가 노드나 프로그램 등에 데이터를 요청하면, 노드나 프로그램 등은 데이터를 보내주면 된다.

postgres_exporter 깃허브 https://github.com/prometheus-community/postgres_exporter

  • 정보 수집을 하는 exporter들을 통해서 일정 간격으로 정보를 수집하라는 명령
  • 수집한 정보들을 바탕으로 자신의 DB(ex. postgres)에 저장하고
  • Grafana가 그 정보를 보고자 하면 제공하는 것이 Prometheus의 역할이다.

prometheus의 단점 사례

  • Prometheus의 컨테이너가 많은 양의 메모리를 사용할 수 있는 가능성

사례1) Prometheus와 연동한 Grafana 대시보드를 보니 Prometheus가 시작된 지 불과 5분 만에 시계열 수가 2,162,256 까지 급격하게 증가했던 사례

 

최종 목표

Kubernates의 Cluster들의 메트릭을 Prometheus로 수집 → Grafana 등의 web UI를 통해 시각화

 

2) 설치 방법

2-0) Slack

slack k8s-alert-test 개인 채널 생성 → Incoming WebHooks 추가

2-1) prometheus 설치

brew install prometheus

2-2) Alert Manager 설치 by Docker https://github.com/prometheus/alertmanager

$ docker run --name alertmanager -d -p 127.0.0.1:9093:9093 [quay.io/prometheus/alertmanager](<http://quay.io/prometheus/alertmanager>)