Infra & DevOps/Observability

[Prometheus]모니터링 방식

용감한 개복치 2022. 5. 10. 18:44

질문정리


Q1. 모니터링 시스템에는 메트릭 수집을 위한 두가지 방식의 메커니즘이 존재합니다. 바로 Pull 방식과 Push 방식입니다. 프로메테우스는 어떤 방식의 메커니즘을 사용하나요? 또한 Pull 방식과 Push 방식은 어떻게 다르며, 장단점은 무엇인지, 또한 해당 방식을 사용하는 모니터링 도구는 어떤 것들이 있는지 연구해보세요.

 

A.

 모니터링 시스템의 메트릭 수집이란, 서비스를 운영함에 따라 발생하는 여러 상황들에 대해 특정 지표를 수집하여 상황을 통제, 예측, 관측 하기 위한 행위이다. 여기서 말하는 특정 지표를 메트릭이라고 한다. 보통 성능을 알고싶다면 메모리, 서버를 알고싶다면 cpu, db를 알고싶다면 캐시 히트율, 페이지 기대수명 등등 다양하다.

 

 이러한 정보를 알아오는 방식에는 크게 두 가지가 있다.

  • Pull 방식 : 데이터가 필요해 -> 보유한 곳으로 가서 가져오자
    • prometheus, datadog, collectd가 채택 중
    • 에이전트 자체에 메트릭 정보 포함
    • 에이전트가 메트릭 수집, 수집된 데이터는 중앙서버가 에이전트에서 가져감
    • 중앙서버가 데이터를 가져가기만 함 -> 중앙서버가 어떤걸 가져가야하는지 알 필요가 없음 -> 데이터 백엔드는 메트릭을 설정함에서 유연성을 가짐.
    • 가져올 데이터의 양과 종류의 조절을 중앙에서 한번에 통제 가능
    • 데이터 백엔드에 문제가 생겨도 수집을 할 중앙서버는 별개 -> 시스템 이중화, HA 에서 유리
  • Push 방식 : 데이터 여기 있어 -> 필요한곳으로 보내줄게
    • nagios, zabbix가 채택 중
    • 메트릭은 중앙에서 정의, 할당된 에이전트에 푸시 -> 중앙집중형, 중앙 모니터링 시스템이 뭘 가져올지 어디서 가져올지 다 알아야함
    • 수집 주체가 정해져있고 수집 대상은 가변적이어도 된다 -> 오토스케일링에서 pull 보다 유리