Files
rmcguire 047f7c233d
Build and Publish / helm-release (push) Has been skipped
Build and Publish / go-binaries (push) Has been skipped
Build and Publish / container-images (push) Has been skipped
Build and Publish / check-chart (push) Successful in 12s
remove rheemcloud pkg, implement against rest api only
2026-07-05 16:59:53 -04:00

45 lines
1.2 KiB
Go

// Package econetmetrics registers OTEL observable gauges for Rheem EcoNet
// device state. Values are read at scrape time from the econetclient snapshot,
// which a background poller keeps fresh over REST.
package econetmetrics
import (
"context"
"github.com/rs/zerolog"
"go.opentelemetry.io/otel/metric"
"gitea.libretechconsulting.com/rmcguire/go-app/pkg/otel"
"gitea.libretechconsulting.com/rmcguire/econet-exporter/pkg/config"
"gitea.libretechconsulting.com/rmcguire/econet-exporter/pkg/econet/econetclient"
)
type Collector struct {
ctx context.Context
cfg *config.ServiceConfig
log *zerolog.Logger
client *econetclient.Client
meter metric.Meter
}
func NewCollector(ctx context.Context, cfg *config.ServiceConfig, client *econetclient.Client) *Collector {
return &Collector{
ctx: ctx,
cfg: cfg,
log: zerolog.Ctx(ctx),
client: client,
meter: otel.GetMeter(ctx, "econet"),
}
}
// RegisterGauges registers the observable gauge callbacks. It is safe to call
// before the first refresh: the callbacks observe nothing while no devices are
// loaded, so /metrics comes up immediately.
func (c *Collector) RegisterGauges() error {
if err := c.registerLive(); err != nil {
return err
}
return c.registerUsage()
}