From 1dad28fdb5a5a44c93681775db37ae9135d3c5d3 Mon Sep 17 00:00:00 2001 From: Christopher Kolstad Date: Fri, 14 Feb 2025 09:48:13 +0100 Subject: [PATCH] task: add edge observability tables (#9307) Adds two stat tables to store edge observability data. --- ...210130408-add-edge-observability-tables.js | 32 +++++++++++++++++++ ...50212130610-add-stat-edge-traffic-table.js | 16 ++++++++++ 2 files changed, 48 insertions(+) create mode 100644 src/migrations/20250210130408-add-edge-observability-tables.js create mode 100644 src/migrations/20250212130610-add-stat-edge-traffic-table.js diff --git a/src/migrations/20250210130408-add-edge-observability-tables.js b/src/migrations/20250210130408-add-edge-observability-tables.js new file mode 100644 index 000000000000..b833a5c49c79 --- /dev/null +++ b/src/migrations/20250210130408-add-edge-observability-tables.js @@ -0,0 +1,32 @@ +exports.up = (db, cb) => { + db.runSql(` + CREATE TABLE stat_edge_observability ( + instance_id TEXT NOT NULL PRIMARY KEY, + reported_at TIMESTAMP WITH TIME ZONE NOT NULL, + app_name TEXT, + started TIMESTAMP WITH TIME ZONE NOT NULL, + edge_version TEXT NOT NULL, + region TEXT, + cpu_usage NUMERIC DEFAULT 0.0, + memory_usage INTEGER DEFAULT 0, + connected_streaming_clients INTEGER NOT NULL DEFAULT 0, + connected_via TEXT, + client_features_average_latency_ms NUMERIC DEFAULT 0.0, + client_features_p99_latency_ms NUMERIC DEFAULT 0.0, + frontend_api_average_latency_ms NUMERIC DEFAULT 0.0, + frontend_api_p99_latency_ms NUMERIC DEFAULT 0.0, + upstream_features_average_latency_ms NUMERIC DEFAULT 0.0, + upstream_features_p99_latency_ms NUMERIC DEFAULT 0.0, + upstream_metrics_average_latency_ms NUMERIC DEFAULT 0.0, + upstream_metrics_p99_latency_ms NUMERIC DEFAULT 0.0, + upstream_edge_average_latency_ms NUMERIC DEFAULT 0.0, + upstream_edge_p99_latency_ms NUMERIC DEFAULT 0.0 + ); + CREATE INDEX edge_observability_connected_via_idx ON stat_edge_observability(connected_via) WHERE connected_via IS NOT NULL; + CREATE INDEX edge_observability_app_name_idx ON stat_edge_observability(app_name) WHERE app_name IS NOT NULL; + `, cb); +}; + +exports.down = (db, cb) => { + db.runSql(`DROP TABLE IF EXISTS stat_edge_observability;`, cb); +}; diff --git a/src/migrations/20250212130610-add-stat-edge-traffic-table.js b/src/migrations/20250212130610-add-stat-edge-traffic-table.js new file mode 100644 index 000000000000..b1d32123fd54 --- /dev/null +++ b/src/migrations/20250212130610-add-stat-edge-traffic-table.js @@ -0,0 +1,16 @@ +exports.up = (db, cb) => { + db.runSql(`CREATE TABLE stat_edge_traffic_usage( + instance_id TEXT NOT NULL, + day DATE NOT NULL, + traffic_group TEXT NOT NULL, + count BIGINT NOT NULL DEFAULT 0, + PRIMARY KEY (instance_id, day, traffic_group) + ); + CREATE INDEX stat_edge_traffic_usage_traffic_group_idx ON stat_edge_traffic_usage(traffic_group); + CREATE INDEX stat_edge_traffic_usage_day_idx ON stat_edge_traffic_usage(day); +`, cb); +}; + +exports.down = (db, cb) => { + db.runSql(`DROP TABLE stat_edge_traffic_usage;`, cb); +};