@@ -29,9 +29,13 @@ const (
2929 httpRequestMethod = "http_request_method"
3030 httpResponseStatusCode = "http_response_status_code"
3131 httpRoute = "http_route"
32+ kb = 1000
33+ mb = kb * kb
3234)
3335
36+ // reference: https://opentelemetry.io/docs/specs/semconv/http/http-metrics/#http-server
3437var (
38+ sizeBuckets = []float64 {1 * kb , 2 * kb , 5 * kb , 10 * kb , 100 * kb , 500 * kb , 1 * mb , 2 * mb , 5 * mb , 10 * mb }
3539 // reqInflightGauge tracks the amount of currently handled requests
3640 reqInflightGauge = promauto .NewGaugeVec (prometheus.GaugeOpts {
3741 Namespace : "http" ,
@@ -43,22 +47,25 @@ var (
4347 reqDurationHistogram = promauto .NewHistogramVec (prometheus.HistogramOpts {
4448 Namespace : "http" ,
4549 Subsystem : "server" ,
46- Name : "request_duration" ,
50+ Name : "request_duration_seconds" , // diverge from spec to store the unit in metric.
4751 Help : "Measures the latency of HTTP requests processed by the server" ,
52+ Buckets : []float64 {0.01 , 0.02 , 0.05 , 0.1 , 0.2 , 0.5 , 1 , 2 , 5 , 10 , 30 , 60 , 120 , 300 }, // based on dotnet buckets https://github.com/open-telemetry/semantic-conventions/issues/336
4853 }, []string {httpRequestMethod , httpResponseStatusCode , httpRoute })
4954 // reqSizeHistogram tracks the size of request
5055 reqSizeHistogram = promauto .NewHistogramVec (prometheus.HistogramOpts {
5156 Namespace : "http" ,
5257 Subsystem : "server_request" ,
5358 Name : "body_size" ,
5459 Help : "Size of HTTP server request bodies." ,
60+ Buckets : sizeBuckets ,
5561 }, []string {httpRequestMethod , httpResponseStatusCode , httpRoute })
5662 // respSizeHistogram tracks the size of the response
5763 respSizeHistogram = promauto .NewHistogramVec (prometheus.HistogramOpts {
5864 Namespace : "http" ,
5965 Subsystem : "server_response" ,
6066 Name : "body_size" ,
6167 Help : "Size of HTTP server response bodies." ,
68+ Buckets : sizeBuckets ,
6269 }, []string {httpRequestMethod , httpResponseStatusCode , httpRoute })
6370)
6471
0 commit comments