Skip to content

Observability

Metrics

GET /github/metrics (see Reference: API) serves Prometheus exposition-format text and is unauthenticated on the OpenBao path — point a Prometheus scrape job at it directly. Metric names carry the vault_github_token_ prefix (retained from upstream for scrape-config compatibility).

MetricTypeLabelsDescription
vault_github_token_request_duration_secondssummarysuccess, installation_id, org_name, permissions, repository_ids, repositoriesDuration of github/token and github/token/:permissionset requests. The label values for permissions/repository_ids/repositories are booleans (true/false) indicating whether that constraint was present on the request, not their content.
vault_github_token_installations_duration_secondssummarysuccessDuration of github/installations requests.
vault_github_token_revocation_request_duration_secondssummarysuccessDuration of token revocation calls to GitHub.
vault_github_token_build_infogauge (constant 1)version, and other standard build-info labelsIdentifies the running plugin build.

Standard Go runtime metrics are also registered globally (go_*, process_*) alongside the metrics above.

Grafana dashboard

dashboard.json at the repository root is a ready-to-import Grafana dashboard built against these metrics. It shows:

  • Token creation successes over period — count of successful github/token requests in the selected time range.
  • Token creation failures over period — count of failed requests, surfaced only when non-zero.
  • Plugin version — the currently reporting vault_github_token_build_info version label.
  • Token creation latency — request-duration quantiles over time.

Importing it

  1. In Grafana, go to Dashboards → New → Import.
  2. Upload dashboard.json from the repository (or paste its contents).
  3. When prompted, map the DS_PROMETHEUS input to the Prometheus datasource that scrapes github/metrics.

The dashboard expects the metrics above to already be present under their vault_github_token_* names, so point Prometheus at the OpenBao path first and let at least one scrape interval pass before checking the import.