The GitHub data source plugin for Grafana enables you to query and visualize data directly from your GitHub repositories and organizations. With this plugin, you can monitor repository activity, track issues and pull requests, analyze workflow runs, and more from within Grafana.
Query types
The data source supports the following query types, which you can select from the Query Type dropdown in the query editor:
Commits: Retrieve a list of commits for a branch or ref within a repository, including commit message, author, and timestamp.
Issues: List issues in a repository, using the GitHub query syntax to filter the response.
Contributors: Get a list of contributors to a repository.
Repositories: List repositories for a user or organization.
Milestones: Retrieve milestones for a repository, which can be used to group issues and pull requests.
Packages: List packages published from a repository in an organization.
Vulnerabilities: Query security vulnerabilities detected in a repository.
Projects: List projects associated with a user or organization.
Stargazers: Get a list of users who have starred a repository, including the ability to plot a total count over time.
Workflows: List GitHub Actions workflows defined in a repository.
Workflow usage: Retrieve usage statistics for a workflow, such as run counts and durations.
Workflow runs: List runs for a specific workflow, including status, conclusion, and timing information.
Commits
Retrieve a list of commits for a branch or ref within a repository, including commit message, author, and timestamp. Useful for tracking code changes, deployment activity, or contributor history.
Query options
Name
Description
Required
Owner
The GitHub user or organization that owns the repository
Yes
Repository
The name of the repository
Yes
Ref (Branch/Tag)
The branch or tag to list commits against
Yes
Sample queries
Show all commits to the main branch of the grafana/grafana repository:
Owner: grafana
Repository: grafana
Ref: main
Show all commits against a tag:
Owner: grafana
Repository: grafana
Ref: v12.0.0
Response
Name
Description
id
Commit ID
author
Name of the commit author
author_login
GitHub handle of the commit author
author_company
Company name of the commit author
committed_at
When the change was committed: YYYY-MM-DD HH:MM:SS
pushed_at
When the commit was pushed: YYYY-MM-DD HH:MM:SS
message
The commit message
Issues
List issues in a repository using the GitHub query syntax to filter the response. Useful for tracking open bugs, feature requests, or project tasks.
The time field to filter the responses on, can be: CreatedAt, ClosedAt, UpdatedAt, or none
Yes
Sample queries
Show all open pull requests authored by Renovate in the grafana/plugin-tools repository:
Owner: grafana
Repository: grafana
Query: is:open author:app/renovate
Time field: none
Response
Name
Description
number
Pull request number
title
Pull request title
url
URL to the pull request
additions
Total number of lines of code that have been added or altered in the pull request
deletions
Total number of lines of code that have been removed or altered in the pull request
repository
Repository for the pull request
state
Can be open, closed, or merged
author_name
Name of the GitHub user who created the pull request
author_login
GitHub handle of the GitHub user who created the pull request
author_email
Email address of the GitHub user who created the pull request
author_company
Company name of the GitHub user who created the pull request
closed
Whether the pull request is closed: true or false
is_draft
Whether the pull request is in draft: true or false
locked
Whether the pull request has been locked: true or false
merged
Whether the pull request has been merged
mergeable
Whether the pull request can be automatically merged: MERGEABLE, CONFLICTING, or UNKNOWN
closed_at
When the pull request was closed: YYYY-MM-DD HH:MM:SS
merged_at
When the pull request was merged: YYYY-MM-DD HH:MM:SS
merged_by_name
Name of the GitHub user who merged the pull request
merged_by_login
GitHub handle of the GitHub user who merged the pull request
Labels
Get all labels defined in a repository, useful for categorizing issues and pull requests.
Query options
Name
Description
Required
Owner
The GitHub user or organization that owns the repository
Yes
Repository
The name of the repository
Yes
Query
Filter on text in name and description for labels
No
Sample queries
Show all labels for the grafana/grafana repository:
Owner: grafana
Repository: grafana
Response
Name
Description
name
Label name
color
Hexadecimal number
description
Label description
Repositories
List repositories for a user or organization.
Note
This query returns a maximum of 1000 results.
Query options
Name
Description
Required
Owner
A GitHub user or organization
Yes
Repository
Filter on the name of the repository
No
Sample queries
Show all repositories for the grafana organization:
Organization: grafana
Response
Name
Description
name
Name of the repository
owner
Organization or user who owns the repository
name_with_owner
Returns the owner and repository name in the format <owner>/<repository>, for example: grafana/loki
url
URL for the repository
forks
The number of forks for a repository
is_mirror
Whether the repository is a mirror of another repository: true or false
is_private
Whether the repository is private: true or false
created_at
When the repository was created: YYYY-MM-DD HH:MM:SS
Milestones
Retrieve milestones for a repository, which can be used to group issues and pull requests.
Query options
Name
Description
Required
Owner
The GitHub user or organization that owns the repository
Yes
Repository
The name of the repository
Yes
Query
Filter on text in the milestone title
No
Sample queries
Show all milestones for the grafana/grafana repository for v11 of Grafana:
Owner: grafana
Repository: grafana
Query: 11.
Response
Name
Description
title
Milestone title
author
GitHub handle of the user who created the milestone
closed
Whether the milestone is closed: true or false
state
One of OPEN or CLOSED
created_at
When the milestone was created: YYYY-MM-DD HH:MM:SS
closed_at
When the milestone was closed: YYYY-MM-DD HH:MM:SS
due_at
When the milestone is due by: YYYY-MM-DD HH:MM:SS
Note
Milestone titles can be anything and are therefore parsed as a string. This means sorting by title may appear incorrect if you have numeric milestones, for example: 12.0.0. Transformations can be used to change the data type in this scenario.
Packages
List packages published from a repository in an organization.
Note
This query does not support querying npm, RubyGems, or NuGet packages.
Query options
Name
Description
Required
Owner
The GitHub user or organization that owns the repository
Yes
Repository
The name of the repository
Yes
Package type
One of: MAVEN, DOCKER, DEBIAN, or PYPI
Yes
Names
Filter for packages using a comma-separated list of names
No
Sample queries
Show all packages uploaded to the grafana organization:
Organization: grafana
Response
Name
Description
name
Package name
platform
Platform or registry where the package is published
version
Package version
type
Package type (e.g., MAVEN, DOCKER, DEBIAN, PYPI)
prerelease
Whether the package version is a prerelease: true or false
downloads
Number of downloads for the package version
Vulnerabilities
Query security vulnerabilities detected in a repository.
Query options
Name
Description
Required
Owner
The GitHub user or organization that owns the repository
Yes
Repository
The name of the repository
Yes
Sample queries
Show all security advisories for the grafana/grafana repository:
Owner: grafana
Repository: grafana
Response
Name
Description
value
Custom field which allows for counting or aggregation, always returns 1
created_at
When the vulnerability alert was created (when the vulnerability was published on GitHub): YYYY-MM-DD HH:MM:SS
dismissed_at
When the vulnerability alert was dismissed, if applicable: YYYY-MM-DD HH:MM:SS
dismissed_reason
Reason the vulnerability alert was dismissed (e.g., false positive, won’t fix), if applicable
withdrawn_at
When the advisory was withdrawn, if applicable: YYYY-MM-DD HH:MM:SS
packageName
Name of the affected package
advisoryDescription
Description of the vulnerability or advisory
firstPatchedVersion
The first version of the package where the vulnerability is fixed
vulnerableVersionRange
The range of package versions affected by the vulnerability
cvssScore
CVSS (Common Vulnerability Scoring System) score for the vulnerability
cvssVector
CVSS vector string describing the scoring metrics
permalink
URL to the GitHub Security Advisory or alert
severity
Severity level of the vulnerability (e.g., LOW, MODERATE, HIGH, CRITICAL)
state
State of the vulnerability alert (e.g., OPEN, FIXED, DISMISSED)
Projects
List projects associated with a user or organization.
Note
This query returns a maximum of 200 results.
Query options
Name
Description
Required
Project Owner
One of Organization or User
Yes
Organization
Organization for the Project (shown when Organization was previously selected)
Yes
User
User for the Project (shown when User was previously selected)
Yes
Project Number
Enter a specific Project Number to query for associated items
No
Filter
Add key value filters based on the fields for project items (shown if Project Number specified)
No
Sample queries
Show all projects for the grafana/grafana repository:
Project Owner: organization
Organization: grafana
Show all pull requests for the “Dashboards” project in the Grafana organization:
Project Owner: organization
Organization: grafana
Project Number: 202
Filter: type equal PULL_REQUEST
Response
When no Project Number is specified
Name
Description
number
The project number
title
Title of the project
url
URL for the project
closed
Whether the project has been closed: true or false
public
Whether the project is public: true or false
closed_at
When the project was closed: YYYY-MM-DD HH:MM:SS
updated_at
When the project was last updated
created_at
When the project was created
short_description
The description of the project
When a Project Number is specified
Note
GitHub Projects allow for customization of default fields and custom fields to be added. Therefore, the response can vary significantly between projects.
Name
Description
name
Name of the project item (issue or pull request)
id
Unique identifier for the project item
type
Type of the item (such as ISSUE, PULL_REQUEST)
status
Status of the item (such as “In development”, “Shipped”) - this can be configured on the project
labels
Comma-separated list of labels assigned to the item
assignees
Comma-separated list of users assigned to the item
reviewers
Comma-separated list of reviewers (for pull requests)
repository
Name of the repository the item belongs to
milestone
Milestone associated with the item
priority
Priority value or label
archived
Whether the item is archived: true or false
created_at
When the item was created: YYYY-MM-DD HH:MM:SS
updated_at
When the item was last updated: YYYY-MM-DD HH:MM:SS
closed_at
When the item was closed, if applicable: YYYY-MM-DD HH:MM:SS
(custom fields)
Any custom defined fields will also be returned alongside their values
Stargazers
Get a list of users who have starred a repository, including the ability to plot a total count over time.
Query options
Name
Description
Required
Owner
The GitHub user or organization that owns the repository
Yes
Repository
The name of the repository
Yes
Sample queries
Show all stargazers for the grafana/grafana repository within the current time range:
Owner: grafana
Repository: grafana
Response
Name
Description
starred_at
When the user starred the repository: YYYY-MM-DD HH:MM:SS
start_count
Current total of stars for the repository at the time of the event
id
node_id - a unique identifier for the GitHub user which can be used in GitHub’s GraphQL API
login
GitHub handle of the user who starred the repository
git_name
Name of the GitHub user who starred the repository
company
Company name of the GitHub user who starred the repository
email
Email address of the GitHub user who starred the repository
url
URL to the GitHub profile for the user who starred the repository
Workflows
List GitHub Actions workflows defined in a repository.
Query options
Name
Description
Required
owner
GitHub user or organization that owns the repository
Yes
repository
Name of the repository
Yes
Time Field
The time field to filter the responses on, can be: CreatedAt or UpdatedAt
Yes
Sample queries
Show all workflows created within the grafana/grafana repository within the current time range:
Owner: grafana
Repository: grafana
Time Field: CreatedAt
Response
Name
Description
id
Unique identifier for the workflow
name
Name of the workflow
path
Path to the workflow YAML file in the repository
state
State of the workflow, can be: active, deleted, disabled_fork, disabled_inactivity, or disabled_manually
created_at
When the workflow was created: YYYY-MM-DD HH:MM:SS
updated_at
When the workflow was last updated: YYYY-MM-DD HH:MM:SS
url
API URL for the workflow
html_url
URL to the workflow file in the repository
badge_url
URL to the workflow status badge
Workflow usage
Retrieve usage statistics for a workflow, such as run counts and durations.
Query options
Name
Description
Required
owner
GitHub user or organization that owns the repository
Yes
repository
Name of the repository
Yes
Workflow
The workflow ID or file name. Use id or the filename from path from workflows queries
Yes
Sample queries
Show usage statistics for the Levitate detect breaking changes workflow in the grafana/grafana repository:
Owner: grafana
Repository: grafana
Workflow: detect-breaking-changes-levitate.yml
Response
Name
Description
name
Name of the workflow (or workflow job)
unique triggering actors
Number of unique users or actors who triggered runs of this workflow
runs
Total number of workflow runs in the selected period
current billing cycle cost (approx.)
Approximate cost for the current billing cycle (if applicable)
skipped
Number (and percentage) of runs that were skipped
successes
Number (and percentage) of successful runs
failures
Number (and percentage) of failed runs
cancelled
Number (and percentage) of cancelled runs
total run duration (approx.)
Total duration of all runs (formatted as hours, minutes, seconds)
longest run duration (approx.)
Duration of the longest single run
average run duration (approx.)
Average duration of all runs
p95 run duration (approx.)
95th percentile run duration
runs on Sunday
Number of runs started on Sunday
runs on Monday
Number of runs started on Monday
runs on Tuesday
Number of runs started on Tuesday
runs on Wednesday
Number of runs started on Wednesday
runs on Thursday
Number of runs started on Thursday
runs on Friday
Number of runs started on Friday
runs on Saturday
Number of runs started on Saturday
Workflow runs
List runs for a specific workflow, including status, conclusion, and timing information.
Query options
Name
Description
Required
owner
GitHub user or organization that owns the repository
Yes
repository
Name of the repository
Yes
Workflow
The workflow ID or file name. Use id or the filename from path from workflows queries
Yes
Branch
The head branch to filter on
No
Sample queries
Show all completed runs for the Levitate workflow in the grafana/grafana repository:
Owner: grafana
Repository: grafana
Workflow: detect-breaking-changes-levitate.yml
Response
Name
Description
id
Unique identifier for the workflow run
name
Name of the workflow or workflow job
head_branch
Name of the branch the workflow run was triggered on
head_sha
Commit SHA that triggered the workflow run
created_at
When the workflow run was created: YYYY-MM-DD HH:MM:SS
updated_at
When the workflow run was last updated: YYYY-MM-DD HH:MM:SS
html_url
URL to the workflow run in the GitHub web UI
url
API URL for the workflow run
status
Current status of the workflow run, can be: queued, in_progress, completed, waiting, requested, or pending
conclusion
Final conclusion of the workflow run, can be: success, failure, neutral, cancelled, skipped, timed_out, or action_required