Exploration de l'analyse du trafic en direct
L'onglet Web analytics Live (/web/live) affiche l'activité en temps réel sur une fenêtre glissante de 30 minutes plus un compteur "utilisateurs en ligne" de 60 secondes. C'est l'endroit pour répondre à "que se passe-t-il sur mon site maintenant ?" — pages vues, bots nommés, appareils, localisation, chemins principaux, principaux référents, et un flux d'événements en direct.
Cette skill vous enseigne (à l'agent) comment :
- reconnaître une demande qui appartient à l'onglet Live
- lire le modèle de tuile (ce que chaque carte affiche, d'où viennent les données)
- manipuler le seul filtre qui existe (host)
- construire des insights d'analytique produit qui correspondent à une tuile Live quand l'utilisateur veut des plages horaires plus longues ou une exploration plus approfondie que la fenêtre en direct n'offre
L'onglet Live n'est pas un terrain de jeu HogQL — ses données proviennent d'un flux en direct soutenu par des remontées HogQL courtes. Quand l'utilisateur veut interroger les données "maintenant" avec HogQL, pointez-les vers l'onglet ; quand ils veulent des répartitions historiques, construisez un insight avec les modèles ci-dessous.
Quand utiliser cette skill
Utilisez cette skill quand l'utilisateur :
- demande « qui est sur mon site maintenant ? », « que se passe-t-il en direct ? », « affiche-moi le trafic en direct »
- mentionne l'onglet « Live », le « tableau de bord Live », ou la page en direct (
/web/live) - pose des questions sur le trafic bot en direct (« quels bots me font un crawl ? », « est-ce que GPTBot nous scrape ? »)
- veut filtrer le trafic en direct par domaine / host
- veut comparer ce qu'il voit sur l'onglet Live à une fenêtre plus longue — par exemple « l'onglet en direct montre que GPTBot nous frappe, peux-tu me donner un graphique de 7 jours là-dessus ? »
N'utilisez pas cette skill pour le travail d'analytique web non temps réel — pour cela, utilisez l'onglet Web analytics standard (/web).
Structure de l'onglet
URL : /web/live
L'onglet a deux affordances de filtre et une grille de tuiles. La plage de dates est fixe : fenêtre glissante de 30 minutes pour tout sauf « Utilisateurs en ligne » (60 dernières secondes).
Filtres
Il y a seulement un filtre sur l'onglet en direct : le sélecteur de host (domaine).
- Il provient de
webAnalyticsFilterLogic.selectedHost. - Il est partagé avec le reste de Web analytics, donc le changer sur
/webse propage à/web/liveet vice-versa. - Il est contrôlé par le flag
WEB_ANALYTICS_LIVE_DOMAIN_FILTER. Si le flag est désactivé, aucune interface de filtre host n'est rendue et toutes les tuiles affichent les données sur tous les domaines. - Définir le filtre host limite : le flux SSE, les requêtes de remontée HogQL (donc les 30 min initiales sont scopes au host), et le compteur « utilisateurs en ligne ».
- Il n'y a pas de sélecteur de dates, pas de contrôle de comparaison, pas de filtres de propriété, pas de filtre de compte test sur l'onglet Live. Ne promettez pas à l'utilisateur des contrôles qui n'existent pas.
Quand l'utilisateur demande « filtrer le trafic en direct par domaine <host> », dirigez-le vers le sélecteur Domaine en haut de l'onglet Live. Il n'y a pas de paramètre URL pour le définir directement — il persiste dans localStorage via webAnalyticsFilterLogic.
Cartes de statistiques (bande supérieure)
| Carte | Ce que c'est | Fenêtre |
|---|---|---|
| Utilisateurs en ligne | IDs d'appareils distincts vus dans les 60 dernières secondes | 60s |
| Visiteurs uniques | IDs d'appareils distincts dans les 30 dernières minutes | 30m |
| Pages vues | Nombre de $pageview dans les 30 dernières minutes |
30m |
Cartes de contenu
| Carte | Ce que c'est | Notes |
|---|---|---|
| Utilisateurs actifs par minute | Graphique en barres, visiteurs nouveaux vs fidèles | 30 dernières minutes |
| Pages principales | Tableau des classements animé, $pathname + nombre de vues |
top 10, 30m |
| Principaux référents | Tableau des classements animé, $referring_domain |
top 10, 30m |
| Appareils | Barres de répartition, $device_type |
top 6 + Autre |
| Navigateurs | Barres de répartition avec logos, $browser |
top 6 + Autre |
| Principaux pays | Barres de répartition, $geoip_country_code |
top 6 + Autre ; remplacé par une carte à onglet Pays/Ville si WEB_ANALYTICS_LIVE_CITY_BREAKDOWN est activé |
| Requêtes bot par minute | Graphique en barres, événements bot / minute | flag WEB_ANALYTICS_BOT_ANALYSIS |
| Trafic bot | Bots nommés classés par part d'événements, avec tag de catégorie | flag WEB_ANALYTICS_BOT_ANALYSIS ; les lignes sont cliquables et ouvrent un insight pour ce bot spécifique |
| Pays (carte mondiale) | Chaleur de carte mondiale SVG | flag WEB_ANALYTICS_LIVE_MAP |
| Événements en direct | Flux d'événements en continu (événement, personne, URL, timestamp) | 50 derniers événements |
Chaque tuile (sauf le flux d'événements en direct et la carte mondiale) a un bouton « Ouvrir comme nouvel insight » qui ouvre une requête Trends de 7 jours dans l'analytique produit. Les lignes de la tuile de trafic bot sont également individuellement cliquables — cliquer sur une ligne bot ouvre une tendance pour ce bot unique.
Modèle de détection des bots
Les bots sont détectés côté serveur. Trois propriétés virtuelles sont attachées à l'événement avant qu'il ne se retrouve dans ClickHouse :
$virt_is_bot— booléen,trues'il est classé comme un bot$virt_bot_name— chaîne, le nom d'affichage du bot (par exempleGooglebot,GPTBot,Claude,Lighthouse,HeadlessChrome)$virt_traffic_category— chaîne, la clé de catégorie :ai_crawler,ai_search,ai_assistant,search_crawler,seo_crawler,social_crawler,monitoring,http_client,headless_browser,no_user_agent,regular
Les tuiles bot en direct comptent les événements « éligibles aux bots » : $pageview, $pageleave, $screen, $http_log, $autocapture. $http_log est inclus parce que la plupart des bots émettent des journaux HTTP côté serveur plutôt que des pages vues JS.
Construction de requêtes d'analytique produit qui reflètent l'onglet Live
Quand l'utilisateur veut une fenêtre plus longue, un insight sauvegardé, une tuile de tableau de bord, ou partager une vue de ce qui est sur l'onglet Live, construisez un insight Trends. Les boutons « Ouvrir comme nouvel insight » dans l'interface utilisent exactement ces recettes :
Répartition du trafic bot (correspond à l'en-tête de la tuile bot)
Un graphique unique de tous les bots au fil du temps, répartis par nom. C'est la vue canonique « qui me crawle ? ».
{
"kind": "TrendsQuery",
"interval": "hour",
"dateRange": { "date_from": "-7d" },
"series": [
{
"kind": "GroupNode",
"custom_name": "Requests",
"operator": "OR",
"math": "total",
"nodes": [
{ "kind": "EventsNode", "event": "$pageview", "math": "total" },
{ "kind": "EventsNode", "event": "$pageleave", "math": "total" },
{ "kind": "EventsNode", "event": "$screen", "math": "total" },
{ "kind": "EventsNode", "event": "$http_log", "math": "total" },
{ "kind": "EventsNode", "event": "$autocapture", "math": "total" }
]
}
],
"properties": [{ "key": "$virt_is_bot", "value": ["true"], "operator": "exact", "type": "event" }],
"breakdownFilter": {
"breakdown": "$virt_bot_name",
"breakdown_type": "event",
"breakdown_limit": 25
},
"trendsFilter": { "display": "ActionsBarValue" }
}
Exploration d'un bot unique (correspond à une ligne bot cliquée)
{
"kind": "TrendsQuery",
"interval": "hour",
"dateRange": { "date_from": "-7d" },
"series": [
/* même GroupNode combiné "Requests" que ci-dessus */
],
"properties": [
{ "key": "$virt_is_bot", "value": ["true"], "operator": "exact", "type": "event" },
{ "key": "$virt_bot_name", "value": ["GPTBot"], "operator": "exact", "type": "event" },
{ "key": "$virt_traffic_category", "value": ["ai_crawler"], "operator": "exact", "type": "event" }
],
"trendsFilter": { "display": "ActionsLineGraph" }
}
Le filtre de catégorie est optionnel — incluez-le quand l'utilisateur demande une combo bot+catégorie spécifique (Lighthouse · headless_browser est un signal différent de Lighthouse · monitoring).
Répartition par catégorie de bot (correspond à la tuile du graphique d'événements bot)
Utilisez la répartition par $virt_traffic_category au lieu de $virt_bot_name quand l'utilisateur veut « crawlers IA vs crawlers SEO vs tout le reste » plutôt que des lignes par bot.
Pages principales / référents / appareils / navigateurs / pays
Pour les tuiles non-bot, utilisez $pageview avec math: unique_users, répartition par la propriété sous-jacente :
| Carte | propriété de répartition | display |
|---|---|---|
| Pages principales | $pathname |
ActionsBarValue |
| Principaux référents | $referring_domain |
ActionsBarValue |
| Appareils | $device_type |
ActionsPie |
| Navigateurs | $browser |
ActionsPie |
| Pays | $geoip_country_code |
WorldMap |
Héritez toujours du filtre host de l'onglet en direct quand l'utilisateur parle d'un domaine spécifique — ajoutez { "key": "$host", "value": ["<host>"], "operator": "exact", "type": "event" } à properties.
Valeurs par défaut à utiliser
dateRange.date_from:-7dsauf si l'utilisateur nomme une fenêtre — la vue en direct elle-même est 30 min, mais l'utilisateur demande presque toujours une fenêtre plus longue quand il demande une version insight.interval:hourpour les fenêtres de 7 jours,minuteseulement pour les fenêtres sous un jour,daypour les fenêtres au-delà de 14 jours.- Héritez toujours du filtre host quand un est défini sur l'onglet Live. Ne le supprimez pas silencieusement — cela change la réponse.
Demandes courantes et le bon mouvement
| L'utilisateur dit | Le bon mouvement |
|---|---|
| « Que se passe-t-il sur le site maintenant ? » | Envoyez-le à /web/live |
« Filtrer le trafic en direct vers example.com » |
Utilisez le sélecteur Domaine en haut de /web/live |
| « Affiche-moi les bots qui nous crawlent dans les 30 dernières minutes » | /web/live → Tuile Trafic bot |
| « Affiche-moi les bots qui nous crawlent cette semaine » | Construisez l'insight « Répartition du trafic bot » ci-dessus avec date_from: -7d |
| « Combien GPTBot nous frappe-t-il ? » | Construisez l'insight « Exploration d'un bot unique », définissez $virt_bot_name à GPTBot |
| « Pourquoi l'onglet en direct montre X mais mon tableau de bord montre Y ? » | L'onglet en direct est une fenêtre glissante de 30 min sur les événements ; les tableaux de bord agrègent sur la plage sélectionnée. Ils ne sont pas directement comparables au-delà des 30 dernières minutes. |
| « Ajouter une plage de dates à l'onglet en direct » | L'onglet Live n'a pas de sélecteur de dates — pour les plages, construisez un insight Trends en utilisant les modèles ci-dessus |
| « Filtrer le trafic en direct par navigateur / appareil / pays » | Non supporté — seul le filtre host existe. Construisez un insight Trends avec la répartition et le filtre pertinents à la place |
Pièges
- Les propriétés virtuelles bot (
$virt_*) n'existent que sur les événements traités par l'étape de classification des bots. Elles ne sont pas rétroactives — les événements d'avant la livraison du classifier n'en auront pas. GardezdateRange.date_fromdans les derniers mois pour des résultats bot fiables. - Les événements
$http_logproviennent de la capture de journal côté serveur, pas deposthog-js. Si un projet n'émet pas$http_log, les bots qui ne lancent pas JS (la plupart des crawlers) seront invisibles pour les tuiles bot. - La fenêtre de 30 minutes est une agrégation glissante sur un buffer en mémoire dans le navigateur — actualiser la page rejoue la remontée HogQL, pas le flux SSE. N'interprétez pas un bref « 0 » juste après le chargement de la page comme une vraie baisse.
- Le filtre host supprime le protocole — passez
example.com, pashttps://example.com. - L'ordre des tuiles est persisté par équipe dans
localStorage(sous le flagWEB_ANALYTICS_LIVE_EDIT_LAYOUT). Si la disposition d'un utilisateur semble différente de la vôtre, ce n'est pas un bug.