https://github.com/carousell/md-fasthttp-prometheus-middleware
Prometheus middleware for fasthttp, fasthttp/router
https://github.com/carousell/md-fasthttp-prometheus-middleware
fasthttp mudah prometheus
Last synced: 5 months ago
JSON representation
Prometheus middleware for fasthttp, fasthttp/router
- Host: GitHub
- URL: https://github.com/carousell/md-fasthttp-prometheus-middleware
- Owner: carousell
- License: mit
- Created: 2020-04-27T10:39:43.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2025-11-21T10:23:15.000Z (7 months ago)
- Last Synced: 2025-11-21T12:17:04.471Z (7 months ago)
- Topics: fasthttp, mudah, prometheus
- Language: Go
- Homepage:
- Size: 673 KB
- Stars: 13
- Watchers: 8
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# fasthttp prometheus-middleware
Prometheus middleware for [fasthttp](https://github.com/valyala/fasthttp)
Exports metrics for request duration ```request_duration_seconds```
with http status code as ```code``` and http request method + endpoint/route as ```path```
f.e ```code="200",path="GET_/health"```, ```code="201",path="POST_/foo"```
## Example
using fasthttp/router
package main
import (
"log"
fasthttpprom "github.com/carousell/fasthttp-prometheus-middleware"
"github.com/fasthttp/router"
"github.com/valyala/fasthttp"
)
func main() {
r := router.New()
p := fasthttpprom.NewPrometheus("")
p.Use(r)
r.GET("/health", func(ctx *fasthttp.RequestCtx) {
ctx.SetStatusCode(200)
ctx.SetBody([]byte(`{"status": "pass"}`))
log.Println(string(ctx.Request.URI().Path()))
})
log.Println("main is listening on ", "8080")
log.Fatal(fasthttp.ListenAndServe(":"+"8080", p.Handler))
}
Example metrics for above code in /metrics endpoint
```request_duration_seconds_bucket{code="200",path="GET_/health",le="0.005"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="0.01"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="0.02"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="0.04"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="0.06"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="0.08"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="0.1"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="0.15"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="0.25"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="0.4"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="0.6"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="0.8"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="1"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="1.5"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="2"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="3"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="5"} 25063
request_duration_seconds_bucket{code="200",path="GET_/health",le="+Inf"} 25063
request_duration_seconds_sum{code="200",path="GET_/health"} 0.14781658099999923
request_duration_seconds_count{code="200",path="GET_/health"} 25063