This application implements Kubernetes External Metrics API for Buildkite agent metrics.
- Build docker image
- Deploy to kubernetes
# docker build -t buildkite-agent-metrics-adapter:latest -f deployDockerfile .
# kubectl apply -f deploy/adapter.yaml
There are total counters prefixed with total_
and queue counters prefixed with queue_
.
Queue counters should be filtered by metric label queue
(see usage examples below)
Metric names are taken from Buildkite's collector package and converted to snake_case
.
F.e. counter for total number of running jobs will be total_
+ ToSnakeCase(RunningJobsCount)
= total_running_jobs_count
-
Autoscaling based on total number of waiting jobs:
apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: buildkite-autoscaler spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: buildkite minReplicas: 1 maxReplicas: 10 metrics: - type: External external: metric: name: total_waiting_jobs_count target: type: AverageValue averageValue: 1m
-
Autoscaling based on number of waiting jobs in specific queue:
apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: buildkite-autoscaler spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: buildkite minReplicas: 1 maxReplicas: 10 metrics: - type: External external: metric: name: queue_waiting_jobs_count selector: matchLabels: queue: default target: type: AverageValue averageValue: 1m