mirror of
https://github.com/actions/actions-runner-controller.git
synced 2025-12-13 13:06:51 +00:00
Changes to folder structure to allow multigroups and changed go mod name (#2105)
* Changed folder structure to allow multi group registration * included actions.github.com directory for resources and controllers * updated go module to actions/actions-runner-controller * publish arc packages under actions-runner-controller * Update charts/actions-runner-controller/docs/UPGRADING.md Co-authored-by: Yusuke Kuoka <ykuoka@gmail.com>
This commit is contained in:
@@ -0,0 +1,212 @@
|
||||
package metrics
|
||||
|
||||
import (
|
||||
"github.com/actions/actions-runner-controller/apis/actions.summerwind.net/v1alpha1"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
hraName = "horizontalrunnerautoscaler"
|
||||
hraNamespace = "namespace"
|
||||
stEnterprise = "enterprise"
|
||||
stOrganization = "organization"
|
||||
stRepository = "repository"
|
||||
stKind = "kind"
|
||||
stName = "name"
|
||||
)
|
||||
|
||||
var (
|
||||
horizontalRunnerAutoscalerMetrics = []prometheus.Collector{
|
||||
horizontalRunnerAutoscalerMinReplicas,
|
||||
horizontalRunnerAutoscalerMaxReplicas,
|
||||
horizontalRunnerAutoscalerDesiredReplicas,
|
||||
horizontalRunnerAutoscalerReplicasDesired,
|
||||
horizontalRunnerAutoscalerRunners,
|
||||
horizontalRunnerAutoscalerRunnersRegistered,
|
||||
horizontalRunnerAutoscalerRunnersBusy,
|
||||
horizontalRunnerAutoscalerTerminatingBusy,
|
||||
horizontalRunnerAutoscalerNecessaryReplicas,
|
||||
horizontalRunnerAutoscalerWorkflowRunsCompleted,
|
||||
horizontalRunnerAutoscalerWorkflowRunsInProgress,
|
||||
horizontalRunnerAutoscalerWorkflowRunsQueued,
|
||||
horizontalRunnerAutoscalerWorkflowRunsUnknown,
|
||||
}
|
||||
)
|
||||
|
||||
var (
|
||||
horizontalRunnerAutoscalerMinReplicas = prometheus.NewGaugeVec(
|
||||
prometheus.GaugeOpts{
|
||||
Name: "horizontalrunnerautoscaler_spec_min_replicas",
|
||||
Help: "minReplicas of HorizontalRunnerAutoscaler",
|
||||
},
|
||||
[]string{hraName, hraNamespace},
|
||||
)
|
||||
horizontalRunnerAutoscalerMaxReplicas = prometheus.NewGaugeVec(
|
||||
prometheus.GaugeOpts{
|
||||
Name: "horizontalrunnerautoscaler_spec_max_replicas",
|
||||
Help: "maxReplicas of HorizontalRunnerAutoscaler",
|
||||
},
|
||||
[]string{hraName, hraNamespace},
|
||||
)
|
||||
horizontalRunnerAutoscalerDesiredReplicas = prometheus.NewGaugeVec(
|
||||
prometheus.GaugeOpts{
|
||||
Name: "horizontalrunnerautoscaler_status_desired_replicas",
|
||||
Help: "desiredReplicas of HorizontalRunnerAutoscaler",
|
||||
},
|
||||
[]string{hraName, hraNamespace},
|
||||
)
|
||||
// PercentageRunnersBusy
|
||||
horizontalRunnerAutoscalerReplicasDesired = prometheus.NewGaugeVec(
|
||||
prometheus.GaugeOpts{
|
||||
Name: "horizontalrunnerautoscaler_replicas_desired",
|
||||
Help: "replicas_desired of PercentageRunnersBusy",
|
||||
},
|
||||
[]string{hraName, hraNamespace, stEnterprise, stOrganization, stRepository, stKind, stName},
|
||||
)
|
||||
horizontalRunnerAutoscalerRunners = prometheus.NewGaugeVec(
|
||||
prometheus.GaugeOpts{
|
||||
Name: "horizontalrunnerautoscaler_runners",
|
||||
Help: "num_runners of PercentageRunnersBusy",
|
||||
},
|
||||
[]string{hraName, hraNamespace, stEnterprise, stOrganization, stRepository, stKind, stName},
|
||||
)
|
||||
horizontalRunnerAutoscalerRunnersRegistered = prometheus.NewGaugeVec(
|
||||
prometheus.GaugeOpts{
|
||||
Name: "horizontalrunnerautoscaler_runners_registered",
|
||||
Help: "num_runners_registered of PercentageRunnersBusy",
|
||||
},
|
||||
[]string{hraName, hraNamespace, stEnterprise, stOrganization, stRepository, stKind, stName},
|
||||
)
|
||||
horizontalRunnerAutoscalerRunnersBusy = prometheus.NewGaugeVec(
|
||||
prometheus.GaugeOpts{
|
||||
Name: "horizontalrunnerautoscaler_runners_busy",
|
||||
Help: "num_runners_busy of PercentageRunnersBusy",
|
||||
},
|
||||
[]string{hraName, hraNamespace, stEnterprise, stOrganization, stRepository, stKind, stName},
|
||||
)
|
||||
horizontalRunnerAutoscalerTerminatingBusy = prometheus.NewGaugeVec(
|
||||
prometheus.GaugeOpts{
|
||||
Name: "horizontalrunnerautoscaler_terminating_busy",
|
||||
Help: "num_terminating_busy of PercentageRunnersBusy",
|
||||
},
|
||||
[]string{hraName, hraNamespace, stEnterprise, stOrganization, stRepository, stKind, stName},
|
||||
)
|
||||
// QueuedAndInProgressWorkflowRuns
|
||||
horizontalRunnerAutoscalerNecessaryReplicas = prometheus.NewGaugeVec(
|
||||
prometheus.GaugeOpts{
|
||||
Name: "horizontalrunnerautoscaler_necessary_replicas",
|
||||
Help: "necessary_replicas of QueuedAndInProgressWorkflowRuns",
|
||||
},
|
||||
[]string{hraName, hraNamespace, stEnterprise, stOrganization, stRepository, stKind, stName},
|
||||
)
|
||||
horizontalRunnerAutoscalerWorkflowRunsCompleted = prometheus.NewGaugeVec(
|
||||
prometheus.GaugeOpts{
|
||||
Name: "horizontalrunnerautoscaler_workflow_runs_completed",
|
||||
Help: "workflow_runs_completed of QueuedAndInProgressWorkflowRuns",
|
||||
},
|
||||
[]string{hraName, hraNamespace, stEnterprise, stOrganization, stRepository, stKind, stName},
|
||||
)
|
||||
horizontalRunnerAutoscalerWorkflowRunsInProgress = prometheus.NewGaugeVec(
|
||||
prometheus.GaugeOpts{
|
||||
Name: "horizontalrunnerautoscaler_workflow_runs_in_progress",
|
||||
Help: "workflow_runs_in_progress of QueuedAndInProgressWorkflowRuns",
|
||||
},
|
||||
[]string{hraName, hraNamespace, stEnterprise, stOrganization, stRepository, stKind, stName},
|
||||
)
|
||||
horizontalRunnerAutoscalerWorkflowRunsQueued = prometheus.NewGaugeVec(
|
||||
prometheus.GaugeOpts{
|
||||
Name: "horizontalrunnerautoscaler_workflow_runs_queued",
|
||||
Help: "workflow_runs_queued of QueuedAndInProgressWorkflowRuns",
|
||||
},
|
||||
[]string{hraName, hraNamespace, stEnterprise, stOrganization, stRepository, stKind, stName},
|
||||
)
|
||||
horizontalRunnerAutoscalerWorkflowRunsUnknown = prometheus.NewGaugeVec(
|
||||
prometheus.GaugeOpts{
|
||||
Name: "horizontalrunnerautoscaler_workflow_runs_unknown",
|
||||
Help: "workflow_runs_unknown of QueuedAndInProgressWorkflowRuns",
|
||||
},
|
||||
[]string{hraName, hraNamespace, stEnterprise, stOrganization, stRepository, stKind, stName},
|
||||
)
|
||||
)
|
||||
|
||||
func SetHorizontalRunnerAutoscalerSpec(o metav1.ObjectMeta, spec v1alpha1.HorizontalRunnerAutoscalerSpec) {
|
||||
labels := prometheus.Labels{
|
||||
hraName: o.Name,
|
||||
hraNamespace: o.Namespace,
|
||||
}
|
||||
if spec.MaxReplicas != nil {
|
||||
horizontalRunnerAutoscalerMaxReplicas.With(labels).Set(float64(*spec.MaxReplicas))
|
||||
}
|
||||
if spec.MinReplicas != nil {
|
||||
horizontalRunnerAutoscalerMinReplicas.With(labels).Set(float64(*spec.MinReplicas))
|
||||
}
|
||||
}
|
||||
|
||||
func SetHorizontalRunnerAutoscalerStatus(o metav1.ObjectMeta, status v1alpha1.HorizontalRunnerAutoscalerStatus) {
|
||||
labels := prometheus.Labels{
|
||||
hraName: o.Name,
|
||||
hraNamespace: o.Namespace,
|
||||
}
|
||||
if status.DesiredReplicas != nil {
|
||||
horizontalRunnerAutoscalerDesiredReplicas.With(labels).Set(float64(*status.DesiredReplicas))
|
||||
}
|
||||
}
|
||||
|
||||
func SetHorizontalRunnerAutoscalerPercentageRunnersBusy(
|
||||
o metav1.ObjectMeta,
|
||||
enterprise string,
|
||||
organization string,
|
||||
repository string,
|
||||
kind string,
|
||||
name string,
|
||||
desiredReplicas int,
|
||||
numRunners int,
|
||||
numRunnersRegistered int,
|
||||
numRunnersBusy int,
|
||||
numTerminatingBusy int,
|
||||
) {
|
||||
labels := prometheus.Labels{
|
||||
hraName: o.Name,
|
||||
hraNamespace: o.Namespace,
|
||||
stEnterprise: enterprise,
|
||||
stOrganization: organization,
|
||||
stRepository: repository,
|
||||
stKind: kind,
|
||||
stName: name,
|
||||
}
|
||||
horizontalRunnerAutoscalerReplicasDesired.With(labels).Set(float64(desiredReplicas))
|
||||
horizontalRunnerAutoscalerRunners.With(labels).Set(float64(numRunners))
|
||||
horizontalRunnerAutoscalerRunnersRegistered.With(labels).Set(float64(numRunnersRegistered))
|
||||
horizontalRunnerAutoscalerRunnersBusy.With(labels).Set(float64(numRunnersBusy))
|
||||
horizontalRunnerAutoscalerTerminatingBusy.With(labels).Set(float64(numTerminatingBusy))
|
||||
}
|
||||
|
||||
func SetHorizontalRunnerAutoscalerQueuedAndInProgressWorkflowRuns(
|
||||
o metav1.ObjectMeta,
|
||||
enterprise string,
|
||||
organization string,
|
||||
repository string,
|
||||
kind string,
|
||||
name string,
|
||||
necessaryReplicas int,
|
||||
workflowRunsCompleted int,
|
||||
workflowRunsInProgress int,
|
||||
workflowRunsQueued int,
|
||||
workflowRunsUnknown int,
|
||||
) {
|
||||
labels := prometheus.Labels{
|
||||
hraName: o.Name,
|
||||
hraNamespace: o.Namespace,
|
||||
stEnterprise: enterprise,
|
||||
stOrganization: organization,
|
||||
stRepository: repository,
|
||||
stKind: kind,
|
||||
stName: name,
|
||||
}
|
||||
horizontalRunnerAutoscalerNecessaryReplicas.With(labels).Set(float64(necessaryReplicas))
|
||||
horizontalRunnerAutoscalerWorkflowRunsCompleted.With(labels).Set(float64(workflowRunsCompleted))
|
||||
horizontalRunnerAutoscalerWorkflowRunsInProgress.With(labels).Set(float64(workflowRunsInProgress))
|
||||
horizontalRunnerAutoscalerWorkflowRunsQueued.With(labels).Set(float64(workflowRunsQueued))
|
||||
horizontalRunnerAutoscalerWorkflowRunsUnknown.With(labels).Set(float64(workflowRunsUnknown))
|
||||
}
|
||||
Reference in New Issue
Block a user