This package uses the Sentry web api to query for some statistics and outputs them in OpenMetrics format to be scraped by prometheus.
You can also fire it up as a docker container.
Using this exporter with Composer or Docker, you will need the hostname of your sentry installation and an auth token, which you can create
via https://<YOUR-SENTRY-HOST>/api/
if you're working with the Sentry self hosted. If you're working with Sentry cloud, you will
need to create the token via https://sentry.io/settings/account/api/auth-tokens/
.
Installation
composer req ujamii/prometheus-sentry-exporter
Usage in your custom file
require_once 'vendor/autoload.php';
$sentryBase = 'https://<YOUR-SENTRY-HOST>/api/0/';
$token = '<AUTH-TOKEN>'; // get from https://<YOUR-SENTRY-HOST>/api/
$exporter = new \Ujamii\OpenMetrics\Sentry\SentryExporter($token, $sentryBase);
$exporter->run();
The image is based on php:8.1-apache
and thus exposes data on port 80 by default. Assuming you fire this up with -p 80:80
on
localhost, you can see the metrics on http://localhost/metrics.
Configuration is done with 3 env variables: SENTRY_HOST
, AUTH_TOKEN
, USE_THROTTLING
and HTTP_PROTO
.
The first 2 are mandatory, HTTP_PROTO
is optional and set to https
by default. If you're working with the Sentry Cloud, your SENTRY_HOST
variable must be "sentry.io"
When you set USE_THROTTLING
to true/TRUE
or 1
, the exporter will throttle the API requests to prevent a rate limit. This is useful if you have a lot of projects and/or a lot of issues.
docker run -d --name sentry-prometheus -e SENTRY_HOST=sentry.foobar.com -e AUTH_TOKEN=foobarlongtoken -p "80:80" ghcr.io/ujamii/prometheus-sentry-exporter
Docker discontinues support for the free docker hub registry for orgs. The image is now available on GitHub Container Registry
The script will generate something like:
# TYPE sentry_open_issue_events gauge
# HELP sentry_open_issue_events Number of events for one unresolved issue.
sentry_open_issue_events{project_slug="foobar", project_name="Foo Bar", issue_logger="php", issue_type="error", issue_link="https://<SENTRY-HOST>/<ORGANIZATION>/<PROJECT>/issues/1797/", issue_level="error"} 16.000000
...