Skip to content

docs(workers-for-platforms): per-tenant observability with Workers Logs - #32760

Open
Ankcorn wants to merge 4 commits into
cloudflare:productionfrom
Ankcorn:tankcorn/wfp-workers-logs
Open

docs(workers-for-platforms): per-tenant observability with Workers Logs#32760
Ankcorn wants to merge 4 commits into
cloudflare:productionfrom
Ankcorn:tankcorn/wfp-workers-logs

Conversation

@Ankcorn

@Ankcorn Ankcorn commented Aug 14, 2026

Copy link
Copy Markdown
Member

Why

The Workers for Platforms observability page didn't explain how platforms give each end user an isolated view of their own Worker's logs and metrics. It also described Tail Worker behaviour that no longer matches the runtime.

What

  • Lead the Logs section with Workers Logs as the recommended starting point — a fully managed logging platform (storage, indexing, queryable API) with no database, Logpush destination, or Tail Worker to operate.
  • Document enabling Workers Logs per user Worker via the observability block in upload metadata, and how the platform controls enablement/sampling.
  • Add the per-tenant query pattern: scope every Observability API query to the user Worker's $metadata.service in the cloudflare-workers dataset, applied server-side so one tenant can't read another's telemetry.
  • Add a GraphQL example for per-user metrics via workersInvocationsAdaptive filtered by scriptName (works without Workers Logs enabled).
  • Correct the Tail Worker section: logs are collected by attaching a Tail Worker directly to the user Worker — the previous claim about a dispatch-Worker tail auto-collecting for the whole namespace no longer matches runtime behaviour.

@cloudflare-docs-bot

cloudflare-docs-bot Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Review

✅ No issues found in commit 6c2deea.

Code Review

This code review is in beta and may not always be helpful — use your judgment.

No code review issues found.

Conventions

No convention issues found.

Style Guide Review

No style-guide issues found.

Commands

Only codeowners can run commands. Post a comment with the command to trigger it.

Command Description
/review Runs a review now. Incremental if a prior review exists, full if not.
/full-review Re-reviews the entire PR diff from scratch, ignoring incremental history. Useful after a rebase, when you want a fresh review, or if the bot gets out of sync and reports issues that no longer exist.
/ignore-review-limit Permanently lifts the 2-review automatic limit for this PR. Future pushes will trigger reviews as normal.
/disable-auto-review Stops automatic reviews from triggering on future pushes to this PR. Codeowners can still run /review or /full-review manually.
/rebase Rebases the PR branch against production. On conflict, attempts to resolve automatically using AI. Stops with an explanation if confidence is not high enough.

@irvinebroque irvinebroque left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

## Logs

Learn how to access logs with Workers for Platforms.
There are a few ways to access logs with Workers for Platforms. For most platforms, [Workers Logs](#workers-logs) is the best starting point: it is a fully managed logging platform, so you get storage, indexing, and a queryable API without building or operating a logging pipeline of your own. Reach for Logpush or Tail Workers when you need to forward logs to your own destination.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here and elsewhere in the docs — I think the "Workers Logs" versus Logpush framing here is confusing, because you can export both logs and traces like this:

https://developers.cloudflare.com/workers/observability/exporting-opentelemetry-data/

But when we say "reach for logpush" — that sends people towards:

https://developers.cloudflare.com/workers/observability/logs/logpush/

Which is different

Can DM about — but are we solving this?

@rianvdm rianvdm Aug 17, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes we are on the path of solving this. Logpush jobs and OTel Destinations will get folded into a single "Export" section in the Dash. Part of Birthday Week, can share docs if needed.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

great!

Use [Tail Workers](/workers/observability/logs/tail-workers/) instead of Logpush if you want granular control over formatting before logs are sent to their destination to receive [diagnostics channel events](/workers/runtime-apis/nodejs/diagnostics-channel), or if you want logs delivered in real-time.

Adding a Tail Worker to your dispatch Worker collects logs for both the dispatch Worker and for any user Workers in the dispatch namespace. Logs are automatically collected for all new Workers added to a dispatch namespace. To enable logging for an individual user Worker rather than an entire dispatch namespace, add the [Tail Worker configuration](/workers/observability/logs/tail-workers/#configure-tail-workers) directly to the user Worker.
To collect logs from a user Worker, add the [Tail Worker configuration](/workers/observability/logs/tail-workers/#configure-tail-workers) directly to that user Worker.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this actually the path we recommend?

I would expect the path here to involve something like

  • setting up logpush job
  • showing you how you can filter out first-party dispatch Worker logs, to get only user workers
  • showing you how you can filter only logs for a given user worker

Shipping off logs every invocation of a Tail Worker is not gonna work for most people's o11y pipelines, just can't handle the load

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No the recommended path is to use workers observability

The doc prioritises them

  1. use workers observability for fully managed pipeline and storage
  2. use logpush - let's catch up here :)
  3. use a tailworker - if you want granular control over formatting before logs are sent to their destination to receive diagnostics channel events, or if you want logs delivered in real-time.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But above we say:

There are a few ways to access logs with Workers for Platforms. For most platforms, Workers Logs is the best starting point: it is a fully managed logging platform, so you get storage, indexing, and a queryable API without building or operating a logging pipeline of your own. Reach for Logpush or Tail Workers when you need to forward logs to your own destination.

Which makes it sound like in order to push logs to your own destination you need to use Tail Workers or do something other than using Workers Observability

I don't understand why I can't enable observability (logs) like I can for tracing and export to 3rd party destination — and instead need to use tail workers or use a different flavor of logpush

@nevikashah

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah gotcha - I see the confusion. The word "destination" is overloaded here. This has nothing to do with the destination feature we shipped last year with the traces launch. I will rephrase that

Use the standard Upload User Worker API path, documented GraphQL
quantile fields, and prose instead of a two-item list.
Avoid "destination" — it collides with Observability destinations.
@Ankcorn
Ankcorn requested a review from irvinebroque August 18, 2026 20:35
@irvinebroque
irvinebroque enabled auto-merge (squash) August 18, 2026 22:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants