This is a simple integration with official prometheus golang client library to expose metrics. Four endpoints are configred.
- /all-success-simulator (needs monitoring)
- /internal-server-error-simulator (needs monitoring)
- /slow-simulator (needs monitoring)
- /healthz (needs to be excluded from monitoring)
A middleware for capturing metrics sits at the top of all routes. The middleware accepts urls which need to be excluded from monitoring. This is because , every application has some urls created for readiness/liveness probes which we dont intend to monitor.
The middleware captures metrics like
- Number of requests received to the service.
- Duration for each request (divided into custom buckets.)
- Number of requests with status code 200.
- Number of requests with status code 500.
There are 4 types of metrics.
- Counter (Used for naturally increasing values only)
- Gauge (Used for increasing and decreasing values)
- Summary
- Histogram (Used to group data into buckets and primarily used for data like response time and response size)
The library provided wrappers which can be used to define metrics , register them automatically to default registerer.