Files
core/prometheus/session.go
Jan Stabenow 9c0b535199 Add v16.7.2
2022-05-13 19:26:45 +02:00

73 lines
2.1 KiB
Go

package prometheus
import (
"github.com/datarhei/core/monitor/metric"
"github.com/prometheus/client_golang/prometheus"
)
type sessionCollector struct {
core string
collector metric.Reader
totalDesc *prometheus.Desc
activeDesc *prometheus.Desc
rxDesc *prometheus.Desc
txDesc *prometheus.Desc
}
func NewSessionCollector(core string, c metric.Reader) prometheus.Collector {
return &sessionCollector{
core: core,
collector: c,
totalDesc: prometheus.NewDesc(
"session_total",
"Total number of sessions by collector",
[]string{"core", "collector"}, nil),
activeDesc: prometheus.NewDesc(
"session_active",
"Current number of active sessions by collector",
[]string{"core", "collector"}, nil),
rxDesc: prometheus.NewDesc(
"session_rx_bytes",
"Total received bytes by collector",
[]string{"core", "collector"}, nil),
txDesc: prometheus.NewDesc(
"session_tx_bytes",
"Total sent bytes by collector",
[]string{"core", "collector"}, nil),
}
}
func (c *sessionCollector) Describe(ch chan<- *prometheus.Desc) {
ch <- c.totalDesc
ch <- c.activeDesc
ch <- c.rxDesc
ch <- c.txDesc
}
func (c *sessionCollector) Collect(ch chan<- prometheus.Metric) {
metrics := c.collector.Collect([]metric.Pattern{
metric.NewPattern("session_total"),
metric.NewPattern("session_active"),
metric.NewPattern("session_rxbytes"),
metric.NewPattern("session_txbytes"),
})
for _, m := range metrics.Values("session_total") {
ch <- prometheus.MustNewConstMetric(c.totalDesc, prometheus.CounterValue, m.Val(), c.core, m.L("collector"))
}
for _, m := range metrics.Values("session_active") {
ch <- prometheus.MustNewConstMetric(c.activeDesc, prometheus.GaugeValue, m.Val(), c.core, m.L("collector"))
}
for _, m := range metrics.Values("session_rxbytes") {
ch <- prometheus.MustNewConstMetric(c.rxDesc, prometheus.CounterValue, m.Val(), c.core, m.L("collector"))
}
for _, m := range metrics.Values("session_txbytes") {
ch <- prometheus.MustNewConstMetric(c.txDesc, prometheus.CounterValue, m.Val(), c.core, m.L("collector"))
}
}