|
| 1 | +package kvm |
| 2 | + |
| 3 | +import ( |
| 4 | + "sync" |
| 5 | + |
| 6 | + "github.com/prometheus/client_golang/prometheus" |
| 7 | +) |
| 8 | + |
| 9 | +var ( |
| 10 | + dcCurrentGauge = prometheus.NewGauge(prometheus.GaugeOpts{ |
| 11 | + Name: "jetkvm_dc_current_amperes", |
| 12 | + Help: "Current DC power consumption in amperes", |
| 13 | + }) |
| 14 | + |
| 15 | + dcPowerGauge = prometheus.NewGauge(prometheus.GaugeOpts{ |
| 16 | + Name: "jetkvm_dc_power_watts", |
| 17 | + Help: "DC power consumption in watts", |
| 18 | + }) |
| 19 | + |
| 20 | + dcVoltageGauge = prometheus.NewGauge(prometheus.GaugeOpts{ |
| 21 | + Name: "jetkvm_dc_voltage_volts", |
| 22 | + Help: "DC voltage in volts", |
| 23 | + }) |
| 24 | + |
| 25 | + dcStateGauge = prometheus.NewGauge(prometheus.GaugeOpts{ |
| 26 | + Name: "jetkvm_dc_power_state", |
| 27 | + Help: "DC power state (1 = on, 0 = off)", |
| 28 | + }) |
| 29 | + |
| 30 | + dcMetricsRegistered sync.Once |
| 31 | +) |
| 32 | + |
| 33 | +// registerDCMetrics registers the DC power metrics with Prometheus (called once when DC control is mounted) |
| 34 | +func registerDCMetrics() { |
| 35 | + dcMetricsRegistered.Do(func() { |
| 36 | + prometheus.MustRegister(dcCurrentGauge) |
| 37 | + prometheus.MustRegister(dcPowerGauge) |
| 38 | + prometheus.MustRegister(dcVoltageGauge) |
| 39 | + prometheus.MustRegister(dcStateGauge) |
| 40 | + }) |
| 41 | +} |
| 42 | + |
| 43 | +// updateDCMetrics updates the Prometheus metrics with current DC power state values |
| 44 | +func updateDCMetrics(state DCPowerState) { |
| 45 | + dcCurrentGauge.Set(state.Current) |
| 46 | + dcPowerGauge.Set(state.Power) |
| 47 | + dcVoltageGauge.Set(state.Voltage) |
| 48 | + if state.IsOn { |
| 49 | + dcStateGauge.Set(1) |
| 50 | + } else { |
| 51 | + dcStateGauge.Set(0) |
| 52 | + } |
| 53 | +} |
0 commit comments