Skip to content

Refactor the Observability specific docs - #772

Closed
braxtonj wants to merge 6 commits into
mainfrom
observability_refactor
Closed

braxtonj wants to merge 6 commits into
mainfrom
observability_refactor

Conversation

@braxtonj

Copy link
Copy Markdown
Contributor

One model, told once: Checkly exposes metrics on one Prometheus endpoint, sends API check, URL monitor, Browser check and Multistep check runs as OpenTelemetry spans to one OTLP/HTTP URL, sends alerts anywhere via webhooks, and takes your application's traces in over OTLP. Today those pages are split between Integrations > Observability and Resolve > Traces > Exporting, Chronosphere is not in the nav at all, and two customers asked for "the OTel and Prometheus docs" in the last month with no single page to send.

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 the labels, windows and edge cases documented from the current API code. 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 gets a vendor-neutral Mermaid diagram and the four-type coverage wording.

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. The web app still links the old paths from Settings > Traces and from the check result page; they resolve through the redirects, and updating them is a follow-up for the app team.

Sources and verification

  • Schemas come from the monorepo at 63758c4b70 (2026-10-21), not from the old pages. Research notes with path:line citations are available from me on request.
  • Live verification on 2026-10-30 against a sandbox account: real spans captured for every check type from public and private locations through a bearer-authenticated OpenTelemetry Collector, which is the exact receiver recipe on the OTLP page; the Prometheus 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 diffed against the code research (35 of 35 v2 families, 6 of 6 v1). Verification notes with masked captures are available on request.
  • Vendor pages were validated against vendor documentation only (no vendor accounts). Anything the fact-check could not confirm was left off the page.
  • Screenshots are Checkly-side only: the Prometheus integration card, the Export Traces settings and the Coralogix form, all freshly captured with values masked.

Deliberately dropped

  • Vendor UI screenshots: Grafana's five and Dash0's two captures of vendor screens, plus the Coralogix UI captures cx_otel_int2.png and cx_rum_api_creation.png. The image files stay on disk; only the references are gone. The old Checkly screens export-traces-to-grafana-config.png, dash0-checkly.png, prometheus_step1.png, prometheus_step2.png and prometheus_v2_step2.png are superseded by the new captures.
  • 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 checkly_otel_diagram.png on how-it-works (hardcoded tracestate: checkly=true and a vendor list with Baselime), replaced by Mermaid; the file stays on disk.
  • The v2 page's top Info banner and the v1 page's Warning (replaced by one deprecation Warning), the v1 "inactive after six hours" sentence (not in code), the v1 "30 to 60 s interval" advice, and the enable_compression tip with its Prometheus 2.49 note (the endpoint gzips when the scraper asks, which Prometheus does by default).
  • The link to the Private Location agent metrics page, because that branch is unmerged. Add one sentence on the Prometheus page once platform/private-locations/agent-metrics lands, and point its Prometheus link at /integrations/observability/prometheus.
  • The deprecated agentic check type from the check_type enumeration.

Conflicts with in-flight branches

docs-audit/doc-238-casing-consistency touches coralogix.mdx, prometheus-v2.mdx (deleted here), resolve/traces/overview.mdx and the Dashboards overview title. All new text already uses its casing. If DOC-238 lands first: merge main into this branch (never rebase), resolve prometheus-v2.mdx as deleted, port its two "Traceroute" rows into prometheus.mdx if they still differ, take ours for coralogix.mdx, regenerate the sitemap. edvinas/agent-prometheus-metrics-docs only collides on sitemap.xml; regenerate it.

…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.
@mintlify

mintlify Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
checkly-422f444a 🟢 Ready View Preview Oct 30, 2026, 1:43 PM

This branch was successfully deployed

1 active deployment
staging — f67728dd 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