Take control over your live stream video by running it yourself. Streaming + chat out of the box.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

60 lines
1.6 KiB

package metrics
import (
"time"
"github.com/owncast/owncast/models"
"github.com/shirou/gopsutil/v3/cpu"
"github.com/shirou/gopsutil/v3/disk"
"github.com/shirou/gopsutil/v3/mem"
log "github.com/sirupsen/logrus"
)
// Max number of metrics we want to keep.
const maxCollectionValues = 300
func (m *Metrics) collectCPUUtilization() {
if len(m.metrics.CPUUtilizations) > maxCollectionValues {
m.metrics.CPUUtilizations = m.metrics.CPUUtilizations[1:]
}
v, err := cpu.Percent(0, false)
if err != nil {
log.Errorln(err)
return
}
// Default to zero but try to use the cumulative values of all the CPUs
// if values exist.
value := 0.0
if len(v) > 0 {
value = v[0]
}
metricValue := models.TimestampedValue{time.Now(), value}
m.metrics.CPUUtilizations = append(m.metrics.CPUUtilizations, metricValue)
m.cpuUsage.Set(metricValue.Value)
}
func (m *Metrics) collectRAMUtilization() {
if len(m.metrics.RAMUtilizations) > maxCollectionValues {
m.metrics.RAMUtilizations = m.metrics.RAMUtilizations[1:]
}
memoryUsage, _ := mem.VirtualMemory()
metricValue := models.TimestampedValue{time.Now(), memoryUsage.UsedPercent}
m.metrics.RAMUtilizations = append(m.metrics.RAMUtilizations, metricValue)
}
func (m *Metrics) collectDiskUtilization() {
path := "./"
diskUse, _ := disk.Usage(path)
if len(m.metrics.DiskUtilizations) > maxCollectionValues {
m.metrics.DiskUtilizations = m.metrics.DiskUtilizations[1:]
}
metricValue := models.TimestampedValue{time.Now(), diskUse.UsedPercent}
m.metrics.DiskUtilizations = append(m.metrics.DiskUtilizations, metricValue)
}