GitHub, OTel & more
Connect SutramX to GitHub Issues, OpenTelemetry and other tools: open issues for incidents, export check data and link your stack.
Besides alert channels like Slack, email and PagerDuty, SutramX connects to the tools your engineering team already uses. This page covers the GitHub issues integration, the OpenTelemetry export, Zapier, and where to find deploy tracking.
Alert channels are set up in Alerts → Channels & API, on the Integrations tab. Only the workspace owner can connect, edit or disconnect them in the dashboard.
GitHub issues#
The GitHub integration opens an issue in a repository when an incident starts, then comments on it and closes it when the monitor recovers. Use it when your team tracks outages in GitHub, or to keep a record of incidents next to the code.
What happens:
- Incident starts: SutramX opens an issue titled
[SutramX] <monitor name> is down. The body lists the monitor, its URL, the region, the error, the start time and a link to the incident. The issue gets theincidentlabel if the repository allows it. - Monitor recovers: SutramX comments
<monitor name> recovered after N min. Closing automatically.and closes the issue as completed. - Each incident gets at most one issue per GitHub connection, even if the alert is retried.
- The issue link is also shown on the incident in SutramX (
github_issue_urlin the API).
The GitHub integration follows the same plan availability as webhook alerts. See Plans & limits.
Connect with the GitHub App#
If the GitHub card shows a Connect with GitHub button, this is the quickest option:
- Go to Alerts → Channels & API and find the GitHub card.
- Click Connect with GitHub.
- In GitHub, install the SutramX GitHub App on the repositories that should get incident issues. The app only gets access to issues.
- Back in SutramX, choose the repository in Choose a repository and click Connect.
To send issues to another repository as well, click Connect another with GitHub.
Connect with a personal access token#
If you prefer not to install the app, or the button isn't shown, use a fine-grained personal access token:
- In GitHub, go to Settings → Developer settings → Fine-grained tokens → Generate new token.
- Under Repository access, choose only the repository that should get incident issues.
- Under Permissions, set Issues to Read and write.
- Generate the token and copy it.
- In SutramX, open the GitHub card. If you see Connect with GitHub, click Use a personal access token instead.
- Fill in the fields and click Connect.
| Field | What it does | Limits |
|---|---|---|
| Repository | Where issues are opened. | owner/repo format, for example acme/web. |
| Personal access token | Lets SutramX create, comment on and close issues. | Required. Stored encrypted and only shown masked (last 4 characters). |
When you connect, SutramX checks the token and repository automatically. Send test also checks access and that issues are enabled on the repository. It does not create an issue.
Choose which monitors open issues#
By default a connection gets alerts for every monitor. To limit it, open the connection's menu, choose Routing, then click Save routing. You can pick all monitors, specific monitor groups, or specific monitors, and whether degraded checks count. For example, connect one repository per team and route each team's monitor group to its own repository.
You can add up to 10 GitHub connections, for example one per repository.
Troubleshooting GitHub issues#
| Problem | What to do |
|---|---|
| Test says "Issues are disabled on this repository" | Turn on issues in the repository's settings on GitHub. |
| Test fails with a 401 or 403 from GitHub | The token expired, was revoked, or lacks Issues: Read and write on that repository. Create a new token and edit the connection. |
| "The SutramX GitHub App no longer has access" | The app was uninstalled or the repository removed from it. Click Connect with GitHub again, then disconnect the old connection. |
| "Repository must be in owner/repo format" | Enter only owner/repo, not the full URL. |
| Issue opened but not closed | Issues are closed when the monitor recovers. Check the connection's status on the GitHub card for delivery errors. |
OpenTelemetry export#
The OpenTelemetry export sends every check result to your own OpenTelemetry collector or tracing backend as a span. You can then chart SutramX checks next to your application traces, or alert on them with the tools you already use.
What is exported#
Each check run becomes one span, sent as OTLP/HTTP JSON.
| Span part | Value |
|---|---|
| Name | <monitor type> check, for example http check. |
| Kind | Client. |
| Duration | The measured response time. |
| Status | OK when the check was up. Error otherwise, with the error message. |
| Trace ID | The check's ID, so a span can be matched to the check in SutramX. |
Span attributes:
| Attribute | Description |
|---|---|
sutramx.check.id | Check ID. |
sutramx.check.status | up, down or degraded. |
sutramx.check.response_time_ms | Response time in milliseconds. |
sutramx.monitor.id | Monitor ID. |
sutramx.monitor.name | Monitor name. |
sutramx.monitor.type | Monitor type, such as http or ping. |
sutramx.region | Probe region code. |
url.full | The monitor URL without the query string or credentials. |
server.address | The monitor's hostname. |
http.response.status_code | HTTP status code, when there is one. |
error.type | Error category, on failed checks. |
Resource attributes: service.name (your setting, default sutramx-checks), service.namespace = sutramx, sutramx.workspace.id and telemetry.sdk.name = sutramx. The instrumentation scope is sutramx.checks.
Query strings and user names/passwords in monitor URLs are never exported, because they often contain tokens.
Set up the export#
- Open Account settings → OpenTelemetry.
- Fill in the fields below.
- Tick Export check results.
- Click Save.
- Click Send test span and check that it arrives in your backend.
| Field | What it does | Default / limits |
|---|---|---|
| Endpoint (https) | Your collector's OTLP/HTTP traces URL. A URL with no path gets /v1/traces added. | Must be a public https:// address, up to 2,048 characters. Plain http:// and private addresses are rejected. |
| service.name | The service.name resource attribute on every span. | sutramx-checks, up to 120 characters. |
| Headers | Authentication or routing headers, one Name: value per line, for example Authorization: Bearer <token>. | Up to 20 headers. Values up to 4,096 characters, on one line. Host, Content-Type, Content-Length and other transport headers can't be set. |
| Export check results | Turns the export on or off without losing the settings. | Off. |
Header values are stored encrypted and never shown again. The settings show only the header names. To change them, click Replace headers and enter the full set.
To stop exporting, untick Export check results and save, or click Remove to delete the settings.
Delivery and status#
- Spans are sent in batches, about every 5 seconds or every 200 spans.
- If your endpoint fails, SutramX drops that batch and backs off, waiting up to 10 minutes between attempts. Spans are not replayed later.
- Up to 2,000 spans are buffered per workspace. Beyond that the oldest are dropped.
- The settings show On or Off, when the last export succeeded, how many spans were sent, and the last error.
Configure the export with the API#
You can also manage the export with an API key that has Automation access:
curl -s -X PUT "https://api.sutramx.com/automation/otel" \
-H "Authorization: Bearer $SUTRAMX_AUTOMATION_KEY" \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"endpoint": "https://otlp.example.com",
"service_name": "sutramx-checks",
"headers": { "Authorization": "Bearer <collector token>" }
}'| Field | Type | Description |
|---|---|---|
enabled | boolean | Turn the export on or off. |
endpoint | string | Collector URL, as in the dashboard. Required the first time. |
headers | object | Replaces all stored headers. Leave it out to keep them. Send {} to remove them. |
service_name | string | 1–120 characters. |
The response shows the settings and delivery status. Header values are never returned, only header_names:
{
"configured": true,
"enabled": true,
"endpoint": "https://otlp.example.com/v1/traces",
"header_names": ["Authorization"],
"service_name": "sutramx-checks",
"last_export_at": null,
"last_error": null,
"last_error_at": null,
"consecutive_failures": 0,
"exported_spans": 0
}GET /automation/otel reads the settings, DELETE /automation/otel removes them, and POST /automation/otel/test sends one test span (10 tests per 15 minutes).
Troubleshooting the export#
| Error | What to do |
|---|---|
| "The collector rejected the request (HTTP 401/403)" | Check the authentication header your backend expects, then replace the headers. |
| "The collector answered HTTP 404" | Check the path. OTLP/HTTP traces usually go to /v1/traces. |
| "points to a private or internal network address" | The export only reaches public addresses. Expose your collector publicly over HTTPS. |
| "The collector URL must start with https://" | Use an HTTPS endpoint. Headers often carry tokens, so plain HTTP isn't allowed. |
Zapier#
Use Zapier to send SutramX alerts to apps that don't have a built-in channel, such as a spreadsheet, a ticketing tool or an SMS gateway of your own.
- In Zapier, create a Zap with the Webhooks by Zapier → Catch Hook trigger.
- Copy the custom webhook URL Zapier gives you.
- In SutramX, go to Alerts → Channels & API, open the Zapier card and paste the URL into Link from Zapier.
- Click Connect. SutramX sends a test event to the hook, which you can use to map fields in Zapier.
Zapier receives the same events as other chat channels: monitor down and recovered alerts, SSL certificate and domain expiry warnings, and maintenance notices. Zapier follows the same plan availability as webhook alerts. For your own code, a webhook gives you signed deliveries instead.
Deploy events#
SutramX can record your deployments and show them next to incidents, so you can see whether a deploy caused an outage. You can send deploys from GitHub or GitLab webhooks, or from your CI with the API. Deploy events are on the Deploy events tab of Alerts → Channels & API. See Deployment correlation for the setup.
Related
- Developer overview
- REST API
- Webhooks
- Slack, Teams & chat apps
- Deployment correlation
- Features: Reliability Insights
- Integrations: GitHub issues alerts setup and Webhooks alerts setup
- More from SutramX: All alert integrations
Last updated . Something unclear or missing on this page? Tell us at support@sutramx.com.