Skip to content

Calls GitHub API for total count of Actions' runners and exports them to be scrapped by Prometheus

Notifications You must be signed in to change notification settings

mikolajgs/github-actions-runners-exporter

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

github-actions-runners-exporter

Exports number of GitHub Actions' runners. Calls GitHub API every X seconds to get the value.

Building

Run go build -o github-actions-runners-exporter to compile the binary.

Building docker image

To build the docker image, use the following command.

docker build -t github-actions-runners-exporter .

Running

Check below help message for run command:

Usage:  github-actions-runners-exporter run [FLAGS]

Runs the daemon, requires GITHUB_TOKEN environment variable

Required flags: 
  -o,    --organization     GitHub Organization owner of the runners
  -p,    --port         Port to expose /metrics endpoint on
  -s,    --sleep        Seconds between each request to GitHub API

Example usage

Set GITHUB_TOKEN environment variable with github token. The token needs to have read-only access to self-hosted runners within the organizational permissions (when using fine-grained token).

Run the program in the background with the following command:

./github-actions-runners-exporter run -o my-github-org-name -s 30 -p 8081

Open the /metrics endpoint to get the prometheus metrics that would include github actions' runners total count:

% curl -sSL http://127.0.0.1:8081/metrics          
# HELP github_actions_runners_total_count Number of running GitHub Actions' runners.
# TYPE github_actions_runners_total_count gauge
github_actions_runners_total_count 1
# HELP github_actions_runners_total_count_online Number of running GitHub Actions' runners with 'online' status.
# TYPE github_actions_runners_total_count_online gauge
github_actions_runners_total_count_online 0
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0
...
# TYPE go_threads gauge
go_threads 5
# HELP promhttp_metric_handler_requests_in_flight Current number of scrapes being served.
# TYPE promhttp_metric_handler_requests_in_flight gauge
promhttp_metric_handler_requests_in_flight 1
# HELP promhttp_metric_handler_requests_total Total number of scrapes by HTTP status code.
# TYPE promhttp_metric_handler_requests_total counter
promhttp_metric_handler_requests_total{code="200"} 0
promhttp_metric_handler_requests_total{code="500"} 0
promhttp_metric_handler_requests_total{code="503"} 0

Running in a docker container

Remember to export the GITHUB_TOKEN environment variable.

docker run -e GITHUB_TOKEN github-actions-runners-exporter run -o Cardinal-Cryptography -p 8081 -s 60

About

Calls GitHub API for total count of Actions' runners and exports them to be scrapped by Prometheus

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 87.3%
  • Dockerfile 12.7%