Aller au contenu
Vigie

Supervision des widgets embarqués

Votre widget tourne sur 340 sites clients.Sur combien est-il cassé, là, maintenant ?

Vigie regarde votre widget depuis les sites de vos clients, pas depuis les vôtres. Quel client, quelle version, quelle page, depuis quelle heure — avant que le client ne vous écrive.

Loader de 1,8 ko gzip, chargé en async. Aucune URL à saisir : l'inventaire se découvre tout seul.

Flotte clients

fenêtre de la dernière heure

  • 331sains
  • 6cassés
  • 3jamais vus
  • app.northwind.examplev2.14.011:20
  • shop.bluefig.examplev2.14.009:05
  • portal.lumen-co.examplev2.13.402:41
Chaque case est un domaine client. Les six cases orange sont la raison d'être du produit : leur loader s'est déclenché, leur rendu n'est jamais arrivé.

Le problème

Un widget bloqué ne peut pas signaler sa propre panne.

Votre code s'exécute chez quelqu'un d'autre. Un CSP resserré un mardi soir, une extension de blocage, une refonte qui supprime le conteneur, un CMS qui réécrit la balise script : le widget ne démarre jamais. Il ne lève aucune exception, parce qu'il n'y a aucun code en mémoire pour en lever une. Votre télémétrie reste verte. La page de votre client, elle, a un trou dedans.

  • Vos logs serveur

    Ne voient rien. La panne est dans un navigateur, sur un domaine qui ne vous appartient pas.

  • Votre outil d'erreurs

    Ne voit rien. Aucune erreur n'a été levée : rien ne s'est exécuté.

  • Votre support

    Voit tout, en dernier. Le ticket arrive des jours après la panne, et parfois jamais.

L'absence est le signal. Et l'absence ne peut pas s'envoyer elle-même.

Le modèle

Deux signaux, trois états, aucune supposition.

La balise se charge en deux temps. Le loader se déclenche avant votre widget ; le reporter confirme que le rendu est allé au bout. C'est l'écart entre les deux qui porte toute l'information.

Loader
déclenché
Rendu
confirmé

Verdict

Sain

Le widget s'est chargé et il s'est affiché. Vous récupérez le volume et le p95 de rendu, par domaine et par version.

Loader
déclenché
Rendu
jamais arrivé

Verdict

Cassé

Le loader a démarré, le rendu n'est jamais venu. Vous savez quel client, quelle version, quelle page, depuis quelle heure. C'est l'alerte qui justifie le produit.

Loader
silence
Rendu
silence

Verdict

Jamais vu

Soit la page n'a pas été visitée, soit tout est bloqué en amont. Vigie tranche avec l'historique du domaine — jamais sur une seule fenêtre horaire.

L'inventaire

Vous ne saisissez aucune URL.

Vous ne savez probablement pas lister les domaines sur lesquels votre widget tourne. Vos clients l'installent, le déplacent en sous-domaine, le revendent en marque blanche, l'oublient sur une page de recette. Vigie n'a pas besoin de la liste : chaque exécution la déclare.

  1. 01

    Vous servez le loader

    Depuis votre propre CDN, dans le snippet que vos clients collent déjà. 1,8 ko gzip, async, zéro dépendance.

  2. 02

    Les domaines se présentent

    Chaque origine qui exécute votre code apparaît dans la flotte, avec sa version, en quelques minutes. Y compris celles que vous aviez oubliées.

  3. 03

    La ligne de base se forme

    Au bout de sept jours d'historique par domaine, le silence devient interprétable et les alertes s'activent.

Le snippet que collent vos clients

<script src="https://cdn.your-company.example/vigie-loader.js"
        data-vigie-key="pk_live_8f3c…"
        data-vigie-version="2.14.0" async></script>

Puis, dans votre widget, une ligne au moment où il a peint : markRendered(). Le reporter retrouve le loader dans la page, adopte ses compteurs, et il ne part qu'une requête par heure.

Widget en iframe ? Le loader est dans la page parente et passe l'origine du client au reporter par handshake : location y est votre domaine à vous, et le referrer n'est pas fiable.

Dans le produit

Six choses que le tableau de bord vous donne.

  • Flotte clients

    Un mur de domaines, trié par sessions touchées, pas par ordre alphabétique.

  • Détection de non-exécution

    Le seul signal qu'aucun outil d'erreurs ne peut produire, par construction.

  • Santé par version

    Quelle version tourne chez qui, et laquelle casse en arrivant.

  • Budget de rendu p95

    Le temps de rendu au 95e centile, par domaine et par version, par heure.

  • Alertes nominatives

    L'alerte nomme le client concerné. Pas un taux d'erreur agrégé.

  • Ingestion muette

    L'API d'ingestion répond 204 à tout le monde et ne confirme jamais qu'une clé existe.

Ce que ce n'est pas

Vigie ne remplace aucun des outils que vous avez déjà.

  • Ce n'est pas de l'APM.

    Vigie ne trace pas votre backend, n'ouvre pas de span et ne mesure pas vos requêtes. Gardez l'outil qui le fait.

  • Ce n'est pas un moniteur de site.

    Un moniteur vérifie qu'une page répond, et il est acheté par le propriétaire de cette page. Vigie est acheté par vous, l'éditeur du widget, et regarde des centaines de pages que vous ne contrôlez pas.

  • Ce n'est pas un scanner de scripts tiers.

    Ces outils-là protègent un site de scripts comme le vôtre. Même acheteur : le site hôte. Aucun ne vous dit sur combien de vos clients votre propre widget ne démarre pas.

