metrics: add an example Grafana dashboard (#4559)

* metrics: add an example Grafana dashboard

* metrics: rename Handshake Duration to Handshake Latency

Co-authored-by: sukun <sukunrt@gmail.com>

---------

Co-authored-by: sukun <sukunrt@gmail.com>
This commit is contained in:
Marten Seemann
2024-06-06 17:13:35 +08:00
committed by GitHub
parent 0c842975f4
commit 4d0562d13c
2 changed files with 739 additions and 20 deletions

View File

@@ -1,33 +1,24 @@
# quic-go Prometheus / Grafana setup
# quic-go Prometheus / Grafana Local Development Setup
Expose a Grafana endpoint on `http://localhost:5001/prometheus`:
For local development and debugging, it can be useful to spin up a local Prometheus and Grafana instance.
Please refer to the [documentation](https://quic-go.net/docs/quic/metrics/) for how to configure quic-go to expose Prometheus metrics.
The configuration files in this directory assume that the application exposes the Prometheus endpoint at `http://localhost:5001/prometheus`:
```go
import "github.com/prometheus/client_golang/prometheus/promhttp"
go func() {
http.Handle("/prometheus", promhttp.Handler())
log.Fatal(http.ListenAndServe(":5001", nil))
log.Fatal(http.ListenAndServe("localhost:5001", nil))
}()
```
Set a metrics tracer on the `Transport`:
```go
quic.Transport{
Tracer: metrics.NewTracer(),
}
```
When using multiple `Transport`s, it is recommended to use the metrics tracer struct for all of them.
Set a metrics connection tracer on the `Config`:
```go
quic.Config{
Tracer: metrics.DefaultConnectionTracer,
}
```
Prometheus and Grafana can be started using Docker Compose:
Running:
```shell
docker-compose up
docker compose up
```
[quic-go.json](./quic-go.json) contains the JSON model of an example Grafana dashboard.