Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Uptime "Test Monitor" always fails with an empty HTTP 400 (uptime-checker API endpoint not configured)

Open Beginner friendly
#4,582 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@ayoubjemai is already working on this.

Since Oct 23, 2026.

  • #4583 by @ayoubjemai — open

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
76/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
docker-compose, python, shell
Domain
backend, devops

Research direction

Start with sentry/sentry.conf.example.py and compare its uptime region configuration with the workaround in the issue, especially the api_endpoint setting. Check how the self-hosted configuration passes this value to the uptime checker and whether the preview endpoint then sends its request. Done means Test Monitor returns a result and invalid assertions produce a validation error.

Written by the indexing model from the issue text.

Description

Waiting for: Product Owner
Self-Hosted Version

26.10.0

CPU Architecture

x86_64

Docker Version

29.9.2

Docker Compose Version

5.6.1

Machine Specification
  • My system meets the minimum system requirements of Sentry
Installation Type

Fresh install (also seen on an existing 26.9.0 install)

Steps to Reproduce
  1. Install self-hosted 26.10.0 with COMPOSE_PROFILES=feature-complete.
  2. Go to Monitors → Uptime → create a new monitor for https://example.com with the assertion "Status code = 200".
  3. Click Test Monitor.

Or through the API:

curl -i -X POST http://localhost:9000/api/0/organizations/<org>/uptime-preview-check/ \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  --data '{"url":"https://example.com","timeoutMs":5000,"method":"GET","headers":[],"body":null,"assertion":{"root":{"op":"and","children":[{"op":"status_code_check","operator":{"cmp":"equals"},"value":200}]}}}'
Expected Result

Test Monitor runs the check and shows the result (success, or the reason it failed).

Actual Result

The UI shows "Uptime check failed" with no reason. The API returns:

HTTP/1.1 400 Bad Request
Content-Length: 0

The uptime-checker never receives a request. Scheduled checks keep working.

Image

Also, invalid assertions (e.g. JSONPath $.[[) are saved without any validation error.

Cause: Sentry's default uptime region has no api_endpoint, and the self-hosted config never sets it, so Sentry skips the calls to the uptime-checker's HTTP API (uptime-checker:12345).

Workaround for existing installs: add this to sentry/sentry.conf.py, then docker compose restart web taskworker:

from sentry.conf.types.uptime import UptimeRegionConfig

UPTIME_REGIONS = [
    UptimeRegionConfig(
        slug="default",
        name="Default Region",
        config_redis_cluster=SENTRY_UPTIME_DETECTOR_CLUSTER,
        api_endpoint="uptime-checker:12345",
    ),
]

I'll open a PR with this change to sentry/sentry.conf.example.py.

Event ID

No response

Dominant language
Shell
Stars
9.6k
Forks
2k
Avg merge
1d 19h
Merged PRs (30d)
25

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from getsentry/self-hosted

All issues in getsentry/self-hosted

Similar issues

More Shell/Bash issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.