summaryrefslogtreecommitdiffstats
path: root/src/go/collectors/go.d.plugin/modules/traefik/charts.go
blob: e4f50baf2f7a08cfd232bbb3506d05399d83b940 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
// SPDX-License-Identifier: GPL-3.0-or-later

package traefik

import (
	"fmt"

	"github.com/netdata/netdata/go/go.d.plugin/agent/module"
)

var chartTmplEntrypointRequests = module.Chart{
	ID:    "entrypoint_requests_%s_%s",
	Title: "Processed HTTP requests on <code>%s</code> entrypoint (protocol <code>%s</code>)",
	Units: "requests/s",
	Fam:   "entrypoint %s %s",
	Ctx:   "traefik.entrypoint_requests",
	Type:  module.Stacked,
	Dims: module.Dims{
		{ID: prefixEntrypointRequests + "%s_%s_1xx", Name: "1xx", Algo: module.Incremental},
		{ID: prefixEntrypointRequests + "%s_%s_2xx", Name: "2xx", Algo: module.Incremental},
		{ID: prefixEntrypointRequests + "%s_%s_3xx", Name: "3xx", Algo: module.Incremental},
		{ID: prefixEntrypointRequests + "%s_%s_4xx", Name: "4xx", Algo: module.Incremental},
		{ID: prefixEntrypointRequests + "%s_%s_5xx", Name: "5xx", Algo: module.Incremental},
	},
}

var chartTmplEntrypointRequestDuration = module.Chart{
	ID:    "entrypoint_request_duration_%s_%s",
	Title: "Average HTTP request processing time on <code>%s</code> entrypoint (protocol <code>%s</code>)",
	Units: "milliseconds",
	Fam:   "entrypoint %s %s",
	Ctx:   "traefik.entrypoint_request_duration_average",
	Type:  module.Stacked,
	Dims: module.Dims{
		{ID: prefixEntrypointReqDurAvg + "%s_%s_1xx", Name: "1xx"},
		{ID: prefixEntrypointReqDurAvg + "%s_%s_2xx", Name: "2xx"},
		{ID: prefixEntrypointReqDurAvg + "%s_%s_3xx", Name: "3xx"},
		{ID: prefixEntrypointReqDurAvg + "%s_%s_4xx", Name: "4xx"},
		{ID: prefixEntrypointReqDurAvg + "%s_%s_5xx", Name: "5xx"},
	},
}

var chartTmplEntrypointOpenConnections = module.Chart{
	ID:    "entrypoint_open_connections_%s_%s",
	Title: "Open connections on <code>%s</code> entrypoint (protocol <code>%s</code>)",
	Units: "connections",
	Fam:   "entrypoint %s %s",
	Ctx:   "traefik.entrypoint_open_connections",
	Type:  module.Stacked,
}

func newChartEntrypointRequests(entrypoint, proto string) *module.Chart {
	return newEntrypointChart(chartTmplEntrypointRequests, entrypoint, proto)
}

func newChartEntrypointRequestDuration(entrypoint, proto string) *module.Chart {
	return newEntrypointChart(chartTmplEntrypointRequestDuration, entrypoint, proto)
}

func newChartEntrypointOpenConnections(entrypoint, proto string) *module.Chart {
	return newEntrypointChart(chartTmplEntrypointOpenConnections, entrypoint, proto)
}

func newEntrypointChart(tmpl module.Chart, entrypoint, proto string) *module.Chart {
	chart := tmpl.Copy()
	chart.ID = fmt.Sprintf(chart.ID, entrypoint, proto)
	chart.Title = fmt.Sprintf(chart.Title, entrypoint, proto)
	chart.Fam = fmt.Sprintf(chart.Fam, entrypoint, proto)
	for _, d := range chart.Dims {
		d.ID = fmt.Sprintf(d.ID, entrypoint, proto)
	}
	return chart
}