mirror of https://github.com/jetkvm/kvm.git
Merge 04fa599a86
into 3e7d8fb0f5
This commit is contained in:
commit
a33012423a
|
@ -0,0 +1,53 @@
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
|
@ -128,6 +128,7 @@ func pressATXResetButton(duration time.Duration) error {
|
||||||
|
|
||||||
func mountDCControl() error {
|
func mountDCControl() error {
|
||||||
_ = port.SetMode(defaultMode)
|
_ = port.SetMode(defaultMode)
|
||||||
|
registerDCMetrics()
|
||||||
go runDCControl()
|
go runDCControl()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -188,6 +189,9 @@ func runDCControl() {
|
||||||
dcState.Current = amps
|
dcState.Current = amps
|
||||||
dcState.Power = watts
|
dcState.Power = watts
|
||||||
|
|
||||||
|
// Update Prometheus metrics
|
||||||
|
updateDCMetrics(dcState)
|
||||||
|
|
||||||
if currentSession != nil {
|
if currentSession != nil {
|
||||||
writeJSONRPCEvent("dcState", dcState, currentSession)
|
writeJSONRPCEvent("dcState", dcState, currentSession)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue