Skip to content

"Open site" action is unusable for monitors with internal URLs #3434

@InfiniteSemicolon

Description

@InfiniteSemicolon

Description

The "Open site" action in the monitor actions menu opens the monitor's url directly in the browser. This works for HTTP monitors targeting public URLs, but is broken for monitors that target internal/private endpoints — specifically hardware and port type monitors, and any http monitor pointed at an internal health endpoint.

Steps to reproduce

  1. Create a hardware monitor pointing to a Capture agent (e.g. http://capture:59232/api/v1/metrics)
  2. Or create an HTTP monitor pointing to an internal health endpoint (e.g. http://traefik:8080/ping)
  3. Click the gear/actions icon on the monitor row
  4. Click "Open site"

Expected behavior

Either:

  • The "Open site" action is hidden for monitors where the URL is not externally accessible (e.g. hardware, port types, or URLs using internal hostnames)
  • Or monitors support a separate optional externalUrl / siteUrl field that "Open site" uses when present, falling back to url when not set

Actual behavior

The browser attempts to navigate to the internal URL (e.g. http://capture:59232/api/v1/metrics), which is unresolvable from the user's machine. This results in a browser error page.

Affected monitor types

Type Why it's broken
hardware Always targets an internal Capture agent
port URL is just a hostname (e.g. postgres), no protocol
http (internal) When pointed at internal health endpoints like http://traefik:8080/ping instead of a public URL

Suggested fix

Add an optional siteUrl field to the monitor schema. When populated, "Open site" navigates to siteUrl instead of url. When empty, either fall back to url (current behavior) or hide the action.

This cleanly separates the monitoring target from the user-facing link, which is a common need when monitoring infrastructure behind a reverse proxy or on a private network.

Environment

  • Checkmate version: v3.5.1 (commit 9628aa02)
  • Deployment: Docker (backend-mono image)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions