mirror of https://github.com/jetkvm/kvm.git
54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package kvm
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
)
|
|
|
|
var (
|
|
dcCurrentGauge = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
Name: "jetkvm_dc_current_amperes",
|
|
Help: "Current DC power consumption in amperes",
|
|
})
|
|
|
|
dcPowerGauge = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
Name: "jetkvm_dc_power_watts",
|
|
Help: "DC power consumption in watts",
|
|
})
|
|
|
|
dcVoltageGauge = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
Name: "jetkvm_dc_voltage_volts",
|
|
Help: "DC voltage in volts",
|
|
})
|
|
|
|
dcStateGauge = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
Name: "jetkvm_dc_power_state",
|
|
Help: "DC power state (1 = on, 0 = off)",
|
|
})
|
|
|
|
dcMetricsRegistered sync.Once
|
|
)
|
|
|
|
// registerDCMetrics registers the DC power metrics with Prometheus (called once when DC control is mounted)
|
|
func registerDCMetrics() {
|
|
dcMetricsRegistered.Do(func() {
|
|
prometheus.MustRegister(dcCurrentGauge)
|
|
prometheus.MustRegister(dcPowerGauge)
|
|
prometheus.MustRegister(dcVoltageGauge)
|
|
prometheus.MustRegister(dcStateGauge)
|
|
})
|
|
}
|
|
|
|
// updateDCMetrics updates the Prometheus metrics with current DC power state values
|
|
func updateDCMetrics(state DCPowerState) {
|
|
dcCurrentGauge.Set(state.Current)
|
|
dcPowerGauge.Set(state.Power)
|
|
dcVoltageGauge.Set(state.Voltage)
|
|
if state.IsOn {
|
|
dcStateGauge.Set(1)
|
|
} else {
|
|
dcStateGauge.Set(0)
|
|
}
|
|
}
|