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)
 | 
						|
}
 |