Prometheus Pulling (pros and cons)
What is Prometheus?
Prometheus SoundCloud에서 개발된 애플리케이션이나 서버, OS 등 다양한 대상으로 부터 지표를 수집/모니터링할 수 있는 tool kit으로, 지표 수집을 통한 모니터링을 주요 기능으로 하고 있다. Prometheus의 아키텍쳐는 다음과 같다.

Pulling
Prometheus는 Pulling 방식으로 데이터를 수집한다. 설정 파일의 모니터링 대상 목록에 대한 IP나 기타 접속 정보(prometheus.yml
파일의 scrape_config
)를 바탕으로 모니터링 대상의 자원 정보(metric)를 읽어 온다.
만약에 읽어오려는 정보가 Prometheus 데이터 포맷을 지원하지 않는다면 별도의 exporter를 이용해서 쉽게 읽어올 수 있다.(Node Exporter, Nginx Exporter, ...)
그리고 Pulling으로 metric을 수집하기가 어려울 때 (배치 또는 스케쥴 작업 같은 서비스, ...), Push gateway를 이용하면 Push gateway가 push 된 metric을 보관하고 있다가 Prometheus가 Pulling하는 방식으로 원하는 metric을 수집할 수 있다.
이렇게 Prometheus는 pulling 방식의 구조를 채택함으로써, 모든 metric 정보를 중앙 서버로 보내지 않아도 되어 수집 서버의 부하로 인한 metric 수집 실패 위험성(push 방식의 단점)이 적다고 할 수 있다.
하지만 일정 pulling 주기를 기반으로 metric을 가져와 pulling하는 순간의 스냅샷 정보만 알 수 있기 때문에 빠른 속도로 발생하는 대량의 API 호출 또는 HTTP 요청(per-request billing, ...)을 모니터링할 때는 좋은 선택이 아닐 수 있다.