From: Dan Fuhry Date: Tue, 16 Apr 2024 12:36:50 +0000 (-0400) Subject: apcupsd exporter: allow specifying NIS address and nominal power as flags X-Git-Url: https://go.fuhry.dev/?a=commitdiff_plain;h=1cece5ad18f37141d56878b85f63d158947aa629;p=runtime.git apcupsd exporter: allow specifying NIS address and nominal power as flags --- diff --git a/metrics/apcups_exporter/main.go b/metrics/apcups_exporter/main.go index d4ccbd9..54e7b71 100644 --- a/metrics/apcups_exporter/main.go +++ b/metrics/apcups_exporter/main.go @@ -25,6 +25,11 @@ func main() { var apcConn *apcupsd.Client var err error var sdNotifyOnce sync.Once + var apcUpsdAddr = "127.0.0.1:3551" + var nominalPower = 0 + + flag.StringVar(&apcUpsdAddr, "apcupsd-addr", apcUpsdAddr, "address at which apcupsd can be contacted") + flag.IntVar(&nominalPower, "apcupsd-nominal-power", nominalPower, "max power output in W for the UPS - only used if apcupsd does not specify NOMPOWER") ctx, _ := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM) flag.Parse() @@ -56,7 +61,7 @@ func main() { select { case <-ticker.C: if apcConn == nil { - apcConn, err = apcupsd.Dial("tcp", "127.0.0.1:3551") + apcConn, err = apcupsd.Dial("tcp", apcUpsdAddr) if err != nil { log.Default().Errorf("error getting status from apcupsd: %v", err) continue @@ -79,11 +84,15 @@ func main() { sdNotifyOnce.Do(func() { daemon.SdNotify(false, daemon.SdNotifyReady) }) + nomPower := status.NominalPower + if nomPower == 0 { + nomPower = nominalPower + } metrics.lineVoltage.Set(status.LineVoltage) metrics.loadPercentage.Set(status.LoadPercent) metrics.secondsLeft.Set(status.TimeLeft.Seconds()) metrics.chargePct.Set(status.BatteryChargePercent) - metrics.powerConsumption.Set(float64(status.NominalPower) * (status.LoadPercent / 100)) + metrics.powerConsumption.Set(float64(nomPower) * (status.LoadPercent / 100)) if _, ok := metrics.stateMap[status.Status]; !ok { metrics.stateMap[status.Status] = metrics.state.WithLabelValues(mbclient.KV{"state": status.Status}) }