Obervability
Services
AudiTrace
Resources▾
Contact
Book a free audit
From the audit · Alerting
1,617 maintenance windows: how alerting goes quiet without anyone deciding
Suppression accumulates one legitimate decision at a time. On one tenant it reached 1,617 permanent or expired windows, plus 106 entity-level overrides with detection switched off.
Published 16 September 2026
Silence has no symptom
Alerting fails in one direction only. A noisy alert is reported within the hour by the person it woke; a suppressed one is reported by nobody, ever, because a suppressed problem is not a quiet problem — it is not a problem at all. Nothing is logged that a human reads, no dashboard tile turns amber, and the next incident review has no artefact to point at.
So configuration drifts towards silence in a way it never drifts towards noise. That asymmetry, not carelessness, is what produces a four-figure count of open maintenance windows.
How you get to 1,617
One window per release, per service, opened by a deployment pipeline that has no step for closing it. One opened by hand during an incident at 02:00, scoped generously because nobody wanted to argue about scope at 02:00. One opened for a migration with an end date that has since passed — which, depending on how it was configured, either expired cleanly or kept suppressing.
Each of those was a correct decision at the time. None of them was ever a decision to stop alerting on that service indefinitely, which is nevertheless what the tenant now does.
The second mechanism: entity-level overrides
Maintenance windows are at least visible in one list. Anomaly-detection overrides are worse: they live on the entity, they are invisible from the global configuration screens, and they turn detection off rather than routing it elsewhere. On the same tenant there were 106 of them.
The pattern behind them is familiar — a host or service was noisy during an incident, somebody disabled detection on it to get through the night, and the re-enable never happened because it was never a ticket.
The shape of the query
The window inventory with its schedule, which is enough to separate "ends on Friday" from "never ends":
DQL
fetch dt.settings.maintenance_window
| fields name, enabled, scheduleType = schedule.type, end = schedule.end, scope
| filter enabled == true and (scheduleType == "PERMANENT" or end < now())
What to do, in what order
Do not re-enable everything. A tenant that has been quiet for two years will produce a wall of problems on the first day, most of them true, and the team will turn it all off again by Friday — a worse outcome than where you started.
Order by blast radius instead: windows scoped to production services that page someone, then overrides on entities that carry customer traffic, then the long tail. Re-enable in batches small enough that the resulting problems can be triaged rather than skimmed, and fix the underlying noise as you go. On the audited tenant this was the first remediation, because it changes whether an incident reaches a human and costs nothing to reverse.
The finding behind this piece
Permanent or expired maintenance windows
Scale
1,617
Impact
Alerting silently suppressed
The takeaway
Nobody decided to stop alerting. 1,617 people decided something reasonable, once each, and nothing in the product asked whether the total still made sense.
More from the series
The $91,576 question: Full-Stack hosts with nothing monitored on them
From the audit · FinOps
The Grail bucket nobody chose: 462 days of retention
From the audit · Grail
Personal data in logs: 50 sources, about 30.7 million records a day
From the audit · Pipelines
What actually lands on a DPS invoice
From the audit · FinOps
Find out what your own tenant says.
One read-only run, 71 checks, and the source behind every finding. You keep the report either way.
Book a free audit
AudiTrace
Find out what your Obervability is actually doing.
An audit takes one run. The findings take one meeting. What you do with them is up to you.
Certified Dynatrace experts
+1
Obervability
Dynatrace implementation, managed services and support. Every finding comes with the source behind it.
Services
Services
AudiTrace
Case study
Guides
Dynatrace audit
Dynatrace cost optimization
Audit case study
Articles
Reach us
Contact
hello@obzervability.com
© 2026 Obervability · All rights reserved.
Privacy
Terms of use
Accessibility
Obervability
{{ t.navServices }}
AudiTrace
{{ resLabel }}▾
{{ t.navContact }}
{{ footGuideAudit }}
{{ footGuideCost }}
{{ footGuideCase }}
{{ footGuideArticles }}
{{ langLabel }} ▾
English
{{ altLabel }}
{{ t.heroKicker }}
{{ t.heroTitle }}
{{ t.heroSub }}
{{ t.heroCta1 }}
{{ t.heroCta2 }}
{{ t.badge }}
71
{{ t.stripChecks }}
19
{{ t.stripDomains }}
21
{{ t.stripRem }}
0
{{ t.stripWrite }}
{{ t.svcTitle }}
{{ t.s1t }}
{{ t.s1d }}
{{ t.s2t }}
{{ t.s2d }}
{{ t.s3t }}
{{ t.s3d }}
{{ t.caseKicker }}
{{ t.caseTitle }}
{{ t.caseCtx }}
{{ t.caseNote }}
{{ t.svcKick }}
{{ t.svcTitle2 }}
{{ t.svcSub }}
{{ t.heroCta1 }}
{{ t.svcCta2 }}
71
{{ t.svcL1 }}
$114–178k
{{ t.svcL2 }}
0
{{ t.svcL3 }}
{{ t.svcTracksT }}
{{ t.svcTracksD }}
{{ k.t }}
{{ k.g }}
{{ k.d }}
{{ t.fcTitle }}
{{ t.svcFindD }}
{{ f.t }}
{{ f.d }}
{{ t.svcEngT }}
{{ t.colEng }}
{{ t.colTrack }}
{{ t.colShape }}
{{ e.n }}
{{ e.k }}
{{ e.s }}
{{ t.svcCtaT }}
{{ t.svcCtaD }}
{{ g.kicker }}
{{ g.title }}
{{ g.sub }}
{{ g.cta1 }}
{{ g.cta2 }}
{{ g.s1h }}
{{ p.t }}
{{ g.s2h }}
{{ g.s2sub }}
{{ c.t }}
{{ c.d }}
{{ g.s3h }}
{{ g.s3sub }}
{{ g.s4h }}
{{ g.s4sub }}
{{ g.tableNote }}
{{ g.s5h }}
{{ g.s5sub }}
{{ k.t }}
{{ k.d }}
{{ g.s6h }}
{{ c.t }}
{{ c.d }}
{{ g.faqH }}
{{ f.q }}
{{ f.a }}
{{ g.closerT }}
{{ g.closerD }}
{{ g.cta1 }}
{{ g.closerCta }}
{{ g.kicker }}
{{ g.title }}
{{ g.sub }}
{{ g.cta1 }}
{{ g.cta2 }}
{{ g.s1h }}
{{ p.t }}
{{ g.s2h }}
{{ g.s2sub }}
{{ g.tableNote }}
{{ g.s3h }}
{{ c.t }}
{{ c.d }}
{{ g.s4h }}
{{ c.t }}
{{ c.d }}
{{ g.faqH }}
{{ f.q }}
{{ f.a }}
{{ g.closerT }}
{{ g.closerD }}
{{ g.cta1 }}
{{ g.closerCta }}
{{ dom.kicker }}
{{ dom.title }}
{{ dom.lede }}
{{ dom.ctaBook }}
{{ dom.ctaChecks }}
{{ dom.hReads }}
{{ r.t }}
{{ r.d }}
{{ dom.hWhy }}
{{ p.t }}
{{ dom.findLabel }}
{{ dom.findName }}
{{ dom.lblScale }}
{{ dom.findScale }}
{{ dom.lblImpact }}
{{ dom.findImpact }}
{{ dom.findNote }}
{{ dom.hFaqs }}
{{ f.q }}
{{ f.a }}
{{ dom.hOther }}
{{ dom.otherSub }}
{{ dom.closerT }}
{{ dom.closerD }}
{{ dom.ctaBook }}
{{ dom.closerCta }}
{{ c.kicker }}
{{ c.title }}
{{ c.sub }}
{{ c.cta1 }}
{{ c.cta2 }}
{{ f.n }}
{{ f.l }}
{{ c.s1h }}
{{ c.s1sub }}
{{ c.tableNote }}
{{ c.s2h }}
{{ p.t }}
{{ c.s3h }}
{{ a.t }}
{{ a.d }}
{{ c.s4h }}
{{ f.q }}
{{ f.a }}
{{ c.closerT }}
{{ c.closerD }}
{{ c.cta1 }}
{{ c.closerCta }}
{{ art.kicker }}
{{ art.title }}
{{ art.dek }}
{{ art.dateLine }}
{{ s.h }}
{{ p.t }}
DQL
{{ s.code }}
{{ art.findLabel }}
{{ art.findName }}
{{ art.scaleLabel }}
{{ art.findScale }}
{{ art.impactLabel }}
{{ art.findImpact }}
{{ art.takeawayLabel }}
{{ art.takeaway }}
{{ art.moreLabel }}
{{ art.ctaTitle }}
{{ art.ctaSub }}
{{ art.ctaBtn }}
AudiTrace
{{ artIndexKicker }}
{{ artIndexTitle }}
{{ artIndexSub }}
{{ t.privTitle }}
{{ t.privUpdated }}
{{ s.h }}
{{ s.b }}
{{ t.termsTitle }}
{{ t.termsUpdated }}
{{ s.h }}
{{ s.b }}
{{ t.a11yTitle }}
{{ t.a11yUpdated }}
{{ s.h }}
{{ s.b }}
{{ c.t }}
{{ c.d }}
{{ t.pTitle }}
{{ p.t }}
{{ p.d }}
{{ p.fig }}
{{ t.hTitle }}
{{ s.n }}
{{ s.t }}
{{ s.d }}
{{ t.way1k }}
{{ t.way1t }}
{{ t.way1d }}
{{ t.way2k }}
{{ t.way2t }}
{{ t.way2d }}
{{ t.waysNote }}
{{ t.fcTitle }}
{{ i.t }}
{{ i.d }}
{{ t.prDelTitle }}
{{ d.t }}
{{ d.d }}
{{ t.dTitle }}
{{ t.dSub }}
{{ t.secTitle }}
{{ b.t }}
{{ b.d }}
{{ n.t }}
{{ t.oTitle }}
{{ o.k }}
{{ o.t }}
{{ o.d }}
{{ o.p }}
{{ t.faqTitle }}
{{ q.q }}
{{ q.a }}
{{ t.cTitle }}
{{ t.cSub }}
{{ t.badge }}
{{ t.fSentT }}
{{ t.fSentD }}
{{ ccDial }}
{{ formErrMsg }}
{{ t.footColServices }}
{{ t.navServices }}
AudiTrace
{{ t.navCase }}
{{ t.footColGuides }}
{{ footGuideAudit }}
{{ footGuideCost }}
{{ footGuideCase }}
{{ footGuideArticles }}
{{ t.footColReach }}
{{ t.navContact }}
hello@obzervability.com
© 2026 Obzervability · {{ t.footRights }}
{{ t.navPrivacy }}
{{ t.navTerms }}
{{ t.navA11y }}