93 lines
6.9 KiB
Markdown
93 lines
6.9 KiB
Markdown
# Metrics
|
|
|
|
Metrics is under **Analytics** at `/metrics` (keyboard shortcut: `g m`).
|
|
Choose the past 24 hours, 7 days, or 30 days. The page refreshes every minute.
|
|
|
|
The overview shows **Time with players** (occupied server-hours divided by known
|
|
server-hours) and **Player-hours**. Known and unknown status time remain visible
|
|
alongside the totals. **Last collected** is the newest recorded batch, including
|
|
unknown checks; **Report refreshed** is when this report was calculated. Collection
|
|
stops when no servers are registered. Earliest retained observations do not prove
|
|
continuous history or the original installation date.
|
|
|
|
Background refresh keeps the last successful report visible on failure and offers
|
|
Retry. Returning to a visible tab refreshes immediately. The selected range is
|
|
stored in the URL, and refreshes preserve table controls and chart selection.
|
|
|
|
Game and map filters apply to the whole report, including its comparisons,
|
|
recommendations, and heatmap. Map choices preserve the exact recorded game/map
|
|
pair. Range and scope are shareable through the URL. Table searches remain local.
|
|
|
|
The timeline defaults to **Share of captured time**: each stack includes occupied,
|
|
idle, and unknown server time, normalized to 100%. This denominator differs from the
|
|
headline utilization percentage, which excludes unknown time. Switch to **Hours**
|
|
to compare absolute server time. Periods without captured time remain gaps.
|
|
The timeline has labelled axes and marks partial edge periods. Select a period,
|
|
use Previous/Next, or select a bar to inspect its exact interval and values. The
|
|
time table supplies the same figures for comparison and assistive technology.
|
|
Zero captured time is distinct from an observed empty server. Short durations use
|
|
seconds or minutes so a real observation is not rounded to zero.
|
|
|
|
Map and server tables support numeric sorting and local search. Their searches
|
|
apply only to the named table. Known-capacity duration stays next to all-full time.
|
|
Server identities retain the technical name; rows describe history grouped by
|
|
name, which may include different instances if a name was reused. **Open current
|
|
server** appears only when that name is currently registered; its destination
|
|
represents the current registration rather than every instance in the history.
|
|
|
|
**Explore this period** adds experimental decision aids below the main timeline:
|
|
|
|
- **Map capacity pressure** pools all-full map-hours divided by known-capacity
|
|
map-hours across the selected map groups. Overlapping map intervals are counted
|
|
separately. The score is not elapsed fleet time or a fleet health score; its
|
|
denominator and contributing map count remain visible.
|
|
- **Previous-period comparisons** use the preceding equally long window with
|
|
identical filters. Utilization changes are percentage points; player-hours
|
|
changes are relative percentages. A previous observed zero can show **New**.
|
|
Missing evidence remains unavailable. Partial retained history is labelled;
|
|
a 30-day comparison usually has little previous history because default retention is
|
|
31 days. Both periods' known time is shown. Bounds cannot establish that
|
|
collection was uninterrupted, and changes are not adjusted for fleet size.
|
|
- **Activity heatmap** groups captured time by weekday and hour in its displayed
|
|
timezone. Color represents occupied / known server time. Exact cell values
|
|
include unknown time and contributing dates. No-data cells differ from observed
|
|
zero utilization; repeated DST hours contribute their actual elapsed time.
|
|
- **Hosting experiments** are generated automatically from the selected map
|
|
observations. They are advisory and never create, restart, or destroy a server.
|
|
|
|
Hosting Rules v1 deliberately offer experiments even with small samples:
|
|
|
|
| Recorded condition | Suggested experiment |
|
|
| --- | --- |
|
|
| At least 20% of known capacity time had every lobby full | Trial one additional lobby during busy hours. |
|
|
| Capacity unavailable and players present for at least 80% of known server time | Tentatively trial an extra lobby using occupancy as a proxy. |
|
|
| Players present for at most 10% of known time, with under 1% measured pressure or unavailable capacity | Review one idle lobby or a shorter hosting window while preserving access to the map. |
|
|
| Occupancy unavailable | Check telemetry/RCON reporting and watch for known player counts. |
|
|
| Other observations | Check missing capacity or keep the lineup and watch peaks. |
|
|
|
|
Each suggestion includes evidence and an outcome to watch. Unknown capacity,
|
|
less than one hour of relevant known evidence, or substantial unknown captured
|
|
status makes the suggestion tentative. These thresholds are product hypotheses;
|
|
occupancy does not establish failed joins or a need for additional capacity.
|
|
Suggestions use historical observations. Check the current lineup before trying
|
|
a change; a retained map may no longer have a hosted lobby.
|
|
|
|
- Utilized means a successful status response reported at least one player.
|
|
- Idle means a successful response reported zero players.
|
|
- Unknown covers failed checks, provisioning, and unavailable containers; it is excluded from utilization percentages.
|
|
- Player-hours integrate the reported player count over observed time. Bots are included if the server counts them as players.
|
|
- All lobbies full measures map wall time when every tracked lobby in that game/map group has a known capacity and is full. Missing capacity or status makes that interval unknown. This is a capacity-pressure indicator, not a count of rejected joins or unmet demand.
|
|
|
|
Observations are recorded by the existing status worker. Each remains valid until the next collection, up to the 90-second freshness limit. Longer manager outages are excluded. Charts split time at UTC hour/day boundaries; partial periods remain partial. Map variants use the configured variant when it matches the reported map.
|
|
|
|
Capacity comes from `sv_maxclients` / `sv_maxClients` in the status response. When unavailable, the UI displays unknown rather than assuming a four-player limit. Capacity coverage is the map time for which every tracked lobby reported both occupancy and capacity.
|
|
|
|
Collection begins after this feature is installed; previous occupancy cannot be reconstructed. Samples default to 31 days of retention; Administration → Settings can change this period. Cleanup runs during collection and in the background. They survive removal of a server and contain no player identities. The additive database table is created automatically on startup.
|
|
|
|
`GET /api/metrics` supplies the same report as the page and disables response
|
|
caching. Query parameters are `days` (1, 7, or 30), `game`, `map` (requires game),
|
|
and `timeZone` (an IANA zone). Invalid ranges and zones fall back to the defaults;
|
|
invalid scope syntax is normalized. Fleet collection timestamps remain separate
|
|
from selected-scope evidence timestamps. Collection boundaries are determined
|
|
before scope filtering, so samples from other groups still end a batch interval.
|