Last9 Golang CDK is a way to emit commonly aggregated metrics straight from your Golang application that serves HTTP traffic.
Traditional metrics emitters emit, per-path or handler-based metrics. Both these approaches have their drawbacks.
/user/foo
/user/bar
and so on can result in millions of endpointsThe very first metrics to be emitted are Rate, Error, and Duration.
httpRequestsDuration = prometheus.NewHistogramVec(
prometheus.HistogramOpts{
Name: "http_requests_duration_milliseconds",
Help: "HTTP requests duration per path",
},
[]string{
"per", "hostname", "domain", "method", "program", "status",
"tenant", "cluster",
},
)
Name | Description |
---|---|
hostname | current Hostname where the metric is emitted from |
program | Binary / Process name where the metric is emitted from |
per | This is the "main" label, which contains the pathname or an identifier that you emit per request. |
By default, it is the path pattern if the Mux is one of the supported List and the entire URL Path where Mux does not have a path parameter. | |
Optionally, this can ALSO be a custom string (Read below for details) | |
domain | domain at which the request was received |
method | HTTP method |
status | HTTP Status returned |
tenant | Optional Field for a multi-tenant application |
cluster | Optional Field for a multi-cluster deployment |
Most modern SaaS applications end up being multi-tenant or multi-clustered where it's crucial to identify the behavior across each, separately.
CDK honors this need as a first-class property and has reserved two label fields for this purpose. These two are:
Features