This commit is contained in:
Mateusz Gruszczyński committed 2026-11-08 23:23:21 +01:00
1 parent 1ac94213e0
commit 0119b11005
28 files changed
+698 -153

No files matched your search

+194 -81
View File
@@ -261,9 +261,87 @@
</div>
</div>
</article>
<article class="card" data-dashboard-widget="process_diagnostics">
<article class="card pr-card" data-dashboard-widget="process_diagnostics">
<div class="mini-heading">
<h3 data-i18n="processDiagnostics">Process</h3>
<h3 data-i18n="processOverviewTitle">Process</h3>
<div class="mini-heading-actions">
<details class="metric-info">
<summary data-i18n-aria="memoryAccountingInfo"
aria-label="Memory accounting information">i</summary>
<div class="metric-info-popover">
<p class="fine" data-i18n="memoryAccountingHint">RSS is the real process
footprint. HOT/transient cache values are RustProxy-accounted
allocations; transform memory is a conservative active reservation.
Non-cache RSS is RSS minus accounted cache and includes transforms,
connections, TLS, logging, Tokio/runtime state, allocator overhead and
other buffers, so these rows are not all additive.</p>
</div>
</details>
<span class="meta" id="po-sample-age">-</span>
</div>
</div>
<dl class="pr-chips">
<div class="pr-chip"><dt data-i18n="platform">Platform</dt><dd id="po-platform">-</dd></div>
<div class="pr-chip"><dt data-i18n="processThreads">OS threads</dt><dd id="po-threads">-</dd></div>
<div class="pr-chip"><dt data-i18n="processStartTime">Process start</dt><dd id="po-start">-</dd></div>
<div class="pr-chip"><dt data-i18n="uptime">Uptime</dt><dd id="po-uptime">-</dd></div>
</dl>
<div class="pr-cols">
<section>
<h4 class="pr-title" data-i18n="processLoadTitle">Load</h4>
<dl class="pr-list">
<div class="pr-row"><dt data-i18n="processCpu">CPU (100% = 1 core)</dt><dd id="po-cpu">-</dd><i class="pr-meter"><b></b></i></div>
<div class="pr-row"><dt data-i18n="processRssTotal">RSS total</dt><dd id="po-rss-total">-</dd><i class="pr-meter"><b></b></i></div>
<div class="pr-row"><dt data-i18n="fileDescriptors">File descriptors / limit</dt><dd id="po-fds">-</dd><i class="pr-meter"><b></b></i></div>
<div class="pr-row"><dt data-i18n="containerMemory">cgroup RAM / limit</dt><dd id="po-cgroup">-</dd><i class="pr-meter"><b></b></i></div>
</dl>
</section>
<section>
<h4 class="pr-title" data-i18n="processMemoryTitle">Memory</h4>
<div class="pr-split" id="po-rss-split" aria-hidden="true"><i class="a"></i><i class="f"></i></div>
<dl class="pr-list pr-plain">
<div class="pr-row"><dt data-i18n="processRssAnon">Anonymous RSS</dt><dd id="po-rss-anon">-</dd></div>
<div class="pr-row"><dt data-i18n="processRssFile">File-backed / shared RSS</dt><dd id="po-rss-file">-</dd></div>
<div class="pr-row"><dt data-i18n="memoryNonCacheRss">Non-cache process RSS</dt><dd id="po-non-cache">-</dd></div>
<div class="pr-row"><dt data-i18n="processVirtualMemory">Virtual memory / limit</dt><dd id="po-virtual">-</dd></div>
<div class="pr-row"><dt data-i18n="processDataSwap">Data address space / swap</dt><dd id="po-data-swap">-</dd></div>
</dl>
</section>
</div>
<div class="mini-live-chart-stack pr-charts">
<div class="mini-live-chart">
<div class="mini-live-chart-head"><span data-i18n="processCpuHistory">Process CPU history</span><b id="po-cpu-chart-value">-</b></div>
<svg preserveAspectRatio="none" aria-label="Process CPU history" data-i18n-aria="processCpuHistory" role="img" viewbox="0 0 300 60">
<path class="chart-grid" d="M0 15H300 M0 30H300 M0 45H300"></path>
<polyline class="diagnostic-line" id="po-cpu-sparkline" points="0,55 300,55"></polyline>
</svg>
</div>
<div class="mini-live-chart">
<div class="mini-live-chart-head"><span data-i18n="processRssHistory">Process RSS history</span><b id="po-rss-chart-value">-</b></div>
<svg preserveAspectRatio="none" aria-label="Process RSS history" data-i18n-aria="processRssHistory" role="img" viewbox="0 0 300 60">
<path class="chart-grid" d="M0 15H300 M0 30H300 M0 45H300"></path>
<polyline class="diagnostic-line process-rss-line" id="po-rss-sparkline" points="0,55 300,55"></polyline>
</svg>
</div>
<div class="mini-live-chart">
<div class="mini-live-chart-head"><span data-i18n="processFdHistory">File descriptors history</span><b id="po-fd-chart-value">-</b></div>
<svg preserveAspectRatio="none" aria-label="File descriptors history" data-i18n-aria="processFdHistory" role="img" viewbox="0 0 300 60">
<path class="chart-grid" d="M0 15H300 M0 30H300 M0 45H300"></path>
<polyline class="diagnostic-line pr-line-blue" id="po-fd-sparkline" points="0,55 300,55"></polyline>
</svg>
</div>
<div class="mini-live-chart">
<div class="mini-live-chart-head"><span data-i18n="processThreadHistory">OS threads history</span><b id="po-thread-chart-value">-</b></div>
<svg preserveAspectRatio="none" aria-label="OS threads history" data-i18n-aria="processThreadHistory" role="img" viewbox="0 0 300 60">
<path class="chart-grid" d="M0 15H300 M0 30H300 M0 45H300"></path>
<polyline class="diagnostic-line pr-line-muted" id="po-thread-sparkline" points="0,55 300,55"></polyline>
</svg>
</div>
</div>
</article>
<article class="card" data-dashboard-widget="process_simple">
<div class="mini-heading">
<h3 data-i18n="processClassicTitle">Process simple</h3>
<div class="mini-heading-actions">
<details class="metric-info">
<summary data-i18n-aria="memoryAccountingInfo"
@@ -279,78 +357,77 @@
</details>
<span class="meta" id="system-sample-age">-</span>
</div>
</div>
<dl class="mini-metrics">
<div>
<dt data-i18n="platform">Platform</dt>
<dd id="process-platform">-</dd>
</div>
<div>
<dt data-i18n="processCpu">CPU (100% = 1 core)</dt>
<dd id="process-cpu">-</dd>
</div>
<div>
<dt data-i18n="fileDescriptors">File descriptors / limit</dt>
<dd id="process-fds">-</dd>
</div>
<div>
<dt data-i18n="processThreads">OS threads</dt>
<dd id="process-threads">-</dd>
</div>
<div>
<dt data-i18n="processVirtualMemory">Virtual memory / limit</dt>
<dd id="process-virtual-memory">-</dd>
</div>
<div>
<dt data-i18n="processStartTime">Process start</dt>
<dd id="process-start-time">-</dd>
</div>
<div>
<dt data-i18n="uptime">Uptime</dt>
<dd id="process-uptime">-</dd>
</div>
<div>
<dt data-i18n="processRssTotal">RSS total</dt>
<dd id="process-rss-total">-</dd>
</div>
<div>
<dt data-i18n="memoryCacheHot">HOT cache RAM / limit</dt>
<dd id="memory-cache-hot">-</dd>
</div>
<div>
<dt data-i18n="memoryCacheTransient">Cache transient RAM / limit</dt>
<dd id="memory-cache-transient">-</dd>
</div>
<div>
<dt data-i18n="memoryTransform">Transform reserved RAM / budget</dt>
<dd id="memory-transform">-</dd>
</div>
<div>
<dt data-i18n="memoryTransformInflight">Active transforms / limit</dt>
<dd id="memory-transform-inflight">-</dd>
</div>
<div>
<dt data-i18n="memoryNonCacheRss">Non-cache process RSS</dt>
<dd id="memory-non-cache-rss">-</dd>
</div>
<div>
<dt data-i18n="processRssAnon">Anonymous RSS</dt>
<dd id="process-rss-anon">-</dd>
</div>
<div>
<dt data-i18n="processRssFile">File-backed / shared RSS</dt>
<dd id="process-rss-file">-</dd>
</div>
<div>
<dt data-i18n="processDataSwap">Data address space / swap</dt>
<dd id="process-data-swap">-</dd>
</div>
<div>
<dt data-i18n="containerMemory">cgroup RAM / limit</dt>
<dd id="cgroup-memory">-</dd>
</div>
</dl>
<div class="mini-live-chart-stack">
</d <dl class="mini-metrics">
<div>
<dt data-i18n="platform">Platform</dt>
<dd id="process-platform">-</dd>
</div>
<div>
<dt data-i18n="processCpu">CPU (100% = 1 core)</dt>
<dd id="process-cpu">-</dd>
</div>
<div>
<dt data-i18n="fileDescriptors">File descriptors / limit</dt>
<dd id="process-fds">-</dd>
</div>
<div>
<dt data-i18n="processThreads">OS threads</dt>
<dd id="process-threads">-</dd>
</div>
<div>
<dt data-i18n="processVirtualMemory">Virtual memory / limit</dt>
<dd id="process-virtual-memory">-</dd>
</div>
<div>
<dt data-i18n="processStartTime">Process start</dt>
<dd id="process-start-time">-</dd>
</div>
<div>
<dt data-i18n="uptime">Uptime</dt>
<dd id="process-uptime">-</dd>
</div>
<div>
<dt data-i18n="processRssTotal">RSS total</dt>
<dd id="process-rss-total">-</dd>
</div>
<div>
<dt data-i18n="memoryCacheHot">HOT cache RAM / limit</dt>
<dd id="memory-cache-hot">-</dd>
</div>
<div>
<dt data-i18n="memoryCacheTransient">Cache transient RAM / limit</dt>
<dd id="memory-cache-transient">-</dd>
</div>
<div>
<dt data-i18n="memoryTransform">Transform reserved RAM / budget</dt>
<dd id="memory-transform">-</dd>
</div>
<div>
<dt data-i18n="memoryTransformInflight">Active transforms / limit</dt>
<dd id="memory-transform-inflight">-</dd>
</div>
<div>
<dt data-i18n="memoryNonCacheRss">Non-cache process RSS</dt>
<dd id="memory-non-cache-rss">-</dd>
</div>
<div>
<dt data-i18n="processRssAnon">Anonymous RSS</dt>
<dd id="process-rss-anon">-</dd>
</div>
<div>
<dt data-i18n="processRssFile">File-backed / shared RSS</dt>
<dd id="process-rss-file">-</dd>
</div>
<div>
<dt data-i18n="processDataSwap">Data address space / swap</dt>
<dd id="process-data-swap">-</dd>
</div>
<div>
<dt data-i18n="containerMemory">cgroup RAM / limit</dt>
<dd id="cgroup-memory">-</dd>
</div>
</dl>
<div class="mini-live-chart-stack">
<div class="mini-live-chart">
<div class="mini-live-chart-head"><span data-i18n="processCpuHistory">Process CPU
history</span><b id="process-cpu-chart-value">-</b></div>
@@ -433,10 +510,46 @@
</div>
</div>
</article>
<article class="card pool-card" id="backend-diagnostics-card"
<article class="card pool-card backend-overview-card" id="backend-overview-card"
data-dashboard-widget="backend_table">
<div class="card-heading backend-card-heading">
<h2 data-i18n="vhHealthTitle">Backends</h2>
<div class="bo-heading">
<h2 data-i18n="backendOverviewTitle">Backends</h2>
<span class="bo-summary" id="bo-summary" aria-live="polite"></span>
</div>
<div class="backend-table-tools">
<label class="sr-only" data-i18n="backendSearch" for="bo-search">Search
backends</label>
<input autocomplete="off" data-i18n-aria="backendSearch"
data-i18n-placeholder="backendSearchPlaceholder" id="bo-search"
type="search" />
<label class="backend-sort-control"><span data-i18n="backendSortBy">Sort
by</span><select data-i18n-aria="backendSortBy" id="bo-sort"></select></label>
<button class="quiet backend-sort-direction" data-i18n-aria="backendSortAscending"
id="bo-sort-direction" type="button">↑</button>
<details class="backend-column-picker">
<summary class="quiet" data-i18n="backendColumns">Columns</summary>
<div class="backend-column-options" id="bo-column-options"></div>
</details>
<button class="quiet" data-i18n="vhManage" id="bo-open" type="button">Manage
vhosts</button>
</div>
</div>
<div class="bo-filters" id="bo-filters" role="group"></div>
<div class="table-scroll">
<table class="bo-table">
<thead>
<tr id="bo-head"></tr>
</thead>
<tbody id="bo-rows"></tbody>
</table>
</div>
<p class="fine" data-i18n="vhHealthEmpty" id="bo-empty">No backend diagnostics yet.</p>
</article>
<article class="card pool-card" id="backend-diagnostics-card"
data-dashboard-widget="backend_tiny">
<div class="card-heading backend-card-heading">
<h2 data-i18n="backendTinyTitle">Tiny backends</h2>
<div class="backend-table-tools">
<label class="sr-only" data-i18n="backendSearch" for="pool-search">Search
backends</label>
@@ -4120,7 +4233,7 @@
</div>
<div class="form-actions">
<button class="primary" data-i18n="apply" type="submit">Validate, save and apply</button>
<button class="quiet" data-i18n="vhReset" id="web-service-reset" type="button">Discard changes</button>
<button class="quiet" data-i18n="vhReset" id="web-service-reset" type="button">Discard changes</button><button class="quiet" data-editor-cancel="web-server" data-i18n="vhCancel" type="button">Cancel</button>
</div>
</form>
</dialog>
@@ -4267,7 +4380,7 @@ log_errors = On</code></pre>
<div id="vhost-fields"></div>
<div class="form-actions"><button class="primary" data-i18n="apply" id="vhost-save" type="submit">Validate,
save and apply</button><button class="quiet" data-i18n="vhReset" id="vhost-reset"
type="button">Discard changes</button></div>
type="button">Discard changes</button><button class="quiet" data-editor-cancel="vhost" data-i18n="vhCancel" type="button">Cancel</button></div>
<p class="fine" data-i18n="vhSafetyHint">Private IP binding is not authentication. Keep firewall/ACL rules.
HSTS preload is opt-in; affinity cookies are not login sessions.</p>
</form>
@@ -4332,7 +4445,7 @@ log_errors = On</code></pre>
</section>
<div class="form-actions"><button class="primary" data-i18n="apply" type="submit">Validate, save and
apply</button><button class="quiet" data-i18n="vhReset" id="redirect-reset" type="button">Discard
changes</button></div>
changes</button><button class="quiet" data-editor-cancel="redirect" data-i18n="vhCancel" type="button">Cancel</button></div>
<p class="fine" data-i18n="redirectSafetyHint">Redirect hosts do not contact a backend. Global host ACLs
still apply. Avoid self-referential rules that can create browser redirect loops.</p>
</form>
@@ -4403,7 +4516,7 @@ log_errors = On</code></pre>
</section>
<div class="form-actions"><button class="primary" data-i18n="apply" type="submit">Validate, save and
apply</button><button class="quiet" data-i18n="vhReset" id="notfound-reset" type="button">Discard
changes</button></div>
changes</button><button class="quiet" data-editor-cancel="notfound" data-i18n="vhCancel" type="button">Cancel</button></div>
</form>
</dialog>
@@ -4419,7 +4532,7 @@ log_errors = On</code></pre>
<div id="stream-fields"></div>
<div class="form-actions"><button class="primary" data-i18n="apply" id="stream-save" type="submit">Validate,
save and apply</button><button class="quiet" data-i18n="vhReset" id="stream-reset"
type="button">Discard changes</button></div>
type="button">Discard changes</button><button class="quiet" data-editor-cancel="stream" data-i18n="vhCancel" type="button">Cancel</button></div>
<p class="fine" data-i18n="streamRestartHelp">Changing a stream listener requires a RustProxy restart.</p>
</form>
</dialog>