Skip to content

Observability refactor - update merge in current origin main, image fix - #776

Open
braxtonj wants to merge 9 commits into
mainfrom
observability_refactor
Open

braxtonj wants to merge 9 commits into
mainfrom
observability_refactor

Conversation

@braxtonj

Copy link
Copy Markdown

Checkly exposes metrics on one Prometheus endpoint and sends check runs as OpenTelemetry spans to one OTLP endpoint. The pages for that are split between Integrations > Observability and Resolve > Traces > Exporting today, and Chronosphere is not in the nav. This PR puts them in one place.

What changes

  • Integrations > Observability now holds everything that leaves Checkly: an Overview with a decision table, a Metrics subgroup with one Prometheus page, and a Traces subgroup with a generic OTLP page, Coralogix and thin vendor pages (Chronosphere, ClickStack, Cribl Stream, Dash0, Datadog, Grafana Tempo, Honeycomb, New Relic).
  • Resolve > Traces > Exporting becomes one router page that links the Integrations pages. No page path appears in two nav groups.
  • Prometheus is one page. The v2 content is the page, with labels, windows and edge cases documented from the current implementation. The v1 endpoint is a clearly labeled legacy section at the end with a deprecation warning. /integrations/observability/prometheus-v2 redirects to /integrations/observability/prometheus and the #heartbeat-metrics anchor survives.
  • The OTLP page is new and carries the span schema, the trace headers, the tags rules, a tested Collector receiver recipe, transport facts and troubleshooting. Vendor pages only carry the values each vendor needs and link back for everything else.
  • Coralogix is corrected in place: key location, endpoint derivation, the attribute list, the custom trace header behavior, and current RUM key names.
  • Resolve > Traces pages point at the new locations; how-it-works keeps its diagram and gets the four-type coverage wording. A vendor-neutral Mermaid version of the diagram sits on the page inside an MDX comment, ready to swap in.

Moves and redirects

Old New
resolve/traces/export/grafana-tempo integrations/observability/traces/grafana-tempo
resolve/traces/export/honeycomb integrations/observability/traces/honeycomb
resolve/traces/export/new-relic integrations/observability/traces/new-relic
resolve/traces/export/dash0 integrations/observability/traces/dash0
resolve/traces/export/to-chronosphere integrations/observability/traces/chronosphere
integrations/observability/prometheus-v2 merged into integrations/observability/prometheus

All six have docs.json redirects, so existing links, including the ones in the web app, keep working.

Verification

  • Schemas, labels and attributes were taken from the current implementation and checked live, not copied from the old pages.
  • Live verification on 2026-10-30: spans captured for every check type from public and private locations through a bearer-authenticated OpenTelemetry Collector, the receiver recipe on the OTLP page. The scrape config, every PromQL example, the Collector prometheus receiver block and the legacy v1 config were run in Prometheus 3.0.0 and otelcol-contrib 0.160.0. Both Prometheus endpoints were scraped and compared with the documented metric families (35 of 35 v2, 6 of 6 v1).
  • Vendor pages were validated against vendor documentation. Anything that could not be confirmed was left off.
  • Screenshots: fresh Checkly-side captures of the Prometheus card, the Export Traces settings and the Coralogix form, values masked. The Export Traces capture is reused on the Dash0 and Grafana Tempo pages. The existing vendor-side screenshots on those pages and on Coralogix sit under the rewritten steps, and the Prometheus page keeps its two earlier setup captures. The token visible in dash0-token.png is masked.

Deliberately dropped

  • Three old Checkly screenshots: dash0-checkly.png and export-traces-to-grafana-config.png (the old Export Traces form, replaced by the fresh capture) and prometheus_step2.png (the v1 activation card; v1 setup is now one sentence under Legacy v1 endpoint). The files stay on disk.
  • Grafana's "check that Tempo is installed" step and the third-party base64 website (replaced by a shell one-liner).
  • New Relic's "Traces feature enabled" step (not in New Relic's documentation).
  • The v2 page's Info banner and the v1 Warning (replaced by one deprecation Warning), the v1 "inactive after six hours" sentence, the v1 "30 to 60 s interval" advice, and the enable_compression tip (the endpoint gzips when the scraper asks, which Prometheus does by default).
  • A link to the private location agent metrics page: docs(private-locations): agent Prometheus metrics and single server port #755 is still open. Once it lands, add one sentence on the Prometheus page and point its Prometheus link at /integrations/observability/prometheus.
  • The deprecated agentic check type from the check_type enumeration.

Follow-up

  • Redraw checkly_otel_diagram.png on how-it-works: it hardcodes tracestate: checkly=true and lists Baselime among the vendors. The Mermaid version on the page is the starting point.

Open PRs that touch the same files

…merge the Prometheus pages

Move the Grafana Tempo, Honeycomb, New Relic, Dash0 and Chronosphere export pages from Resolve > Traces > Exporting to Integrations > Observability > Traces, with redirects from the old paths. Fold the Prometheus V2 page into the Prometheus page, keep the v1 content as a deprecated legacy section and redirect /integrations/observability/prometheus-v2 to it. Add a one-page Exporting router under Resolve > Traces, drop an unreferenced screenshot, repoint inbound links and regenerate the sitemap.
Document every v2 metric with its labels and window semantics from the current API code, including the hourly reset at 01:30, the +Inf-only histogram buckets, the tag parsing rule, token rotation, rate limit and error codes. Add an OpenTelemetry Collector receiver recipe and point Dashboards readers at the endpoint. Correct the legacy v1 section from code and a live scrape, and add the fallback scrape protocol Prometheus 3 needs for it. The scrape config, every PromQL example and the collector block were run against a live account. One new screenshot of the integration card replaces the two outdated activation screenshots.
…d the Datadog, ClickStack and Cribl Stream pages

The overview states the model in two sentences, routes readers with a decision table and lists coverage and limits. The OTLP page documents the span schema, trace headers, tag rules, transport facts and troubleshooting from the runner code, and carries the OpenTelemetry Collector receiver configuration that received real spans during verification. The three new vendor pages follow the thin template. Nav entries and a fresh Export Traces screenshot are included.
Coralogix: current key location and names, region versus team name, the attribute list deferred to the OTLP page, the custom trace header behavior, RUM key naming, and a fresh form screenshot. Vendor pages: one template with the endpoint, the key location, the header rows and where the spans appear, with values checked against each vendor's documentation. Grafana's third-party base64 site is replaced by a shell one-liner, the stale New Relic and Honeycomb paths are fixed, Dash0's trailing slash is gone and Chronosphere notes the Cortex XCOR rename.
The Exporting router lists every export page, the Resolve cards link the OTLP page, how-it-works gets a vendor-neutral Mermaid diagram and the four-type coverage wording with the span schema deferred to the OTLP page, and the custom headers section notes when CHECKLY_TRACEPARENT is empty. Link text on the heartbeat, autoscaling and dashboards pages matches the new Prometheus page title.
Tighten conditions the code imposes: when checkly_check_status is absent, the 0 reading of the HTTP status gauge, the 400 for non-boolean parameters, the cache refresh wait, revoked tokens working for up to ten minutes, the hourly window wording, the private location queue series sources, and tag keys that collide with built-in labels. On the OTLP page: what the URL check covers, header templating with environment variables and secrets, the instrumentation scope names, when checkly_debug appears, and the Coralogix custom header on Browser and Multistep checks. Reader fixes from review: a Collector row and limits on the overview, a fallback for unlisted backends, TLS in front of the sample receiver, and a troubleshooting entry for credentials in the URL.
# Conflicts:
#	integrations/observability/coralogix.mdx
#	integrations/observability/prometheus-v2.mdx
@braxtonj
braxtonj requested a review from stefanjudis October 30, 2026 22:20

This branch was successfully deployed

1 active deployment
staging — 6e88be21 Deployed Oct 30, 2026 by mintlify[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant