- 애플리케이션의 유용한 정보를 측정값으로 구성하려면 이들 정보를 생성하는 코드를 작성해 HTTP 엔드포인트로 출력해야 한다.
- 주요 프로그래밍 언어에는 프로메테우스의 라이브러리가 제공되므로 이를 사용한다.
NASA 오늘의 천체 사진 애플리케이션에 적용
프로메테우스 라이브러리 사용
- 프로메테우스 클라이언트 라이브러리를 사용해 각 컨테이너에 측정값을 출력하는 엔드포인트를 만든다.
- Go: 프로메테우스를 지원하는 promhttp 모듈을 추가
- Java: micrometer 패키지 추가, 이 패키지는 스프링 애플리케이션에서 프로메테우스 지원을 제공
- Node.js: prom-client 패키지가 프로메테우스 지원을 제공
- 이 측정값의 정보는 런타임 종류마다 다르지만, 프로메테우스의 포맷을 따른다.
측정값 조회 url
- Go:
http://localhost:8010/metrics
- 이 데이터를 생성하기 위해 따로 코드를 작성하지는 않았다.
- 애플리케이션에 Go 언어용 프로메테우스 클라이언트 라이브러리만 추가하면 된다.
- Java:
http://localhost:8011/actuator/prometheus
- Node.js:
http://localhost:8012/metrics
측정값의 포맷
- 프로메테우스의 측정값에 몇 가지 유형이 있다.
- 이 애플리케이션에서 사용한 유형은 그중에서도 가장 간단한 종류인 카운터와 게이지다.
- 카운터의 값은 현상 유지 혹은 증가만 가능
- 게이지의 값은 증가와 감소가 모두 가능
애플리케이션에 상세한 모니터링을 추가할 때 참고 목록
- (만약 있다면) 외부 시스템과의 통신에 걸린 시간과 성공적으로 응답을 받았는지 여부에 대한 기록. 이 측정값으로 외부 시스템이 애플리케이션의 속도나 이상 상태에 영향을 줬는지 알 수 있다.
- 로그로 남길 가치가 있는 모든 정보. 로그로 남기는 것보다는 측정값으로 수집하는 편이 메모리, 디스크 용량, CPU 시간 면에서 저렴하고 주세를 볼 수 있도록 시각화하기도 쉽다.
- 사업 부서에서 필요로 하는 애플리케이션의 상태 및 사용자 행동에 관한 모든 정보, 측정값을 활용하면 과거 정보를 수고를 들여 보고하는 대신 실시간 정보로 대시보드를 구성할 수 있다.