구글이나 유튜브에서 Native Histogram을 검색하면, 아래와 같이 count, sum이 같이 표시되는 예시 화면을 쉽게 찾아볼 수 있다 (유튜브링크)

최근 또는 최신 버전의 Prometheus를 사용한다면, 검색 결과가 예시들이랑 달라서 '내가 수집한게 Native Histogram이 맞나?'라는 생각을 하게될 수도 있을것 같아서 해당 글을 작성한다
docker compose를 이용해 2개의 Prometheus를 띄우고, go client 앱을 통해 Native Histogram 데이터를 수집하는 좋은 예시가 있다
깃허브 링크
README에 설명된 대로, git clone을 진행한 후 docker compose를 실행시키면 간단하게 테스트를 진행할 수 있다
git clone https://github.com/grafanafans/play-with-prometheus-native.git
docker-compose up -d
localhost:9090으로 접속해서 아래 화면과 같이 http_request_durations를 검색하면 Histogram으로 검색된다

localhost:9091로 접속해서 검색하면 Histogram이 아닌 Counter로 검색된다

차이가 나는 이유는 Prometheus의 Native Histogram 기능을 활성화 했는지의 여부 때문인데, docker-compose.yml 파일에서 Prometheus 실행 옵션을 보면 확인할 수 있다
--enable-feature=native-histograms 옵션으로 해당 기능을 On 할 수 있다
version: '3.4'
services:
prometheus:
image: prom/prometheus:v2.40.0
command:
- --config.file=/etc/prometheus/prometheus.yml
- --log.level=error
- --storage.tsdb.path=/prometheus
- --web.console.libraries=/usr/share/prometheus/console_libraries
- --web.console.templates=/usr/share/prometheus/consoles
- --enable-feature=native-histograms
- --enable-feature=exemplar-storage
volumes:
- ./config/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-1-data:/prometheus
ports:
- 9090:9090
prometheus2:
image: prom/prometheus:v2.40.0
command:
- --config.file=/etc/prometheus/prometheus.yml
- --log.level=error
- --storage.tsdb.path=/prometheus
- --web.console.libraries=/usr/share/prometheus/console_libraries
- --web.console.templates=/usr/share/prometheus/consoles
- --enable-feature=exemplar-storage
volumes:
- ./config/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus-2-data:/prometheus
ports:
- 9091:9090
native-demo:
image: songjiayang/native-histogram-demo:v0.1.0
ports:
- 8080:8080
command:
- --native-factor=1.5
- --metrics-count=10
volumes:
prometheus-1-data:
prometheus-2-data:
docker-compose.yml 파일에서는 v2.40.0 버전을 사용했음을 확인할 수 있다

버전을 prom/prometheus:v3.1.0로 올려서, 동일하게 Histogram 데이터를 조회하면 아래와 같이 그래프로 더 세련되게(?) 표시되는걸 확인할 수 있다
