mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
60 lines
1.2 KiB
Go
60 lines
1.2 KiB
Go
// Copyright (c) 2020 TypeFox GmbH. All rights reserved.
|
|
// Licensed under the Gitpod Enterprise Source Code License,
|
|
// See License.enterprise.txt in the project root folder.
|
|
|
|
package scaler
|
|
|
|
import "github.com/prometheus/client_golang/prometheus"
|
|
|
|
type metrics struct {
|
|
setpointGauge prometheus.Gauge
|
|
ghostCountGauge prometheus.Gauge
|
|
}
|
|
|
|
func newMetrics() *metrics {
|
|
return &metrics{
|
|
setpointGauge: prometheus.NewGauge(prometheus.GaugeOpts{
|
|
Name: "driver_setpoint",
|
|
Help: "setpoint of the scaler driver",
|
|
}),
|
|
ghostCountGauge: prometheus.NewGauge(prometheus.GaugeOpts{
|
|
Name: "ghost_count",
|
|
Help: "current number of Ghost workspaces scaler is aware of",
|
|
}),
|
|
}
|
|
}
|
|
|
|
// Register registers all metrics scaler can export
|
|
func (m *metrics) Register(reg prometheus.Registerer) error {
|
|
if m == nil {
|
|
return nil
|
|
}
|
|
|
|
collectors := []prometheus.Collector{
|
|
m.setpointGauge,
|
|
m.ghostCountGauge,
|
|
}
|
|
for _, c := range collectors {
|
|
err := reg.Register(c)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (m *metrics) OnSetpointChange(v int) {
|
|
if m == nil {
|
|
return
|
|
}
|
|
m.setpointGauge.Set(float64(v))
|
|
}
|
|
|
|
func (m *metrics) OnGhostCountChange(v int) {
|
|
if m == nil {
|
|
return
|
|
}
|
|
m.ghostCountGauge.Set(float64(v))
|
|
}
|