obmp-docker/postgres/scripts/010_churn_metrics.sql

31 lines
1.2 KiB
MySQL
Raw Permalink Normal View History

-- 010_churn_metrics.sql
-- Fast-path BGP churn metrics, written by the obmp-churn-monitor service.
--
-- obmp-churn-monitor reads openbmp.parsed.unicast_prefix from Kafka with its
-- own consumer group and only COUNTS announcements/withdrawals per
-- (router, peer) -- no relational RIB maintenance. Because counting is far
-- cheaper than psql-app's per-route upserts, it stays real-time even when the
-- main ingestion pipeline lags minutes behind under a churn storm. This is the
-- decoupled "visibility path": it does not speed up the bulk DB write, it
-- guarantees churn visibility survives a storm the bulk pipeline cannot.
CREATE TABLE IF NOT EXISTS churn_metrics (
ts timestamptz NOT NULL DEFAULT now(),
router_ip inet,
peer_ip inet,
peer_asn bigint,
adds integer,
dels integer
);
SELECT create_hypertable('churn_metrics', 'ts', if_not_exists => TRUE);
CREATE INDEX IF NOT EXISTS idx_churn_ts ON churn_metrics (ts DESC);
CREATE INDEX IF NOT EXISTS idx_churn_router_ts ON churn_metrics (router_ip, ts DESC);
DO $$ BEGIN
PERFORM add_retention_policy('churn_metrics', INTERVAL '7 days');
EXCEPTION WHEN OTHERS THEN
RAISE NOTICE 'churn_metrics retention policy not added: %', SQLERRM;
END $$;