3scale / apisonator

Red Hat 3scale API Management Apisonator backend
https://3scale.net
Apache License 2.0
35 stars 27 forks source link

Add Prometheus metrics for the listener #174

Closed davidor closed 4 years ago

davidor commented 4 years ago

This PR adds a couple of metrics for the listeners: a histogram for request times aggregated by request type (auth, authrep, report) and a counter for response codes aggregated by request type and code (2xx, 4xx, 5xx).

The output looks like this:

# TYPE apisonator_listener_response_codes counter
# HELP apisonator_listener_response_codes Response codes
apisonator_listener_response_codes{request_type="authorize",resp_code="2xx"} 1.0
apisonator_listener_response_codes{request_type="authrep",resp_code="2xx"} 2.0
apisonator_listener_response_codes{request_type="authrep",resp_code="4xx"} 1.0
# TYPE apisonator_listener_response_times_seconds histogram
# HELP apisonator_listener_response_times_seconds Request times
apisonator_listener_response_times_seconds_bucket{request_type="authrep",le="0.01"} 2.0
apisonator_listener_response_times_seconds_bucket{request_type="authrep",le="0.02"} 2.0
apisonator_listener_response_times_seconds_bucket{request_type="authrep",le="0.03"} 2.0
apisonator_listener_response_times_seconds_bucket{request_type="authrep",le="0.04"} 2.0
apisonator_listener_response_times_seconds_bucket{request_type="authrep",le="0.05"} 2.0
apisonator_listener_response_times_seconds_bucket{request_type="authrep",le="0.06"} 3.0
apisonator_listener_response_times_seconds_bucket{request_type="authrep",le="0.07"} 3.0
apisonator_listener_response_times_seconds_bucket{request_type="authrep",le="0.08"} 3.0
apisonator_listener_response_times_seconds_bucket{request_type="authrep",le="0.09"} 3.0
apisonator_listener_response_times_seconds_bucket{request_type="authrep",le="0.1"} 3.0
apisonator_listener_response_times_seconds_bucket{request_type="authrep",le="0.25"} 3.0
apisonator_listener_response_times_seconds_bucket{request_type="authrep",le="0.5"} 3.0
apisonator_listener_response_times_seconds_bucket{request_type="authrep",le="0.75"} 3.0
apisonator_listener_response_times_seconds_bucket{request_type="authrep",le="1"} 3.0
apisonator_listener_response_times_seconds_bucket{request_type="authrep",le="+Inf"} 3.0
apisonator_listener_response_times_seconds_sum{request_type="authrep"} 0.07076911599999999
apisonator_listener_response_times_seconds_count{request_type="authrep"} 3.0
apisonator_listener_response_times_seconds_bucket{request_type="authorize",le="0.01"} 0.0
apisonator_listener_response_times_seconds_bucket{request_type="authorize",le="0.02"} 0.0
apisonator_listener_response_times_seconds_bucket{request_type="authorize",le="0.03"} 0.0
apisonator_listener_response_times_seconds_bucket{request_type="authorize",le="0.04"} 0.0
apisonator_listener_response_times_seconds_bucket{request_type="authorize",le="0.05"} 0.0
apisonator_listener_response_times_seconds_bucket{request_type="authorize",le="0.06"} 1.0
apisonator_listener_response_times_seconds_bucket{request_type="authorize",le="0.07"} 1.0
apisonator_listener_response_times_seconds_bucket{request_type="authorize",le="0.08"} 1.0
apisonator_listener_response_times_seconds_bucket{request_type="authorize",le="0.09"} 1.0
apisonator_listener_response_times_seconds_bucket{request_type="authorize",le="0.1"} 1.0
apisonator_listener_response_times_seconds_bucket{request_type="authorize",le="0.25"} 1.0
apisonator_listener_response_times_seconds_bucket{request_type="authorize",le="0.5"} 1.0
apisonator_listener_response_times_seconds_bucket{request_type="authorize",le="0.75"} 1.0
apisonator_listener_response_times_seconds_bucket{request_type="authorize",le="1"} 1.0
apisonator_listener_response_times_seconds_bucket{request_type="authorize",le="+Inf"} 1.0
apisonator_listener_response_times_seconds_sum{request_type="authorize"} 0.05043955
apisonator_listener_response_times_seconds_count{request_type="authorize"} 1.0

Remember that we already added metrics for the workers in #111 Note that this PR does not configure Falcon to use metrics. I'll do that in a separate PR.

davidor commented 4 years ago

FYI @eguzki

eguzki commented 4 years ago

LGTM :medal_military: