Documentation
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.
Why do we create it ?
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.
What I can do
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.
Installation
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.
Environment Variable
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) |
Metrics
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 |