mirror of
https://github.com/datarhei/core.git
synced 2025-09-26 20:11:29 +08:00

Commits (Ingo Oppermann): - Add experimental SRT connection stats and logs - Hide /config/reload endpoint in reade-only mode - Add SRT server - Create v16 in go.mod - Fix data races, tests, lint, and update dependencies - Add trailing slash for routed directories (datarhei/restreamer#340) - Allow relative URLs in content in static routes Co-Authored-By: Ingo Oppermann <57445+ioppermann@users.noreply.github.com>
73 lines
2.1 KiB
Go
73 lines
2.1 KiB
Go
package prometheus
|
|
|
|
import (
|
|
"github.com/datarhei/core/v16/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"))
|
|
}
|
|
}
|