feat(database): server_traffic table for per-minute traffic rollups

One row per server and minute (packets, bytes, resends, HTTP requests, errors,
bytes and latency percentiles), written in batches and read summed into
buckets for the longer chart ranges.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-27 08:50:54 -05:00
parent 6f334c2e3d
commit 01d10f4401
11 changed files with 185 additions and 1 deletions

View File

@@ -0,0 +1,20 @@
/* Per-minute traffic of each server (packets, bytes, HTTP requests and latency), written by the dashboard once a minute
from the servers' traffic reports and kept for traffic_days. server: master, auth, chat, dashboard, ugc or
world:<zone>:<instance>. The latency columns are the HTTP latency percentiles of the minute in microseconds. */
CREATE TABLE IF NOT EXISTS server_traffic (
time BIGINT NOT NULL,
server VARCHAR(64) NOT NULL,
packets_in BIGINT UNSIGNED NOT NULL DEFAULT 0,
packets_out BIGINT UNSIGNED NOT NULL DEFAULT 0,
bytes_in BIGINT UNSIGNED NOT NULL DEFAULT 0,
bytes_out BIGINT UNSIGNED NOT NULL DEFAULT 0,
resends BIGINT UNSIGNED NOT NULL DEFAULT 0,
http_requests BIGINT UNSIGNED NOT NULL DEFAULT 0,
http_4xx BIGINT UNSIGNED NOT NULL DEFAULT 0,
http_5xx BIGINT UNSIGNED NOT NULL DEFAULT 0,
http_bytes_out BIGINT UNSIGNED NOT NULL DEFAULT 0,
latency_p50_us INT UNSIGNED NOT NULL DEFAULT 0,
latency_p95_us INT UNSIGNED NOT NULL DEFAULT 0,
latency_p99_us INT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (time, server)
);

View File

@@ -0,0 +1,18 @@
/* Per-minute traffic of each server. See the MySQL migration. */
CREATE TABLE IF NOT EXISTS server_traffic (
time BIGINT NOT NULL,
server TEXT NOT NULL,
packets_in BIGINT NOT NULL DEFAULT 0,
packets_out BIGINT NOT NULL DEFAULT 0,
bytes_in BIGINT NOT NULL DEFAULT 0,
bytes_out BIGINT NOT NULL DEFAULT 0,
resends BIGINT NOT NULL DEFAULT 0,
http_requests BIGINT NOT NULL DEFAULT 0,
http_4xx BIGINT NOT NULL DEFAULT 0,
http_5xx BIGINT NOT NULL DEFAULT 0,
http_bytes_out BIGINT NOT NULL DEFAULT 0,
latency_p50_us INTEGER NOT NULL DEFAULT 0,
latency_p95_us INTEGER NOT NULL DEFAULT 0,
latency_p99_us INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY (time, server)
);