La comparaison honnête

Vous avez déjà de la télémétrie d'erreurs. Elle est bonne.

Un éditeur sérieux a déjà Sentry ou équivalent, et nous n'allons pas prétendre le contraire. Voici précisément la frontière.

La questionUn outil d'erreursVigie
Mon widget vient de lever une exceptionOui, avec la stack et le breadcrumbOui, mais agrégé par domaine client
Mon widget n'a jamais démarré sur ce siteRien. Aucun code en mémoire, donc aucune erreurÉtat cassé, client nommé, heure de début
Sur combien de mes clients suis-je cassé ?Un taux d'erreurs global, sans dénominateur de clientsUne liste de domaines, avec leur historique
Quels clients n'ont jamais donné signe de vie ?Question non représentableRésolu par l'historique, après la ligne de base

Tarifs

Au nombre de domaines clients surveillés.

Pas au volume d'événements. Vous connaissez votre nombre de clients ; personne ne connaît son nombre d'événements à l'avance, et personne n'aime une facture qui suit le trafic d'autrui.

Veille

Jusqu'à 100 domaines clients

199/ mois

Un premier widget en production, un parc que vous pourriez encore lister à la main.

  • 100 domaines clients surveillés
  • Les trois états, par domaine et par version
  • Historique de 30 jours
  • Alertes e-mail nominatives
  • 2 clés d'ingestion
Commencer
Le plus choisi

Flotte

Jusqu'à 500 domaines clients

349/ mois

Le parc a dépassé ce que le support peut suivre de tête, et les versions cohabitent.

  • 500 domaines clients surveillés
  • Tout le plan Veille
  • Historique de 90 jours
  • Webhooks sortants et alertes par seuil
  • Comparaison de versions côte à côte
  • 10 clés d'ingestion
Commencer

Atlas

Jusqu'à 2 000 domaines clients

499/ mois

Plusieurs widgets, plusieurs marques blanches, une équipe qui vit dans le tableau de bord.

  • 2 000 domaines clients surveillés
  • Tout le plan Flotte
  • Historique de 13 mois
  • Plusieurs widgets sur un même compte
  • Export des fenêtres horaires
  • Clés d'ingestion illimitées
Commencer

HT, facturation mensuelle, sans engagement.

Dans tous les plans

  • Inventaire de domaines auto-découvert
  • Loader de 1,8 ko gzip servi depuis votre CDN
  • Ingestion anonyme, réponse 204 systématique
  • Aucun cookie, aucun identifiant de visiteur
  • Révocation et rotation des clés d'ingestion

Au-delà de 2 000 domaines

Écrivez-nous en indiquant votre nombre de domaines et vos versions en circulation. Nous répondons avec un prix, pas avec un formulaire de qualification.

Nous écrire

Questions

Ce qu'on nous demande avant de signer.

Combien pèse le loader sur la page de mon client ?

4,0 ko minifié, 1,8 ko gzip, chargé en async et sans dépendance. Le reporter, qui vit à l'intérieur de votre widget, pèse 6,5 ko gzip. Ni l'un ni l'autre n'ajoute de requête bloquante : le trafic sort une fois par heure, agrégé.

Quelles données quittent le site de mon client ?

L'origine, le chemin de la page tronqué à 120 caractères et vidé de sa query string, la version de votre widget, l'heure arrondie à l'heure pleine, et des compteurs : chargements, rendus, erreurs, blocages, p95. Aucun cookie, aucun identifiant de visiteur, aucun contenu de page, aucune donnée saisie par un utilisateur.

Que se passe-t-il si ma clé d'ingestion fuite ?

L'API d'ingestion répond 204 à toute requête, valide ou non, et ne confirme donc jamais qu'une clé existe. Une clé volée permet d'envoyer du bruit sur votre compte ; elle ne permet de lire strictement rien. Les clés se révoquent et se remplacent depuis le tableau de bord.

Quand est-ce que je reçois ma première alerte ?

Pas la première semaine, et c'est volontaire. Il faut sept jours d'historique par domaine pour distinguer « silencieux » de « pas visité ». Pendant cette période le tableau de bord affiche la construction de la ligne de base, et un domaine jamais entendu n'est jamais peint en vert.

Mon widget est distribué en marque blanche, ça marche ?

C'est le cas normal. Vigie regroupe par origine, pas par nom de client : vous rapprochez ensuite les origines de vos comptes. Un widget servi en iframe fonctionne aussi, via le handshake entre le loader de la page parente et le reporter.

Est-ce que ça remplace mon outil d'erreurs ?

Non, et ce n'est pas le but. Gardez-le pour les exceptions, les stacks et les breadcrumbs. Vigie répond à une question que cet outil ne peut pas poser : sur combien de mes clients mon widget ne tourne pas du tout.

Et si mes clients bloquent le domaine d'ingestion ?

Alors le domaine passe en silence, et Vigie le dit comme tel plutôt que de le peindre en vert. C'est exactement la raison pour laquelle l'état « jamais vu » existe séparément de l'état « sain ».

Sur combien de vos clients, en ce moment ?

Servez le loader dans le snippet que vos clients collent déjà. Les premiers domaines apparaissent dans l'heure ; la ligne de base est prête en sept jours.

Sans engagement. Sans appel de qualification.

  • 331sains
  • 6cassés
  • 3jamais vus