SSR cockpit: label the response time, leave test reports out of the client error counts (0114-FE)
The big response time number is labelled last check. ClientErrorClassifier tells smoke and curl test reports and bot reports apart; tests are counted separately and left out of the tile, the hourly bars, the list and the dashboard tile, bots keep a label. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4bc38b1760
commit
06b9bc8293
5 files changed
+125
-41
No files matched your search
@@ -106,9 +106,10 @@
|
||||
</section>
|
||||
|
||||
<section class="vc-card vc-s3" aria-label="Response time">
|
||||
<span class="vc-info"><button type="button" class="vc-info-btn" aria-label="About this tile" aria-describedby="vc-tip-ms">?</button><span class="vc-tip" role="tooltip" id="vc-tip-ms">How long TYPO3 needs to reach the node, measured when this page loads and every 15 seconds after. Median and p95 come from the cron samples of the last 24 hours, taken every 5 minutes. The curve shows the last 4 hours. Values above 400 ms turn the availability strip yellow.</span></span>
|
||||
<span class="vc-info"><button type="button" class="vc-info-btn" aria-label="About this tile" aria-describedby="vc-tip-ms">?</button><span class="vc-tip" role="tooltip" id="vc-tip-ms">The big number is the last check: how long TYPO3 needed to reach the node, measured when this page loads and every 15 seconds after. Median and p95 come from the cron samples of the last 24 hours, taken every 5 minutes. The curve shows the last 4 hours. Values above 400 ms turn the availability strip yellow.</span></span>
|
||||
<div class="vc-label">Response time</div>
|
||||
<div class="vc-big"><span id="vc-ms"><f:if condition="{health}"><f:then>{health.responseMs}</f:then><f:else>–</f:else></f:if></span><small>ms</small></div>
|
||||
<div class="vc-big-note">last check · updates every 15 s</div>
|
||||
<div class="vc-sub">median 24 h <b id="vc-ms-median">–</b> · p95 <b id="vc-ms-p95">–</b></div>
|
||||
<svg class="vc-spark" id="vc-spark" viewBox="0 0 300 46" preserveAspectRatio="none" aria-hidden="true"></svg>
|
||||
</section>
|
||||
@@ -126,10 +127,10 @@
|
||||
</section>
|
||||
|
||||
<section class="vc-card vc-s3" aria-label="Client errors">
|
||||
<span class="vc-info"><button type="button" class="vc-info-btn" aria-label="About this tile" aria-describedby="vc-tip-errtile">?</button><span class="vc-tip" role="tooltip" id="vc-tip-errtile">Errors that visitor browsers reported from the React frontend in the last 24 hours. A chunk reload happens when an open tab still runs an older bundle after a deploy; that is usually harmless. JS errors point to a real bug. The bars show reports per hour, details are in the Client errors card below.</span></span>
|
||||
<span class="vc-info"><button type="button" class="vc-info-btn" aria-label="About this tile" aria-describedby="vc-tip-errtile">?</button><span class="vc-tip" role="tooltip" id="vc-tip-errtile">Errors that visitor browsers reported from the React frontend in the last 24 hours. A chunk reload happens when an open tab still runs an older bundle after a deploy; that is usually harmless. JS errors point to a real bug. Test reports (smoke tests, curl) are left out; reports from crawlers like Googlebot count and carry a bot label. The bars show reports per hour, details are in the Client errors card below.</span></span>
|
||||
<div class="vc-label">Client errors · 24 h</div>
|
||||
<div class="vc-big">{clientErrorCount24h}<small>report<f:if condition="{clientErrorCount24h} != 1">s</f:if></small></div>
|
||||
<div class="vc-sub">{chunkCount24h} chunk reload<f:if condition="{chunkCount24h} != 1">s</f:if> · {jsErrorCount24h} JS error<f:if condition="{jsErrorCount24h} != 1">s</f:if></div>
|
||||
<div class="vc-sub">{chunkCount24h} chunk reload<f:if condition="{chunkCount24h} != 1">s</f:if> · {jsErrorCount24h} JS error<f:if condition="{jsErrorCount24h} != 1">s</f:if><f:if condition="{testCount24h}"> · <span class="vc-dim" title="Smoke tests and curl reports are left out">{testCount24h} test<f:if condition="{testCount24h} != 1">s</f:if> left out</span></f:if></div>
|
||||
<div class="vc-mini" id="vc-mini" role="img" aria-label="Client errors per hour, last 24 hours"></div>
|
||||
</section>
|
||||
|
||||
@@ -270,7 +271,7 @@
|
||||
|
||||
<!-- Client errors -->
|
||||
<section class="vc-card vc-s5" aria-label="Client errors">
|
||||
<span class="vc-info"><button type="button" class="vc-info-btn" aria-label="About this tile" aria-describedby="vc-tip-errors">?</button><span class="vc-tip" role="tooltip" id="vc-tip-errors">Every report from visitor browsers in the last 24 hours, newest first. Open an entry for release, URL, browser, anonymized IP and stack trace. “old bundle” means the tab ran an older release than the node. Reports are limited to 30 per minute and IP and are kept for 30 days.</span></span>
|
||||
<span class="vc-info"><button type="button" class="vc-info-btn" aria-label="About this tile" aria-describedby="vc-tip-errors">?</button><span class="vc-tip" role="tooltip" id="vc-tip-errors">Every report from visitor browsers in the last 24 hours, newest first. Open an entry for release, URL, browser, anonymized IP and stack trace. “old bundle” means the tab ran an older release than the node. Test reports (smoke tests, curl) are counted under Tests but not listed. Reports are limited to 30 per minute and IP and are kept for 30 days.</span></span>
|
||||
<div class="vc-card-h">
|
||||
<h2 class="vc-card-t"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M12 3 2 21h20zM12 10v4M12 17.5v.5"/></svg>Client errors</h2>
|
||||
<span class="vc-pill is-sky" title="Reported by the React frontend via POST /api/vitec/client-error; max. 30 per minute and IP, IPs anonymized, cleaned up after 30 days by cron vitec:client-error-cleanup">kept 30 days</span>
|
||||
@@ -279,6 +280,7 @@
|
||||
<div><dt>24 h</dt><dd>{clientErrorCount24h}</dd></div>
|
||||
<div><dt>Chunk reloads</dt><dd class="vc-warn-text">{chunkCount24h}</dd></div>
|
||||
<div><dt>JS errors</dt><dd class="vc-bad-text">{jsErrorCount24h}</dd></div>
|
||||
<div title="Smoke tests and curl reports are not counted and not listed"><dt>Tests</dt><dd class="vc-muted-text">{testCount24h}</dd></div>
|
||||
</dl>
|
||||
<f:if condition="{clientErrors}">
|
||||
<f:then>
|
||||
@@ -286,10 +288,13 @@
|
||||
<f:for each="{clientErrors}" as="row">
|
||||
<details class="vc-err">
|
||||
<summary>
|
||||
<f:if condition="{row.is_chunk_reload}">
|
||||
<f:then><span class="vc-pill is-warn">chunk reload</span></f:then>
|
||||
<f:else><span class="vc-pill is-bad">error</span></f:else>
|
||||
</f:if>
|
||||
<span class="vc-err-pills">
|
||||
<f:if condition="{row.is_chunk_reload}">
|
||||
<f:then><span class="vc-pill is-warn">chunk reload</span></f:then>
|
||||
<f:else><span class="vc-pill is-bad">error</span></f:else>
|
||||
</f:if>
|
||||
<f:if condition="{row.is_bot}"><span class="vc-pill is-muted" title="Reported by a crawler, e.g. Googlebot. Still a real error: the page broke for this bot.">bot</span></f:if>
|
||||
</span>
|
||||
<span class="vc-err-msg">{row.message}<small>{row.path}</small></span>
|
||||
<span class="vc-err-t"><f:format.date format="H:i">@{row.crdate}</f:format.date></span>
|
||||
</summary>
|
||||
|
||||
Reference in new issue
Block a user