Skip to main content
Ogni route di lettura accetta le proprie chiavi di query. Una route della matrice dei filtri rifiuta una chiave sconosciuta o un valore del tipo sbagliato con 422 e validation_failed, salvo diversa indicazione nella matrice. Gli alias descrittivi come project, trace e user non sono chiavi di query. Non spostare un filtro da una route all’altra.

Crea una richiesta filtrata

Metti la stringa di query dopo il percorso. Usa --data-urlencode per codificare in modo sicuro i caratteri riservati. Questa richiesta legge i log critici di un progetto nelle ultime 24 ore:
Aggiungi i filtri in questo ordine:
  1. Seleziona il progetto con project_id o project_ids.
  2. Aggiungi un intervallo di tempo con since e, se vuoi, until.
  3. Aggiungi i filtri per servizio, release, ambiente, stato o specifici del segnale.
  4. Imposta limit per una pagina più piccola.
  5. Aggiungi i campi del cursore solo dopo che una risposta con cursore li ha restituiti.
Ogni riga restituita corrisponde a tutti i filtri della richiesta. Un filtro omesso usa il valore predefinito della route. Ad esempio, GET /api/logs usa status=active quando ometti status.

Matrice dei filtri

Le chiavi della colonna «Obbligatorie» devono essere presenti nella richiesta. Tutte le altre chiavi sono facoltative. Per l’indagine su un problema, selection vale first, latest o recommended. Invia selection oppure occurrence_id, non entrambi. Entrambi richiedono un response_version da 2 a 13. Con la versione 2 o successive e senza selettore, LogBrew usa recommended. Ricava un occurrence_id da GET /api/telemetry/issues/{issue_id}/events. Le route di analisi POST accettano un corpo JSON. Consulta Analisi di prodotto.

Filtri comuni e specifici del segnale

service_name, release ed environment restringono ogni elenco di telemetria. Usa i valori esatti che il tuo SDK invia. Alcuni filtri appartengono a un solo segnale:
  • I log accettano search, trace_id, severity e attribute_filters.
  • I log accettano status: active (predefinito), ignored o all. ignored seleziona i log che una regola dei log nasconde dalla vista attiva.
  • I problemi accettano lo status del problema: unresolved, resolved o archived. ignored è un nome precedente di archived e seleziona gli stessi problemi.
  • I problemi accettano severity: info, warning, error o critical.
  • I problemi accettano priority: high, medium o low.
  • I problemi accettano assignee: me per i problemi assegnati all’account connesso, none per i problemi senza assegnatario, my_teams per i problemi dei tuoi team, un ID utente oppure team:<team_id>.
  • Azioni e metriche accettano name.
  • Le azioni accettano distinct_id.
  • Le tracce accettano lo status della traccia e min_duration_ms.
  • I deploy accettano status: succeeded o failed.
I filtri severity di log e problemi confrontano la gravità effettiva. Se una regola ha cambiato la gravità, il filtro usa il valore della regola. Consulta Valori di gravità.

Intervallo di tempo

since accetta un numero intero positivo di ore o giorni, come 24h o 7d, oppure un timestamp RFC3339. Una durata compatta è relativa all’ora di ciascuna richiesta. until accetta solo un timestamp RFC3339. È un’ora di fine esclusa: una riga che cade esattamente su until non è nel risultato. since è incluso. Ad esempio, since=2026-10-01T00:00:00Z e until=2026-10-02T00:00:00Z selezionano 1 giorno intero. LogBrew confronta gli orari al millisecondo. until deve essere successivo a since. Altrimenti, o se until non è un timestamp RFC3339, la richiesta non riesce con 422 e validation_failed. Per una lettura su più pagine, scegli un’ora di inizio RFC3339 e mantienila in ogni pagina. Mantieni anche lo stesso until in ogni pagina. Questa richiesta legge i log di errore di 1 giorno:
L’elenco dei deploy usa regole temporali diverse. I suoi since e until accettano solo timestamp RFC3339, ed entrambi sono inclusi. Confrontano l’ora in cui il deploy è terminato.

Versione della risposta dei problemi

L’elenco e il dettaglio dei problemi accettano response_version=1, response_version=2, response_version=3 o response_version=4. La versione 1 è quella predefinita. Un altro valore genera un errore 422 con validation_failed.
  • La versione 1 mostra lo stato archiviato come ignored. Non mostra la priorità.
  • La versione 2 mostra lo stato archiviato come archived. Aggiunge priority e priority_source.
  • La versione 3 ha tutti i campi della versione 2. Aggiunge assignee.
  • La versione 4 ha tutti i campi della versione 3. assignee ha type: user o team.
