feat(metrics): включить percentiles-histogram для http.server.requests

Spring Boot Micrometer по дефолту эмитит только _count/_sum/_max
для http.server.requests — без _bucket нельзя посчитать
histogram_quantile() в Prometheus, p50/p95/p99 latency дашборды
получают "No data".

Включён percentiles-histogram + кастомные SLO bucket boundaries
от 5ms до 5s — покрывают realistic range read-api JSON endpoints.
Server-side histograms точнее client-side percentiles (по которым
нельзя aggregate across instances).

Применить: build + push image + helm upgrade. После рестарта
ordinis-app/read-api/projection-writer Grafana дашборды покажут
latency графики.
This commit is contained in:
Zimin A.N.
2026-05-06 11:10:33 +03:00
parent 171d049fc5
commit 3a28d741e9
3 changed files with 24 additions and 0 deletions
@@ -32,6 +32,13 @@ management:
tags: tags:
application: ${spring.application.name} application: ${spring.application.name}
environment: ${ENVIRONMENT:dev} environment: ${ENVIRONMENT:dev}
distribution:
# Server-side histogram buckets для http.server.requests — нужны
# histogram_quantile() в Grafana p50/p95/p99 dashboards.
percentiles-histogram:
http.server.requests: true
slo:
http.server.requests: 5ms,10ms,25ms,50ms,100ms,250ms,500ms,1s,2s,5s
otel: otel:
exporter: exporter:
@@ -33,6 +33,11 @@ management:
tags: tags:
application: ${spring.application.name} application: ${spring.application.name}
environment: ${ENVIRONMENT:dev} environment: ${ENVIRONMENT:dev}
distribution:
percentiles-histogram:
http.server.requests: true
slo:
http.server.requests: 5ms,10ms,25ms,50ms,100ms,250ms,500ms,1s,2s,5s
logging: logging:
level: level:
@@ -31,6 +31,18 @@ management:
tags: tags:
application: ${spring.application.name} application: ${spring.application.name}
environment: ${ENVIRONMENT:dev} environment: ${ENVIRONMENT:dev}
distribution:
# Включаем server-side histogram buckets для http.server.requests —
# без них histogram_quantile() в Prometheus возвращает empty
# (только _count/_sum/_max). Используется в Grafana dashboard
# ordinis-overview для p50/p95/p99 latency.
percentiles-histogram:
http.server.requests: true
# Service-level objectives bucket boundaries (на каких границах
# эмитить _bucket counters). Покрывают range от 5ms до 5s — типичный
# для read-api JSON endpoint.
slo:
http.server.requests: 5ms,10ms,25ms,50ms,100ms,250ms,500ms,1s,2s,5s
otel: otel:
exporter: exporter: