HTTP metrics for Kubernetes API proxy endpoint

Closes #174 (closed).

Example from a single request:

# HELP kas_k8s_proxy_http_in_flight_requests A gauge of requests currently being served by the http server.
# TYPE kas_k8s_proxy_http_in_flight_requests gauge
kas_k8s_proxy_http_in_flight_requests 0
# HELP kas_k8s_proxy_http_request_duration_seconds A histogram of latencies for requests to the http server.
# TYPE kas_k8s_proxy_http_request_duration_seconds histogram
kas_k8s_proxy_http_request_duration_seconds_bucket{code="401",method="get",le="0.005"} 2
kas_k8s_proxy_http_request_duration_seconds_bucket{code="401",method="get",le="0.025"} 2
kas_k8s_proxy_http_request_duration_seconds_bucket{code="401",method="get",le="0.1"} 2
kas_k8s_proxy_http_request_duration_seconds_bucket{code="401",method="get",le="0.5"} 2
kas_k8s_proxy_http_request_duration_seconds_bucket{code="401",method="get",le="1"} 2
kas_k8s_proxy_http_request_duration_seconds_bucket{code="401",method="get",le="10"} 2
kas_k8s_proxy_http_request_duration_seconds_bucket{code="401",method="get",le="30"} 2
kas_k8s_proxy_http_request_duration_seconds_bucket{code="401",method="get",le="60"} 2
kas_k8s_proxy_http_request_duration_seconds_bucket{code="401",method="get",le="300"} 2
kas_k8s_proxy_http_request_duration_seconds_bucket{code="401",method="get",le="+Inf"} 2
kas_k8s_proxy_http_request_duration_seconds_sum{code="401",method="get"} 0.000509624
kas_k8s_proxy_http_request_duration_seconds_count{code="401",method="get"} 2
# HELP kas_k8s_proxy_http_request_size_bytes A histogram of sizes of requests to the http server.
# TYPE kas_k8s_proxy_http_request_size_bytes histogram
kas_k8s_proxy_http_request_size_bytes_bucket{code="401",method="get",le="10"} 0
kas_k8s_proxy_http_request_size_bytes_bucket{code="401",method="get",le="64"} 0
kas_k8s_proxy_http_request_size_bytes_bucket{code="401",method="get",le="256"} 0
kas_k8s_proxy_http_request_size_bytes_bucket{code="401",method="get",le="1024"} 2
kas_k8s_proxy_http_request_size_bytes_bucket{code="401",method="get",le="65536"} 2
kas_k8s_proxy_http_request_size_bytes_bucket{code="401",method="get",le="262144"} 2
kas_k8s_proxy_http_request_size_bytes_bucket{code="401",method="get",le="1.048576e+06"} 2
kas_k8s_proxy_http_request_size_bytes_bucket{code="401",method="get",le="6.7108864e+07"} 2
kas_k8s_proxy_http_request_size_bytes_bucket{code="401",method="get",le="+Inf"} 2
kas_k8s_proxy_http_request_size_bytes_sum{code="401",method="get"} 597
kas_k8s_proxy_http_request_size_bytes_count{code="401",method="get"} 2
# HELP kas_k8s_proxy_http_requests_total A counter for requests to the http server.
# TYPE kas_k8s_proxy_http_requests_total counter
kas_k8s_proxy_http_requests_total{code="401",method="get"} 2
# HELP kas_k8s_proxy_http_response_size_bytes A histogram of response sizes for requests to the http server.
# TYPE kas_k8s_proxy_http_response_size_bytes histogram
kas_k8s_proxy_http_response_size_bytes_bucket{code="401",method="get",le="10"} 0
kas_k8s_proxy_http_response_size_bytes_bucket{code="401",method="get",le="64"} 2
kas_k8s_proxy_http_response_size_bytes_bucket{code="401",method="get",le="256"} 2
kas_k8s_proxy_http_response_size_bytes_bucket{code="401",method="get",le="1024"} 2
kas_k8s_proxy_http_response_size_bytes_bucket{code="401",method="get",le="65536"} 2
kas_k8s_proxy_http_response_size_bytes_bucket{code="401",method="get",le="262144"} 2
kas_k8s_proxy_http_response_size_bytes_bucket{code="401",method="get",le="1.048576e+06"} 2
kas_k8s_proxy_http_response_size_bytes_bucket{code="401",method="get",le="6.7108864e+07"} 2
kas_k8s_proxy_http_response_size_bytes_bucket{code="401",method="get",le="+Inf"} 2
kas_k8s_proxy_http_response_size_bytes_sum{code="401",method="get"} 76
kas_k8s_proxy_http_response_size_bytes_count{code="401",method="get"} 2
# HELP kas_k8s_proxy_http_time_to_write_header_seconds A histogram of request durations until the response headers are written.
# TYPE kas_k8s_proxy_http_time_to_write_header_seconds histogram
kas_k8s_proxy_http_time_to_write_header_seconds_bucket{code="401",method="get",le="0.005"} 2
kas_k8s_proxy_http_time_to_write_header_seconds_bucket{code="401",method="get",le="0.025"} 2
kas_k8s_proxy_http_time_to_write_header_seconds_bucket{code="401",method="get",le="0.1"} 2
kas_k8s_proxy_http_time_to_write_header_seconds_bucket{code="401",method="get",le="0.5"} 2
kas_k8s_proxy_http_time_to_write_header_seconds_bucket{code="401",method="get",le="1"} 2
kas_k8s_proxy_http_time_to_write_header_seconds_bucket{code="401",method="get",le="10"} 2
kas_k8s_proxy_http_time_to_write_header_seconds_bucket{code="401",method="get",le="30"} 2
kas_k8s_proxy_http_time_to_write_header_seconds_bucket{code="401",method="get",le="+Inf"} 2
kas_k8s_proxy_http_time_to_write_header_seconds_sum{code="401",method="get"} 0.00022068
kas_k8s_proxy_http_time_to_write_header_seconds_count{code="401",method="get"} 2
Edited by Mikhail Mazurskiy

Merge request reports

Loading