forked from kbudde/rabbitmq_exporter
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexporter_overview.go
More file actions
63 lines (51 loc) · 2.11 KB
/
exporter_overview.go
File metadata and controls
63 lines (51 loc) · 2.11 KB
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
package main
import (
"github.com/prometheus/client_golang/prometheus"
log "github.com/sirupsen/logrus"
)
func init() {
RegisterExporter("overview", newExporterOverview)
}
var overviewMetricDescription = map[string]prometheus.Gauge{
"object_totals.channels": newGauge("channelsTotal", "Total number of open channels."),
"object_totals.connections": newGauge("connectionsTotal", "Total number of open connections."),
"object_totals.consumers": newGauge("consumersTotal", "Total number of message consumers."),
"object_totals.queues": newGauge("queuesTotal", "Total number of queues in use."),
"object_totals.exchanges": newGauge("exchangesTotal", "Total number of exchanges in use."),
"queue_totals.messages": newGauge("queue_messages_total", "Total number ready and unacknowledged messages in cluster."),
"queue_totals.messages_ready": newGauge("queue_messages_ready_total", "Total number of messages ready to be delivered to clients."),
"queue_totals.messages_unacknowledged": newGauge("queue_messages_unacknowledged_total", "Total number of messages delivered to clients but not yet acknowledged."),
}
type exporterOverview struct {
overviewMetrics map[string]prometheus.Gauge
}
func newExporterOverview() Exporter {
return exporterOverview{
overviewMetrics: overviewMetricDescription,
}
}
func (e exporterOverview) String() string {
return "Exporter overview"
}
func (e exporterOverview) Collect(ch chan<- prometheus.Metric) error {
rabbitMqOverviewData, err := getMetricMap(config, "overview")
if err != nil {
return err
}
log.WithField("overviewData", rabbitMqOverviewData).Debug("Overview data")
for key, gauge := range e.overviewMetrics {
if value, ok := rabbitMqOverviewData[key]; ok {
log.WithFields(log.Fields{"key": key, "value": value}).Debug("Set overview metric for key")
gauge.Set(value)
}
}
for _, gauge := range e.overviewMetrics {
gauge.Collect(ch)
}
return nil
}
func (e exporterOverview) Describe(ch chan<- *prometheus.Desc) {
for _, gauge := range e.overviewMetrics {
gauge.Describe(ch)
}
}