- Add RedisIoAdapter (shared/infra) for multi-instance Socket.IO fan-out with graceful fallback to the in-memory IoAdapter when Redis is unreachable. - Pin Socket.IO heartbeat (pingInterval/pingTimeout/connectTimeout) via env-tunable gateway options for reconnect stability. - Expose Prometheus metrics on /notifications: goodgo_ws_connected_clients (Gauge) and goodgo_ws_messages_total (Counter) with namespace/event/ direction labels. Wired through MetricsService and tracked across connect/disconnect + emits. - Unit tests: RedisIoAdapter connect/fallback/close, new MetricsService WS helpers, and gateway metric increments/decrements on auth paths. Co-Authored-By: Paperclip <noreply@paperclip.ing>
25 lines
1.3 KiB
TypeScript
25 lines
1.3 KiB
TypeScript
// ── Business Metrics (goodgo_ prefix) ──
|
|
export const GOODGO_LISTINGS_CREATED_TOTAL = 'goodgo_listings_created_total';
|
|
export const GOODGO_PAYMENTS_PROCESSED_TOTAL = 'goodgo_payments_processed_total';
|
|
export const GOODGO_ACTIVE_SUBSCRIPTIONS = 'goodgo_active_subscriptions';
|
|
export const GOODGO_SEARCH_QUERIES_TOTAL = 'goodgo_search_queries_total';
|
|
export const GOODGO_API_REQUEST_DURATION = 'goodgo_api_request_duration_seconds';
|
|
|
|
// ── Infrastructure Metrics ──
|
|
export const HTTP_REQUESTS_TOTAL = 'http_requests_total';
|
|
export const DB_QUERY_DURATION = 'db_query_duration_seconds';
|
|
export const DB_POOL_ACTIVE_CONNECTIONS = 'db_pool_active_connections';
|
|
export const SEARCH_QUERY_DURATION = 'search_query_duration_seconds';
|
|
|
|
// ── WebSocket Metrics ──
|
|
export const GOODGO_WS_CONNECTED_CLIENTS = 'goodgo_ws_connected_clients';
|
|
export const GOODGO_WS_MESSAGES_TOTAL = 'goodgo_ws_messages_total';
|
|
|
|
// ── Web Vitals / RUM Metrics ──
|
|
export const WEB_VITALS_LCP = 'goodgo_web_vitals_lcp_seconds';
|
|
export const WEB_VITALS_FCP = 'goodgo_web_vitals_fcp_seconds';
|
|
export const WEB_VITALS_CLS = 'goodgo_web_vitals_cls';
|
|
export const WEB_VITALS_TTFB = 'goodgo_web_vitals_ttfb_seconds';
|
|
export const WEB_VITALS_INP = 'goodgo_web_vitals_inp_seconds';
|
|
export const WEB_VITALS_TOTAL = 'goodgo_web_vitals_total';
|