package metrics import ( "net/http" "time" "github.com/gorilla/mux" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" "edge-infra.dev/pkg/k8s/runtime/controller/metrics" ) var DeviceReconcileDurationMetric prometheus.HistogramVec = *prometheus.NewHistogramVec( prometheus.HistogramOpts{ Name: metrics.Name("device_agent", "reconcile_duration_seconds"), Help: "Metric for device agent reconciliation time to process device event updates", Buckets: prometheus.LinearBuckets(0.0, 0.2, 10), }, []string{"node"}, ) var NodeDiskBytesMetric prometheus.GaugeVec = *prometheus.NewGaugeVec( prometheus.GaugeOpts{ Name: "node_disk_size_bytes", Help: "Metric for reporting size of disks", }, []string{"device", "node"}, ) func RecordDiskMetricsBytesSize(diskName, node string, size float64) { NodeDiskBytesMetric.WithLabelValues(diskName, node).Set(size) } func RecordDuration(node string, duration float64) { DeviceReconcileDurationMetric.WithLabelValues(node).Observe(duration) } func Server(addr string) *http.Server { router := router() server := &http.Server{ Addr: addr, Handler: router, ReadHeaderTimeout: 3 * time.Second, } return server } func router() *mux.Router { r := mux.NewRouter() r.PathPrefix("/metrics").Handler(promhttp.Handler()) return r }