-- ============================================================================= -- Vue materialisée pour les User-Agents - Dashboard Bot Detector -- ============================================================================= -- -- Instructions d'installation : -- ----------------------------- -- 1. Se connecter à ClickHouse en CLI : -- clickhouse-client --host test-sdv-anubis.sdv.fr --port 8123 \ -- --user default --password -- -- 2. Copier-coller CHAQUE BLOC séparément (un par un) -- -- 3. Vérifier que la vue est créée : -- SELECT count() FROM mabase_prod.view_dashboard_user_agents; -- -- ============================================================================= USE mabase_prod; -- ============================================================================= -- BLOC 1/3 : Créer la table -- ============================================================================= CREATE TABLE IF NOT EXISTS mabase_prod.view_dashboard_user_agents ( src_ip IPv4, ja4 String, hour DateTime, log_date Date, user_agents Array(String), requests UInt64 ) ENGINE = AggregatingMergeTree() PARTITION BY log_date ORDER BY (src_ip, ja4, hour) TTL log_date + INTERVAL 90 DAY -- Garder 90 jours (au lieu de 7) SETTINGS index_granularity = 8192; -- ============================================================================= -- BLOC 2/3 : Créer la vue materialisée -- ============================================================================= CREATE MATERIALIZED VIEW IF NOT EXISTS mabase_prod.view_dashboard_user_agents_mv TO mabase_prod.view_dashboard_user_agents AS SELECT src_ip, ja4, toStartOfHour(time) AS hour, toDate(time) AS log_date, groupArrayDistinct(header_user_agent) AS user_agents, count() AS requests FROM mabase_prod.http_logs WHERE header_user_agent != '' AND header_user_agent IS NOT NULL AND time >= now() - INTERVAL 7 DAY GROUP BY src_ip, ja4, hour, log_date; -- ============================================================================= -- BLOC 3/3 : Créer les index (optionnel - améliore les performances) -- ============================================================================= ALTER TABLE mabase_prod.view_dashboard_user_agents ADD INDEX IF NOT EXISTS idx_user_agents_ip (src_ip) TYPE minmax GRANULARITY 1; ALTER TABLE mabase_prod.view_dashboard_user_agents ADD INDEX IF NOT EXISTS idx_user_agents_ja4 (ja4) TYPE minmax GRANULARITY 1; -- ============================================================================= -- FIN -- ============================================================================= -- -- Pour vérifier que la vue fonctionne : -- ------------------------------------- -- SELECT * FROM mabase_prod.view_dashboard_user_agents LIMIT 10; -- -- Pour rafraîchir manuellement (si nécessaire) : -- ---------------------------------------------- -- OPTIMIZE TABLE mabase_prod.view_dashboard_user_agents FINAL; -- -- =============================================================================