mirror of
https://github.com/langhuihui/monibuca.git
synced 2025-09-27 03:25:56 +08:00
86 lines
4.7 KiB
Go
86 lines
4.7 KiB
Go
package m7s
|
|
|
|
import "github.com/prometheus/client_golang/prometheus"
|
|
|
|
type prometheusDesc struct {
|
|
CPUUsage *prometheus.Desc
|
|
Memory struct {
|
|
Total, Used, Usage, Free *prometheus.Desc
|
|
}
|
|
Disk struct {
|
|
Total, Used, Usage, Free *prometheus.Desc
|
|
}
|
|
Net struct {
|
|
SendSpeed, ReceiveSpeed *prometheus.Desc
|
|
}
|
|
BPS, FPS, StreamCount, SubscribeCount, PullCount, PushCount, RecordCount, TransformCount *prometheus.Desc
|
|
}
|
|
|
|
func (d *prometheusDesc) init() {
|
|
d.CPUUsage = prometheus.NewDesc("cpu_usage", "CPU usage", nil, nil)
|
|
d.Memory.Total = prometheus.NewDesc("memory_total", "Memory total", nil, nil)
|
|
d.Memory.Used = prometheus.NewDesc("memory_used", "Memory used", nil, nil)
|
|
d.Memory.Usage = prometheus.NewDesc("memory_usage", "Memory usage", nil, nil)
|
|
d.Memory.Free = prometheus.NewDesc("memory_free", "Memory free", nil, nil)
|
|
d.Disk.Total = prometheus.NewDesc("disk_total", "Disk total", nil, nil)
|
|
d.Disk.Used = prometheus.NewDesc("disk_used", "Disk used", nil, nil)
|
|
d.Disk.Usage = prometheus.NewDesc("disk_usage", "Disk usage", nil, nil)
|
|
d.Disk.Free = prometheus.NewDesc("disk_free", "Disk free", nil, nil)
|
|
d.Net.SendSpeed = prometheus.NewDesc("net_send_speed", "Net send speed", []string{"name"}, nil)
|
|
d.Net.ReceiveSpeed = prometheus.NewDesc("net_receive_speed", "Net receive speed", []string{"name"}, nil)
|
|
d.BPS = prometheus.NewDesc("bps", "Bytes Per Second", []string{"streamPath", "pluginName", "trackType"}, nil)
|
|
d.FPS = prometheus.NewDesc("fps", "Frames Per Second", []string{"streamPath", "pluginName", "trackType"}, nil)
|
|
d.StreamCount = prometheus.NewDesc("stream_count", "Stream count", nil, nil)
|
|
d.SubscribeCount = prometheus.NewDesc("subscribe_count", "Subscribe count", nil, nil)
|
|
d.PullCount = prometheus.NewDesc("pull_count", "Pull count", nil, nil)
|
|
d.PushCount = prometheus.NewDesc("push_count", "Push count", nil, nil)
|
|
d.RecordCount = prometheus.NewDesc("record_count", "Record count", nil, nil)
|
|
d.TransformCount = prometheus.NewDesc("transform_count", "Transform count", nil, nil)
|
|
}
|
|
|
|
func (s *Server) Describe(ch chan<- *prometheus.Desc) {
|
|
desc := s.prometheusDesc
|
|
ch <- desc.BPS
|
|
ch <- desc.FPS
|
|
ch <- desc.CPUUsage
|
|
ch <- desc.Memory.Total
|
|
ch <- desc.Memory.Used
|
|
ch <- desc.Memory.Usage
|
|
ch <- desc.Memory.Free
|
|
ch <- desc.Disk.Total
|
|
ch <- desc.Disk.Used
|
|
ch <- desc.Disk.Usage
|
|
ch <- desc.Disk.Free
|
|
ch <- desc.Net.SendSpeed
|
|
ch <- desc.StreamCount
|
|
ch <- desc.SubscribeCount
|
|
ch <- desc.PullCount
|
|
ch <- desc.PushCount
|
|
ch <- desc.RecordCount
|
|
ch <- desc.TransformCount
|
|
}
|
|
|
|
func (s *Server) Collect(ch chan<- prometheus.Metric) {
|
|
if s.lastSummary != nil {
|
|
ch <- prometheus.MustNewConstMetric(s.prometheusDesc.CPUUsage, prometheus.GaugeValue, float64(s.lastSummary.CpuUsage))
|
|
ch <- prometheus.MustNewConstMetric(s.prometheusDesc.Memory.Total, prometheus.GaugeValue, float64(s.lastSummary.Memory.Total))
|
|
ch <- prometheus.MustNewConstMetric(s.prometheusDesc.Memory.Used, prometheus.GaugeValue, float64(s.lastSummary.Memory.Used))
|
|
ch <- prometheus.MustNewConstMetric(s.prometheusDesc.Memory.Usage, prometheus.GaugeValue, float64(s.lastSummary.Memory.Usage))
|
|
ch <- prometheus.MustNewConstMetric(s.prometheusDesc.Memory.Free, prometheus.GaugeValue, float64(s.lastSummary.Memory.Free))
|
|
ch <- prometheus.MustNewConstMetric(s.prometheusDesc.Disk.Total, prometheus.GaugeValue, float64(s.lastSummary.HardDisk.Total))
|
|
ch <- prometheus.MustNewConstMetric(s.prometheusDesc.Disk.Used, prometheus.GaugeValue, float64(s.lastSummary.HardDisk.Used))
|
|
ch <- prometheus.MustNewConstMetric(s.prometheusDesc.Disk.Usage, prometheus.GaugeValue, float64(s.lastSummary.HardDisk.Usage))
|
|
ch <- prometheus.MustNewConstMetric(s.prometheusDesc.Disk.Free, prometheus.GaugeValue, float64(s.lastSummary.HardDisk.Free))
|
|
for _, net := range s.lastSummary.NetWork {
|
|
ch <- prometheus.MustNewConstMetric(s.prometheusDesc.Net.SendSpeed, prometheus.GaugeValue, float64(net.SentSpeed), net.Name)
|
|
ch <- prometheus.MustNewConstMetric(s.prometheusDesc.Net.ReceiveSpeed, prometheus.GaugeValue, float64(net.ReceiveSpeed), net.Name)
|
|
}
|
|
}
|
|
for stream := range s.Streams.SafeRange {
|
|
ch <- prometheus.MustNewConstMetric(s.prometheusDesc.BPS, prometheus.GaugeValue, float64(stream.VideoTrack.AVTrack.BPS), stream.StreamPath, stream.Plugin.Meta.Name, "video")
|
|
ch <- prometheus.MustNewConstMetric(s.prometheusDesc.FPS, prometheus.GaugeValue, float64(stream.VideoTrack.AVTrack.FPS), stream.StreamPath, stream.Plugin.Meta.Name, "video")
|
|
ch <- prometheus.MustNewConstMetric(s.prometheusDesc.BPS, prometheus.GaugeValue, float64(stream.AudioTrack.AVTrack.BPS), stream.StreamPath, stream.Plugin.Meta.Name, "audio")
|
|
ch <- prometheus.MustNewConstMetric(s.prometheusDesc.FPS, prometheus.GaugeValue, float64(stream.AudioTrack.AVTrack.FPS), stream.StreamPath, stream.Plugin.Meta.Name, "audio")
|
|
}
|
|
}
|