Mornitoring 기본 개념

Son_Doobu96·2023년 2월 28일
0

DevOps 이론

목록 보기
24/25

◎ 모니터링이란 무엇인가

모니터링이란 지속적 또는 비정기적 관찰을 통해 발생할 수 있는 문제를 확인하고 이에 대한 대응을 하기 위해 필요한 메트릭을 수집하는 일련의 과정이다.

■ 무엇을 수집하는가?

모니터링에서 수집하는 지표를 메트릭(metric)이라고 한다.
메트릭이란 시간에 따라 측정한 결과값으로 어떠한 수치로서 나타낼 수 있는 값을 말한다.

  • CPU 사용량
  • 성공한 요청의 수
  • 메시지 대기열의 길이

■ 모니터링의 목표?

  • 시간을 기준으로 측정되는 주요 메트릭을 최소화하여 고가용성을 달성한다.
  • 사용량을 추적하여, 배포에 앞서 세운 가설들을 검증하고 개선해나간다.

▶ 구글의 모니터링 목표와 메트릭

  • 장기적인 트렌드 분석 (Analyzing long-term trends)
    • 데이터베이스가 얼마만큼의 용량을 차지하며, 얼마나 빨리 용량이 증가하는가?
    • DAU(일간 활성 사용자수)는 얼마나 빨리 증가하는가?
  • 시간의 경과 및 실험 그룹 간의 비교 (Comparing over time or experiment groups)
    • 어떤 데이터베이스를 썼을 때 쿼리가 빠른가?
    • 캐시용 노드를 추가했을 때, 캐시 적중률(hit rate)이 얼마나 향상되는가?
    • 지난 주보다 사이트가 얼마나 느려졌는가?
  • 경고 (Alerting)
    • 인프라의 어떤 부분이 고장났는가? 혹은 고장날 수 있는가?
      구글 SRE-BOOK

▶ 마이크로소프트의 모니터링 목표와 메트릭

■ 모니터링의 구분

▶ 블랙박스 모니터링

  • 관찰자가 박스를 기준으로 밖에서 바라본다.
  • CPU/메모리/스토리지 등 인프라 수준의 모니터링에 유용하다.
  • 클러스터 작동 여부 등 쿠버네티스 컴포넌트 그 자체를 모니터링
  • 단점으로는 애플리케이션이 왜 오류를 내는지 알 수 없다.

▶ 화이트박스 모니터링

  • 관찰자가 박스를 기준으로 안에서 바라본다.
  • HTTP 요청, 500에러의 발생 횟수, 레이턴시 등이 이에 해당한다.
  • 현상이 발생한 근거에 집중한다.

■ 모니터링시의 주의점

▶ 계층에 따라 모니터링을 구분한다.

  • 쿠버네티스
    • 노드 > 클러스터 컴포넌트 > 파드
  • ECS
    • 클러스터 > 서비스 > 태스크
  • EC2: 인스턴스에 대한 메트릭
  • Lambda: 함수에 대한 메트릭

▶ Proxy 서버
모니터링에서 가장 각별하게 주의해야 할 점은 내가 세운 목표를 위해 얻어야 하는 지표가 리소스에 따라 어떻게 다른지 확실하게 아는것이다.

WAS 서버를 모니터링한다면 각 노드의 컴퓨팅 자원을 모니터링하여 서버의 작동이 원활한지 부하는 심하지 않은지 체크했다면
앞단에 위치하게 되는 Proxy서버의 경우에는 HTTP 라우팅에 그 목적이 있기 때문에 요청 그 자체와 관련된 메트릭을 모니터링해야 한다.


■ 어떤 메트릭이 중요한가?

네 가지의 황금 시그널 (The Four Golden Signals)

◐ 대기 시간 (Latency)
대기 시간은 서비스가 요청에 응답하는 데 걸리는 시간을 나타냅니다. 핵심은 지속 시간뿐만 아니라 성공적인 요청의 대기 시간과, 실패한 요청의 대기 시간을 구별하는 데에도 중점을 두어야 합니다.

◐ 트래픽 (Traffic)
트래픽은 서비스에 대한 수요 측정입니다. 대표적인 예로는, 초당 HTTP 요청 수가 있습니다.

◐ 오류 (Errors)
오류는 실패한 요청/전체 요청 의 비율로 측정됩니다. 대부분의 경우 이러한 실패는 명시적이지만(예: HTTP 500 오류) 암시적일 수도 있습니다(예: "결과 없음"이라는 메시지를 본문으로 전달하는 HTTP 200 응답).

◐ 포화 수준 (Saturation)
포화는 서비스 또는 시스템 리소스를 “얼마나 가득 채워서 사용하는가”로 설명할 수 있습니다. 전형적인 예로는 과도한 CPU 자원 사용이 있습니다. CPU 자원이 부족하면, 스로틀링을 초래하고 결과적으로 응용 프로그램의 성능을 저하시킵니다.

■ 모니터링의 패턴?

◐ USE 패턴
USE 패턴은 모든 리소스에 대한 사용률(Utilization), 포화도(Saturation), 오류(Errors)를 체크하는 패턴을 의미합니다.

◐ RED 패턴
RED 패턴은 비율(Rate), 오류(Errors) 및 기간(Duration)을 주요 메트릭으로 정의하는 패턴입니다.


■ 모니터링의 핵심

SLA(Service Level Agreements) : 서비스 수준 협약
서비스를 운영하는데 있어서 서비스 제공자와 사용자간에 맺는 약속이다.
"어느 정도의 서비스를 제공해야 제대로 제공했는지?"에 대한 명확한 명시가 되어 있다.

따라서 이를 통해 명문화 되는 것이 SLO(Service Level Objectives) 서비스 수준 목표이다. 이를 통해 서비스 제공자와 사용자는 약속의 기준점을 정할 수 있다.

그리고 그 약속의 기준의 잣대가 되는 것이 SLI(Service Level Indicator) 서비스 수준 척도이다. 서비스의 수준을 판단할 수 있는 몇 가지를 정량적으로 측정한 값으로 주요 예시는 아래와 같다.

  • 응답 속도: 요청에 대한 응답이 리턴되기까지의 시간
  • 에러율: 전체 요청 수 대비
  • 처리량(throughput): 초당 처리할 수 있는 요청 수
  • 가용성: 서비스가 사용 가능한 상태로 존재하는 시간의 비율
  • 내구성: 데이터 저장이 중요한 목적인 서비스의 경우 특히 중요

■ 지표를 설정하는법?

지표는 판단의 근거이다. 따라서 서비스의 분류에 따라 중요한 지표가 무엇인지를 명확하게 설정해야 한다.

  • 사용자가 직접 대면하는 시스템
    • 보통 프론트엔드에 해당하며, 이 경우 가용성, 응답 시간, 처리량이 중요합니다.
  • 저장소 시스템
    • 응답 시간, 가용성, 내구성이 중요합니다.
  • 빅데이터 시스템
    • 데이터 파이프라인이 이에 해당하며, 처리량, 그리고 엔드포인트 간 응답 시간이 중요합니다.

■ 척도의 수집하는 방법?

척도란 SLI의 정의를 표준화시키는 것이라고 생각하면 편하다.

예를들어
집계 간격은 1분
집계 범위는 클러스터에서 수행되는 모든 태스크
측정의 빈도는 매 10분
집계할 내용은 전체 GET 요청 등이다.

profile
DevOps를 꿈꾸는 엔지니어 지망생!

0개의 댓글