93 lines
2.3 KiB
Go
93 lines
2.3 KiB
Go
package metrics
|
|
|
|
import (
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
"sigs.k8s.io/controller-runtime/pkg/metrics"
|
|
)
|
|
|
|
var githubScaleSetControllerSubsystem = "gha_controller"
|
|
|
|
var labels = []string{
|
|
"name",
|
|
"namespace",
|
|
"repository",
|
|
"organization",
|
|
"enterprise",
|
|
}
|
|
|
|
type CommonLabels struct {
|
|
Name string
|
|
Namespace string
|
|
Repository string
|
|
Organization string
|
|
Enterprise string
|
|
}
|
|
|
|
func (l *CommonLabels) labels() prometheus.Labels {
|
|
return prometheus.Labels{
|
|
"name": l.Name,
|
|
"namespace": l.Namespace,
|
|
"repository": l.Repository,
|
|
"organization": l.Organization,
|
|
"enterprise": l.Enterprise,
|
|
}
|
|
}
|
|
|
|
var (
|
|
pendingEphemeralRunners = prometheus.NewGaugeVec(
|
|
prometheus.GaugeOpts{
|
|
Subsystem: githubScaleSetControllerSubsystem,
|
|
Name: "pending_ephemeral_runners",
|
|
Help: "Number of ephemeral runners in a pending state.",
|
|
},
|
|
labels,
|
|
)
|
|
runningEphemeralRunners = prometheus.NewGaugeVec(
|
|
prometheus.GaugeOpts{
|
|
Subsystem: githubScaleSetControllerSubsystem,
|
|
Name: "running_ephemeral_runners",
|
|
Help: "Number of ephemeral runners in a running state.",
|
|
},
|
|
labels,
|
|
)
|
|
failedEphemeralRunners = prometheus.NewGaugeVec(
|
|
prometheus.GaugeOpts{
|
|
Subsystem: githubScaleSetControllerSubsystem,
|
|
Name: "failed_ephemeral_runners",
|
|
Help: "Number of ephemeral runners in a failed state.",
|
|
},
|
|
labels,
|
|
)
|
|
runningListeners = prometheus.NewGaugeVec(
|
|
prometheus.GaugeOpts{
|
|
Subsystem: githubScaleSetControllerSubsystem,
|
|
Name: "running_listeners",
|
|
Help: "Number of listeners in a running state.",
|
|
},
|
|
labels,
|
|
)
|
|
)
|
|
|
|
func RegisterMetrics() {
|
|
metrics.Registry.MustRegister(
|
|
pendingEphemeralRunners,
|
|
runningEphemeralRunners,
|
|
failedEphemeralRunners,
|
|
runningListeners,
|
|
)
|
|
}
|
|
|
|
func SetEphemeralRunnerCountsByStatus(commonLabels CommonLabels, pending, running, failed int) {
|
|
pendingEphemeralRunners.With(commonLabels.labels()).Set(float64(pending))
|
|
runningEphemeralRunners.With(commonLabels.labels()).Set(float64(running))
|
|
failedEphemeralRunners.With(commonLabels.labels()).Set(float64(failed))
|
|
}
|
|
|
|
func AddRunningListener(commonLabels CommonLabels) {
|
|
runningListeners.With(commonLabels.labels()).Set(1)
|
|
}
|
|
|
|
func SubRunningListener(commonLabels CommonLabels) {
|
|
runningListeners.With(commonLabels.labels()).Set(0)
|
|
}
|