github-developer-exporter
is a prometheus exporter which talks to GitHub or GitHub Enterprise API to get information about Organization
, Repository
, Issue
and Pull Request
connected to Assignee
, Requested Reviewers
, State
etc.
One of the problem in developer teams is that someone has a lot of tasks comparing with other members. Unbalanced assign of issues and of reviews makes them less productive. And we have no solution or tool to track time-series task assignee or requested reviewers. So we create it to check developer team conditions through time-series analysis via prometheus.
We can visualize time-series Organization
, Repository
, Issue
or Pull Request
with labels as a Prometheus Exporter.
Prometheus is a open source systems monitoring with time series data. Grafana is a open source analytics and monitoring solution for every database.
This exporter is written in Go, making it easy to build and deploy as a static binary. You can clone this repository and build yourself or pull image from DockerHub.
Name | Description |
---|---|
PORT | server port. default: 8888 |
MAX_WORKER | background worker num. default: 2 |
MAX_QUEUE | background queue size. default: 5 |
GITHUB_TOKEN | token for GitHub API. |
GITHUB_ORGS | organization name. if you want to check multiple organizations, you can set them with comma. e.g. "hoge,fuga" |
GITHUB_URL | If GH:E, you should set your gh:e endpoint. default: https://api.github.com/ |
GITHUB_INTERVAL | you should set it becaulse of API rate limit. default: 30 (minute) |
Metric name | Metric type | Labels/tags | Status |
---|---|---|---|
org_info | gauge | login =<login-field>name =<organization-name>url =<url>email =<organization-email>blog =<blog-url>created_at =<created timestamp>updated_at =<last update timestamp> |
STABLE |
org_total_repos_count | gauge | login =<login-field>name =<organization-name>url =<url>email =<organization-email>blog =<blog-url>created_at =<created timestamp>updated_at =<last update timestamp> |
STABLE |
org_public_repos_count | gauge | login =<login-field>name =<organization-name>url =<url>email =<organization-email>blog =<blog-url>created_at =<created timestamp>updated_at =<last update timestamp> |
STABLE |
org_private_repos_count | gauge | login =<login-field>name =<organization-name>url =<url>email =<organization-email>blog =<blog-url>created_at =<created timestamp>updated_at =<last update timestamp> |
STABLE |
repo_info | gauge | org_name =<organization-name>name =<repository-name>full_name =<fullname>owner =<organization-owner>url =<repository-url>default_branch =<default-branch>archived =<true or false>laungage =<mainly used laungage>created_at =<created timestamp>updated_at =<last updated timestamp>pushed_at =<last pushed timestamp> |
STABLE |
repo_open_issue_count | gauge | org_name =<organization-name>name =<repository-name>full_name =<fullname>owner =<organization-owner>url =<repository-url>default_branch =<default-branch>archived =<true or false>laungage =<mainly used laungage>created_at =<created timestamp>updated_at =<last updated timestamp>pushed_at =<last pushed timestamp> |
STABLE |
issue_info | gauge | org_name =<organization-name>repo_name =<repository-name>state =<open or close>title =<issue-title>created_at =<creation timestamp>updated_at =<last updated timestamp>closed_at =<If not closed, it returns "">assignee =<if not assigned, it returns "">label =<labels joined with comma. e.g. "good first issue,help wanted"> |
STABLE |
pull_request_info | gauge | org_name =<organization-name>repo_name =<repository-name>state =<open or close>title =<issue-title>created_at =<creation timestamp>updated_at =<last updated timestamp>closed_at =<If not closed, it returns "".>assignee =<If not assigned, it returns "".>reviewer =<If someone finished review, it does not return them.>label =<labels joined with comma. e.g. "good first issue,help wanted"> |
STABLE |