Ogni versione accetta status=archived, priority e assignee. Consulta la risposta dei problemi.

Filtro di gravità

Usa severity=info|warning|error|critical su GET /api/logs. La vecchia chiave level è un alias di compatibilità. Entrambe le chiavi accettano i valori canonici e gli alias trace, debug, warn e fatal. LogBrew converte un alias nel suo valore canonico prima del confronto. Se una richiesta invia sia severity sia level, LogBrew normalizza prima entrambi. Se i valori sono in conflitto, LogBrew rifiuta la richiesta con:

Filtri delle tracce

Per la ricerca delle tracce, status vale error o ok. Omettilo per includere entrambi. min_duration_ms deve essere zero o maggiore. Vale solo per la ricerca delle tracce. Questa richiesta trova le tracce con errori durate almeno 500 millisecondi:
Per il dettaglio e il riepilogo di una traccia, inserisci trace_id come segmento del percorso con la codifica percentuale. Non inviarlo come chiave di query.

Ambito del progetto

Usa project_id=<project-uuid> per leggere un progetto. Sulle route che nella matrice elencano project_ids, usa project_ids=<uuid>,<uuid> per un insieme esatto da 2 a 50 progetti. Su quelle route, ometti entrambe le chiavi per leggere tutti i progetti che l’account può leggere. Una route che richiede project_id accetta 1 solo progetto.
LogBrew rifiuta queste selezioni con 422 e validation_failed:
  • Una richiesta che contiene sia project_id sia project_ids.
  • Un valore di project_ids con meno di 2 o più di 50 ID.
  • Un ID duplicato o un ID che non è un UUID.
Se un ID in project_ids è un progetto che l’account non può leggere, la richiesta non riesce con 404 e not_found. Non rimuovere quell’ID per continuare. Chiedi all’utente di scegliere un nuovo insieme. Mantieni lo stesso ambito del progetto in ogni pagina del cursore. Non rimuovere il filtro del progetto dopo un risultato vuoto, perché così poni una domanda diversa.

Serie a fasce temporali

GET /api/telemetry/metrics/series restituisce una metrica suddivisa in fasce temporali. GET /api/telemetry/summary/volume restituisce i conteggi dei segnali suddivisi in fasce temporali. Entrambe le route usano queste regole:
  • since è obbligatorio. until è facoltativo e per impostazione predefinita è l’ora della richiesta.
  • L’intervallo tra since e until è al massimo di 31 giorni.
  • interval vale auto, 1m, 5m, 15m, 1h, 6h o 1d. Il valore predefinito è auto. Un intervallo che produce più di 500 fasce genera un errore.
  • service_name, release ed environment sono filtri esatti.
Per le serie delle metriche, name è il nome esatto della metrica restituito da GET /api/telemetry/metrics. group_by vale none, service_name, release o environment. series_limit va da 1 a 20. Per il volume dei segnali, until non può essere nel futuro e response_version può essere solo 1.

Filtra gli attributi dei log

Usa GET /api/logs/attributes per trovare i percorsi e i tipi di attributo che puoi cercare. Poi invia attribute_filters a GET /api/logs. Entrambe le richieste richiedono since.

Leggi il catalogo degli attributi

Questa richiesta trova i percorsi numerici che contengono status in un progetto:
La risposta è un oggetto, non un semplice array. Questo esempio sintetico ha 2 attributi e un’altra pagina:
type vale string, number o boolean. observed_count è il numero di log nell’intervallo che hanno quel percorso e quel tipo. last_seen_at è l’ora del più recente. Un log può avere molti percorsi. Non sommare i conteggi per ottenere un numero di log. coverage indica in quali log un filtro sugli attributi può cercare: I 3 gruppi sommati danno total_logs. type, search e il cursore del catalogo non cambiano la copertura. Un elenco attributes vuoto non significa che total_logs sia zero. Il catalogo non ha la chiave status. Il suo filtro di gravità confronta la gravità acquisita, non quella effettiva. search è una sottostringa del percorso da 1 a 128 byte, senza caratteri di controllo. limit imposta il numero di attributi per pagina. Il catalogo non usa pagination=cursor. Ripeti tutti i filtri e copia tutti e 3 i campi da next_cursor: Fermati quando next_cursor è null.

Applica un filtro tipizzato

Copia il percorso e il tipo dal catalogo. I percorsi usano la sintassi JSON Pointer, non chiavi separate da punti. Lascia invariati gli eventuali escape ~0 o ~1 nel percorso. Questa richiesta legge i log il cui stato numerico della risposta è 500 o superiore:
attribute_filters è un array JSON da 1 a 4 filtri. Un log deve corrispondere a tutti i filtri. Ogni filtro ha path, type, operator e value. Il tipo JSON di value deve corrispondere a type: il numero 500 non è la stringa "500". ne corrisponde solo ai log che hanno il percorso. Un log senza il percorso non corrisponde a ne. Per string, case_sensitive è facoltativo e il valore predefinito è false. LogBrew rifiuta "case_sensitive": true per number e boolean. Valgono questi limiti:
  • L’array JSON è al massimo di 4.096 byte.
  • Un valore stringa è al massimo di 1.024 byte.
  • contains e starts_with richiedono una stringa non vuota.
  • Un numero deve essere finito e compreso tra -9.007.199.254.740.992 e 9.007.199.254.740.992.
Un log in cui l’indice non può cercare non corrisponde a nessun filtro. Può comunque comparire in una richiesta senza attribute_filters. Per la risposta dei log, consulta Risposta dei log.

Correggi gli errori sugli attributi

Ognuno di questi errori restituisce 422 con validation_failed: Correggi la richiesta prima di riprovare. Non rimuovere un filtro, perché così cambia il risultato.

Paginazione con cursore

La modalità cursore va attivata in modo esplicito. Senza di essa, le route di elenco restituiscono un semplice array. Per la prima pagina, invia pagination=cursor senza campi del cursore. Per ogni pagina successiva, ripeti tutti i filtri e invia l’insieme completo dei campi del cursore: Riporta nella richiesta successiva i campi di next_cursor restituiti:
  • next_cursor.time va in cursor_time.
  • next_cursor.id va in cursor_id.
  • Per le tracce, next_cursor.trace_id va in cursor_trace_id.
  • Per le release, aggiungi cursor_ davanti al nome di ogni campo restituito, ad esempio next_cursor.release va in cursor_release.
Fermati quando next_cursor è null. Non calcolare un cursore dall’ultima riga. Il cursore delle release non cambia i progetti selezionati. Mantieni il project_id o i project_ids originali.
limit imposta la dimensione della pagina. Una pagina può contenere meno righe. Queste route non accettano page né page_number. Sulla maggior parte delle route, LogBrew riduce al massimo un limit che lo supera. L’elenco dei deploy rifiuta con 422 un limit fuori dall’intervallo da 1 a 100. L’elenco dei deploy restituisce sempre un oggetto pagina con next_cursor, anche senza pagination=cursor. LogBrew rifiuta queste richieste con 422 e validation_failed:
  • Un valore di pagination diverso da cursor.
  • Campi del cursore senza pagination=cursor.
  • Un insieme incompleto di campi del cursore.
  • Un cursor_time che non è un timestamp RFC3339.
Un cursore segna una posizione, non congela i dati. Quando ti serve una vista aggiornata, riparti da una nuova prima pagina. La CLI usa gli stessi campi:

Diagnostica un risultato vuoto

Un elenco vuoto significa che nessuna riga corrisponde a tutti i filtri. Non dice nulla sugli altri segnali. Controlla la richiesta in questo ordine:
  1. Verifica l’ID del progetto.
  2. Rimuovi i filtri facoltativi uno alla volta.
  3. Amplia since se l’evento atteso è meno recente. Rimuovi until o spostalo più avanti se l’evento atteso è più recente.
  4. Confronta service_name, release ed environment con i valori che il tuo SDK invia.
  5. Per i log, aggiungi status=all se una regola dei log può nascondere il log atteso.
  6. Verifica che la route accetti ogni filtro.

Risolvi una query rifiutata

Una query rifiutata restituisce la struttura di errore standard. Una chiave sconosciuta o un valore del tipo sbagliato restituisce 422:
Correzioni comuni:
  • Sostituisci un alias descrittivo con la chiave della matrice dei filtri.
  • Invia tutti i campi del cursore per proseguire che la route richiede.
  • Rimuovi i campi del cursore dalla richiesta della prima pagina.
  • Usa un solo selettore di progetto.
  • Sostituisci una gravità o uno stato della traccia non supportati con un valore canonico.
Per i codici di errore e il recupero, consulta Errori API. Per i corpi delle risposte, consulta Formati delle risposte di telemetria.