Vai al contenuto
Pathrule

documentazione

Protocollo e collector

Il protocollo Signals che un collector riceve (envelope, item, limiti di dimensione), come l'SDK interpreta le risposte del collector e ritenta, e come eseguire un tuo collector HTTP in modalità Standalone.

In questa pagina

In modalità Standalone l'SDK invia i dati a un collector HTTP gestito da te. Questa pagina descrive cosa riceve quel collector e come deve rispondere. Pathrule Local e Pathrule Cloud usano lo stesso protocollo, quindi nulla di quanto segue cambia quando passi da una destinazione all'altra.

L'envelope

Il protocollo è alla versione 1. L'SDK invia un envelope per ogni POST come application/json; il beacon inviato mentre una pagina viene chiusa usa text/plain. Un envelope occupa al massimo 32.768 byte e contiene al massimo 50 item.

CampoCos'è
schemaVersionLa versione del protocollo.
idFino a 64 lettere, cifre, _ o -. Resta identico a ogni nuovo tentativo, così un collector può memorizzare un envelope una sola volta.
keyLa chiave del progetto. Solo per Cloud.
environmentdevelopment, preview o production.
releaseL'identificativo della release, fino a 120 caratteri.
connectionIl modo in cui l'SDK è connesso.
itemsI segnali e le dichiarazioni contenuti in questo envelope.

Ogni item contiene type (signal o declaration), kind (error o event), fingerprint, countDelta, node (il percorso nel codice), flow, label, message e metadata. Le occorrenze ripetute vengono sommate in countDelta, quindi un collector deve contare usando questo campo, non il numero di item.

Risposte e nuovi tentativi

RispostaCosa fa l'SDK
2xxConsegna riuscita.
401, 403Smette di inviare in modo definitivo.
408, 429, 5xxRitenta.
Qualsiasi altro 4xxScarta il batch.

I nuovi tentativi avvengono dopo 1, 5 e 15 minuti, al massimo 4 tentativi, e l'SDK tiene in attesa al massimo 20 envelope. Un header Retry-After viene interpretato come numero di secondi.

Eseguire un tuo collector

Un collector fa tre cose: autentica la richiesta, convalida l'envelope e lo memorizza o lo inoltra.

import { normalizeEnvelope } from "@pathrule/signals/protocol";

// In your POST handler, after checking your own Authorization header:
const envelope = normalizeEnvelope(body, { requireKey: false, bytes: rawBody.length });

Passa requireKey: false quando ti autentichi in altro modo, per esempio con l'header bearer descritto nella guida rapida, e passa la dimensione grezza in modo che il limite di dimensione venga applicato. Poi:

  • Memorizza un envelope una sola volta per ogni id; i nuovi tentativi lo riutilizzano.
  • Raggruppa gli item per ambiente, tipo e fingerprint, come fa Pathrule.
  • Rispondi 2xx non appena l'envelope è al sicuro, e 401 o 403 solo quando il client deve fermarsi.