Files
rdp-proxy/backend/migrations/000016_fabric_testing_telemetry.up.sql
T
2026-04-28 22:29:50 +03:00

44 lines
1.8 KiB
SQL

CREATE TABLE IF NOT EXISTS fabric_testing_flags (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
scope_type TEXT NOT NULL,
scope_id UUID,
cluster_id UUID REFERENCES clusters(id) ON DELETE CASCADE,
enabled BOOLEAN NOT NULL DEFAULT FALSE,
telemetry_enabled BOOLEAN NOT NULL DEFAULT FALSE,
synthetic_links_enabled BOOLEAN NOT NULL DEFAULT FALSE,
history_retention_hours INTEGER NOT NULL DEFAULT 24,
metadata JSONB NOT NULL DEFAULT '{}'::JSONB,
updated_by_user_id UUID REFERENCES users(id) ON DELETE SET NULL,
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
CONSTRAINT fabric_testing_flags_scope_check
CHECK (scope_type IN ('platform', 'organization', 'node')),
CONSTRAINT fabric_testing_flags_retention_check
CHECK (history_retention_hours BETWEEN 1 AND 720)
);
CREATE UNIQUE INDEX IF NOT EXISTS idx_fabric_testing_flags_unique_scope
ON fabric_testing_flags (
scope_type,
COALESCE(scope_id, '00000000-0000-0000-0000-000000000000'::uuid),
COALESCE(cluster_id, '00000000-0000-0000-0000-000000000000'::uuid)
);
CREATE TABLE IF NOT EXISTS node_telemetry_observations (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
cluster_id UUID NOT NULL REFERENCES clusters(id) ON DELETE CASCADE,
node_id UUID NOT NULL REFERENCES nodes(id) ON DELETE CASCADE,
cpu_percent DOUBLE PRECISION,
memory_used_bytes BIGINT,
memory_total_bytes BIGINT,
disk_used_bytes BIGINT,
disk_total_bytes BIGINT,
network_rx_bytes BIGINT,
network_tx_bytes BIGINT,
process_count INTEGER,
payload JSONB NOT NULL DEFAULT '{}'::JSONB,
observed_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_node_telemetry_cluster_node_observed
ON node_telemetry_observations(cluster_id, node_id, observed_at DESC);