Skip to content

docs(dotnet): Document monitoring all Quartz.NET jobs - #20051

Draft
wedamija wants to merge 10 commits into
danf/dotnet-quartz-crons-docsfrom
danf/dotnet-quartz-bulk-crons-docs
Draft

wedamija wants to merge 10 commits into
danf/dotnet-quartz-crons-docsfrom
danf/dotnet-quartz-bulk-crons-docs

Conversation

@wedamija

@wedamija wedamija commented Oct 17, 2026 •

Copy link
Copy Markdown
Member

DESCRIBE YOUR PR

The .NET Quartz.NET Crons page now covers MonitorAllJobs and ExcludedJobs, which monitor every scheduled job without the SentryMonitorSlug attribute.

SDK PR: getsentry/sentry-dotnet#5741

Stacked on #19790.

Merge after the SDK release that includes it.

IS YOUR CHANGE URGENT?

  • Urgent deadline (GA date, etc.): YYYY-MM-DD
  • Other deadline: YYYY-MM-DD
  • No deadline: Not urgent, can wait up to 1 week+

@vercel

vercel Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
sentry-docs Ready Ready Preview Oct 29, 2026 8:58pm UTC
1 Skipped Deployment
Project Deployment Actions Updated
develop-docs Ignored Ignored Preview Oct 29, 2026 8:58pm UTC

Request Review

@github-actions github-actions Bot added the Priority: Needs Triage The PR description is missing valid priority information label Oct 17, 2026
@codeowner-assignment
codeowner-assignment Bot requested a review from a team October 17, 2026 00:39
@wedamija wedamija changed the title docs(dotnet): Document monitoring every Quartz.NET job docs(dotnet): Document monitoring all Quartz.NET jobs Oct 20, 2026
@github-actions github-actions Bot added Priority: Normal Docs review has no urgent deadline and removed Priority: Needs Triage The PR description is missing valid priority information labels Oct 20, 2026
…nto tmp-m20051

# Conflicts:
#	docs/platforms/dotnet/common/crons/quartz/index.mdx
@wedamija
wedamija requested a review from ric-oliv October 20, 2026 17:31
@wedamija
wedamija marked this pull request as ready for review October 20, 2026 17:31
@cursor

cursor Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

The plan checks Quartz crons page loads, .NET client errors, and .NET not-found counts. It also checks Hangfire and crons index loads on the same section. An issue escalates when errors or not-found counts rise, or those sibling pages stop loading.

Services: sentry-docs.

Mention @change-monitor in a comment to update the plan.

Plan

What changed

The Quartz.NET crons page now documents MonitorAllJobs and ExcludedJobs. Readers can monitor every scheduled job without a SentryMonitorSlug attribute. sentry-docs must deploy before this copy is live. Production does not yet serve this Quartz page.

Risk

Wrong copy can lead readers to skip job attributes and miss check-ins. A broken code tab can crash the Quartz page in the browser. A missing static path returns 404 for that URL. Shared .NET crons pages can fail if the doc tree breaks.

Intended effect

This change is a docs edit. Telemetry cannot confirm the new MonitorAllJobs copy. Loads of the Quartz crons page show only that the page is served. That path has no loads now. Treat the effect as absent if this path stays at zero while sibling crons pages still load.

Signal Baseline Window Rule Source
Quartz crons page loads 0 loads 2026-10-18T17:32:32Z to 2026-10-20T17:32:32Z rise above 0 Sentry org sentry, project docs, metric docs.page.load, path /platforms/dotnet/crons/quartz/

A zero after deploy can mean no visits. Traffic on this page may stay sparse.

Regression watch

This diff can break the Quartz page, its new code tabs, or sibling .NET crons pages. Pair error counts with .NET page loads. Quartz-path errors start at zero because the page is not served.

Signal Baseline Window Rule Source
.NET client error rate 0.33% (4 errors / 1202 loads) 2026-10-18T17:32:32Z to 2026-10-20T17:32:32Z hold in 0.17-0.50% Sentry org sentry, project docs, errors environment:production (transaction:*/platforms/dotnet* OR url:*/platforms/dotnet*) over docs.page.load path:*/platforms/dotnet*
Quartz-path client errors 0 errors 2026-10-18T17:32:32Z to 2026-10-20T17:32:32Z hold at 0 Sentry org sentry, project docs, errors environment:production (transaction:*/platforms/dotnet/crons/quartz* OR url:*/platforms/dotnet/crons/quartz*)
.NET not-found rate 0.08% (1 not-found / 1202 loads) 2026-10-18T17:32:32Z to 2026-10-20T17:32:32Z hold in 0-0.17% Sentry org sentry, project docs, metric docs.page.not_found, requested_path:platforms/dotnet over docs.page.load path:*/platforms/dotnet*
Sibling .NET crons page loads crons index 11 loads (0.91% of .NET), Hangfire 5 loads (0.42% of .NET) 2026-10-18T17:32:32Z to 2026-10-20T17:32:32Z hold crons index in 0.7-1.1% of .NET loads and Hangfire in 0.2-0.6% Sentry org sentry, project docs, metric docs.page.load, paths /platforms/dotnet/crons/ and /platforms/dotnet/crons/hangfire/

These sibling counts are small. Escalate if they fall to zero while .NET loads stay near 1200 per 48h. If Quartz error counts rise, inspect code tab exceptions on that page.

Not observable

The new MonitorAllJobs headings and sample code are not in telemetry. Customer SDK check-ins from this copy are not visible here. docs.page.not_found stores only the first two path segments, so a Quartz 404 mixes with other .NET 404s.

Get Slack DMs about this change: cursor.com/automations/rollouts

…nto danf/dotnet-quartz-bulk-crons-docs

# Conflicts:
#	docs/platforms/dotnet/common/crons/quartz/index.mdx
@linear-code

linear-code Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

NET-180

NET-483

@coolguyzone coolguyzone 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.

LGTM!

@wedamija
wedamija marked this pull request as draft October 23, 2026 21:12

### Monitor All Jobs

We recommend monitoring every scheduled job. Set `MonitorAllJobs`, and jobs whose trigger has a schedule Sentry can send are monitored without adding an attribute to each class. Jobs aren't monitored when they're started by a trigger that fires once (such as `TriggerJob`), use a calendar or a cron expression Sentry can't express (`L`, `W`, `#`, or a year), or are built without `WithIdentity`. Jobs whose triggers have different schedules, or that share a slug with a job on a different schedule, aren't monitored either, since Sentry can't create one monitor for them.

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.

This list leaves out some jobs MonitorAllJobs skips. A run is only monitored when Sentry can send its trigger's schedule (IsMonitoredByDefault), so these are skipped too:

  • Cron expressions without a fixed seconds value, or, on Quartz.NET 3.x, without ? in exactly one of the day fields.
  • Simple triggers that don't repeat forever at a whole number of minutes, hours or days, such as every 30 seconds or a set number of repeats. A trigger that fires once is only one case.
  • Cron triggers whose time zone has no IANA ID (Windows IDs on .NET Framework).

The last one disagrees with Monitor Schedule, which says those triggers are "sent without a schedule". That's true for jobs with [SentryMonitorSlug], but with MonitorAllJobs the job isn't monitored at all.

Rather than repeating the full list here, how about pointing to that section: "Jobs aren't monitored when the trigger that started them has a schedule Sentry can't send (see Monitor Schedule), or when they're built without WithIdentity."

```

If you delete a monitor while its job still has `[SentryMonitorSlug]`, the next run creates it again. To stop monitoring a job, disable the monitor in Sentry, or remove the attribute.
If you delete a monitor while its job is still monitored, the next run creates it again. To stop monitoring a job, disable the monitor in Sentry, remove the attribute, or add the job to `ExcludedJobs`.

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.

A run only creates the monitor again when its check-in includes a schedule. That isn't the case when SendMonitorConfig is off, or when the trigger's schedule can't be sent. With MonitorAllJobs and SendMonitorConfig = false, for example, a deleted monitor never comes back.

Suggested change
If you delete a monitor while its job is still monitored, the next run creates it again. To stop monitoring a job, disable the monitor in Sentry, remove the attribute, or add the job to `ExcludedJobs`.
If you delete a monitor while its job is still monitored, the next run that sends a schedule creates it again. To stop monitoring a job, disable the monitor in Sentry, remove the attribute, or add the job to `ExcludedJobs`.

This branch was successfully deployed

1 active deployment
Preview – sentry-docs — e3a2fac3 Deployed Oct 29, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Priority: Normal Docs review has no urgent deadline

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants