Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/pkg/integrations/statsd_exporter/metrics.go
5371 views
1
package statsd_exporter //nolint:golint
2
3
import "github.com/prometheus/client_golang/prometheus"
4
5
// Metrics holds metrics used by the statsd_exporter integration. These metrics
6
// are distinct from the set of metrics used by the exporter itself, and are just
7
// used to monitor the stats of the listeners that forward data to the exporter.
8
type Metrics struct {
9
EventStats *prometheus.CounterVec
10
EventsFlushed prometheus.Counter
11
EventsUnmapped prometheus.Counter
12
UDPPackets prometheus.Counter
13
TCPConnections prometheus.Counter
14
TCPErrors prometheus.Counter
15
TCPLineTooLong prometheus.Counter
16
UnixgramPackets prometheus.Counter
17
LinesReceived prometheus.Counter
18
SamplesReceived prometheus.Counter
19
SampleErrors *prometheus.CounterVec
20
TagsReceived prometheus.Counter
21
TagErrors prometheus.Counter
22
MappingsCount prometheus.Gauge
23
ConflictingEventStats *prometheus.CounterVec
24
ErrorEventStats *prometheus.CounterVec
25
EventsActions *prometheus.CounterVec
26
MetricsCount *prometheus.GaugeVec
27
}
28
29
// NewMetrics initializes Metrics and registers them to the given Registerer.
30
func NewMetrics(r prometheus.Registerer) (*Metrics, error) {
31
var m Metrics
32
33
m.EventStats = prometheus.NewCounterVec(prometheus.CounterOpts{
34
Name: "statsd_exporter_events_total",
35
Help: "The total number of StatsD events seen.",
36
}, []string{"type"})
37
m.EventsFlushed = prometheus.NewCounter(prometheus.CounterOpts{
38
Name: "statsd_exporter_event_queue_flushed_total",
39
Help: "Number of times events were flushed to exporter",
40
})
41
m.EventsUnmapped = prometheus.NewCounter(prometheus.CounterOpts{
42
Name: "statsd_exporter_events_unmapped_total",
43
Help: "The total number of StatsD events no mapping was found for.",
44
})
45
m.UDPPackets = prometheus.NewCounter(prometheus.CounterOpts{
46
Name: "statsd_exporter_udp_packets_total",
47
Help: "The total number of StatsD packets received over UDP.",
48
})
49
m.TCPConnections = prometheus.NewCounter(prometheus.CounterOpts{
50
Name: "statsd_exporter_tcp_connections_total",
51
Help: "The total number of TCP connections handled.",
52
})
53
m.TCPErrors = prometheus.NewCounter(prometheus.CounterOpts{
54
Name: "statsd_exporter_tcp_connection_errors_total",
55
Help: "The number of errors encountered reading from TCP.",
56
})
57
m.TCPLineTooLong = prometheus.NewCounter(prometheus.CounterOpts{
58
Name: "statsd_exporter_tcp_too_long_lines_total",
59
Help: "The number of lines discarded due to being too long.",
60
})
61
m.UnixgramPackets = prometheus.NewCounter(prometheus.CounterOpts{
62
Name: "statsd_exporter_unixgram_packets_total",
63
Help: "The total number of StatsD packets received over Unixgram.",
64
})
65
m.LinesReceived = prometheus.NewCounter(prometheus.CounterOpts{
66
Name: "statsd_exporter_lines_total",
67
Help: "The total number of StatsD lines received.",
68
})
69
m.SamplesReceived = prometheus.NewCounter(prometheus.CounterOpts{
70
Name: "statsd_exporter_samples_total",
71
Help: "The total number of StatsD samples received.",
72
})
73
m.SampleErrors = prometheus.NewCounterVec(prometheus.CounterOpts{
74
Name: "statsd_exporter_sample_errors_total",
75
Help: "The total number of errors parsing StatsD samples.",
76
}, []string{"reason"})
77
m.TagsReceived = prometheus.NewCounter(prometheus.CounterOpts{
78
Name: "statsd_exporter_tags_total",
79
Help: "The total number of DogStatsD tags processed.",
80
})
81
m.TagErrors = prometheus.NewCounter(prometheus.CounterOpts{
82
Name: "statsd_exporter_tag_errors_total",
83
Help: "The number of errors parsing DogStatsD tags.",
84
})
85
m.MappingsCount = prometheus.NewGauge(prometheus.GaugeOpts{
86
Name: "statsd_exporter_loaded_mappings",
87
Help: "The current number of configured metric mappings.",
88
})
89
m.ConflictingEventStats = prometheus.NewCounterVec(prometheus.CounterOpts{
90
Name: "statsd_exporter_events_conflict_total",
91
Help: "The total number of StatsD events with conflicting names.",
92
}, []string{"type"})
93
m.ErrorEventStats = prometheus.NewCounterVec(prometheus.CounterOpts{
94
Name: "statsd_exporter_events_error_total",
95
Help: "The total number of StatsD events discarded due to errors.",
96
}, []string{"reason"})
97
m.EventsActions = prometheus.NewCounterVec(prometheus.CounterOpts{
98
Name: "statsd_exporter_events_actions_total",
99
Help: "The total number of StatsD events by action.",
100
}, []string{"action"})
101
m.MetricsCount = prometheus.NewGaugeVec(prometheus.GaugeOpts{
102
Name: "statsd_exporter_metrics_total",
103
Help: "The total number of metrics.",
104
}, []string{"type"})
105
106
cs := []prometheus.Collector{
107
m.EventStats,
108
m.EventsFlushed,
109
m.EventsUnmapped,
110
m.UDPPackets,
111
m.TCPConnections,
112
m.TCPErrors,
113
m.TCPLineTooLong,
114
m.UnixgramPackets,
115
m.LinesReceived,
116
m.SamplesReceived,
117
m.SampleErrors,
118
m.TagsReceived,
119
m.TagErrors,
120
m.MappingsCount,
121
m.ConflictingEventStats,
122
m.ErrorEventStats,
123
m.EventsActions,
124
m.MetricsCount,
125
}
126
if r != nil {
127
for _, c := range cs {
128
if err := r.Register(c); err != nil {
129
return nil, err
130
}
131
}
132
}
133
134
return &m, nil
135
}
136
137