프로메테우스란?
- 메트릭 수집, 시각화, 알림, 서비스 디스커버리 기능을 모두 제공하는
오픈 소스 모니터링 시스템
- 처음엔 SoundCloud에서 자사 모니터링 시스템 구축을 목적으로 만들었으나 2016년도에 CNCF 프로젝트로 편입됨 (오픈소스 프로젝트)
- 현재는 Grafana Labs에서 유지 보수중
- CNCF(Cloud Native Computing Foundation)
- 컨테이너와 관련된 다양한 기술적인 문제들을 오픈소스로 해결하는 것을 목표로 하는 단체 (쿠버네티스도 여기 소속)
프로메테우스 특징
Pull 방식
의 메트릭 수집, 시계열 데이터 저장
PromQL
을 활용하여 저장된 시계열 쿼리 및 집계
- 서비스 디스커버리
프로메테우스 구조
Prometheus Server
- 시계열 데이터를 생성하고 저장하는 핵심 서비스
- Retrieval
- 서비스 디스커버리로부터 모니터링 대상을 받아오고 Exporter로부터 주기적으로 그 대상의 메트릭을 수집하는 모듈
- TSDB
- 시계열 데이터를 저장하는 자체 스토리지 엔진
- 외부에 DB를 두는 것이 아니면 프로메테우스는 로컬에 데이터를 저장해둔다.
- HTTP Server
- 통신할 때 사용하는 HTTP Server
Alertmanager
- 특정 메트릭이 임계치를 넘어가거나 경계에 잡혔을 때 이메일, 슬랙 등을 통해 알림 전송 가능
Data Visualization
- 프로메테우스 자체 web UI가 있어 데이터 시각화가 가능
- 시각화 기능은 약한 편이라 보통
Grafana
라는 대시보드 툴로 대체해서 쓰는 편
PromQL
이라는 쿼리를 사용해서 데이터 조회
Service Discovery
- 서비스 디스커버리란 MSA같은 분산 환경에서 서비스 클라이언트가 서비스를 호출할 때 서비스의 위치를 알아낼 수 있는 기능
- 프로메테우스는 서비스 디스커버리기능을 지원함 (쿠버네티스 등등)
- 쿠버네티스에 존재하는 모든 노드와 팟의 메트릭을 수집 가능
Exporter
- 타겟 시스템에서 메트릭을 읽어서 프로메테우스가 풀링 할 수 있도록 하는 모니터링 에이전트
- 데이터를 가져오고 싶은 시스템에 설치하는 프로그램
Pushgateway
- 프로메테우스가 메트릭을 푸시할 수 있게 지원
- 푸시된 메트릭을 프로메테우스에서 가져갈 수 있도록 중재자 역할 수행
장단점
장점
- Pull 방식의 구조를 채택해서 모든 메트릭 정보를 중앙 서버로 보내지 않아도 됨
- 다양한 써드파티 프로그램과의 연동을 통해 운영이 쉬움
- 구조가 복잡하지 않고 간단
- 모든 데이터를 수집하지 않고 일정 주기로 메트릭을 수집해 애플리케이션에 무리 없음
단점
- 클러스터링이 불가능
- 스케일을 키우고 싶으면 프로메테우스를 여러개 구축해 계층형으로 연결해야 함
- 모든 데이터를 수집하지 않아서 대략적인 데이터 흐름을 보긴 좋지만 모든 데이터를 필요로하는 목적에는 부적합
- APM(Application Performance Monitoring)같이 모든 로그를 추적해야하는 상황에는 좋지 않음
- Pulling하는 그 순간의 스냅샷 정보만 알 수 있음
Grafana
그라파나란?
- 오픈소스 메트릭 데이터 시각화 도구
- 다양한 데이터소스들의 데이터 시각화를 지원
- InfluxDB, OpenTSDB, AWS CloudWatch, Azure Monitor, ElasticSearch 등등
프로메테우스와의 조합
- 프로메테우스 자체의 시각화 도구가 빈약함
- 그래서 그라파나와 함께 쓰는 경우가 많음
- 프로메테우스로 데이터를 수집하고 그라파나로 해당 데이터를 보여주는 대시보드 구성
도커를 이용해 프로메테우스와 그라파나를 구축해보니 생각보다 간편해서 놀라웠다.
가지고 놀면서 사용법을 잘 익봐야겠다.ㅎㅎ