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:
- Seleziona il progetto con
project_idoproject_ids. - Aggiungi un intervallo di tempo con
sincee, se vuoi,until. - Aggiungi i filtri per servizio, release, ambiente, stato o specifici del segnale.
- Imposta
limitper una pagina più piccola. - Aggiungi i campi del cursore solo dopo che una risposta con cursore li ha restituiti.
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,severityeattribute_filters. - I log accettano
status:active(predefinito),ignoredoall.ignoredseleziona i log che una regola dei log nasconde dalla vista attiva. - I problemi accettano lo
statusdel problema:unresolved,resolvedoarchived.ignoredè un nome precedente diarchivede seleziona gli stessi problemi. - I problemi accettano
severity:info,warning,errorocritical. - I problemi accettano
priority:high,mediumolow. - I problemi accettano
assignee:meper i problemi assegnati all’account connesso,noneper i problemi senza assegnatario,my_teamsper i problemi dei tuoi team, un ID utente oppureteam:<team_id>. - Azioni e metriche accettano
name. - Le azioni accettano
distinct_id. - Le tracce accettano lo
statusdella traccia emin_duration_ms. - I deploy accettano
status:succeededofailed.
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 accettanoresponse_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. Aggiungepriorityepriority_source. - La versione 3 ha tutti i campi della versione 2. Aggiunge
assignee. - La versione 4 ha tutti i campi della versione 3.
assigneehatype:useroteam.
status=archived, priority e assignee. Consulta la
risposta dei problemi.
Filtro di gravità
Usaseverity=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:
trace_id come
segmento del percorso con la codifica percentuale. Non inviarlo come chiave di
query.
Ambito del progetto
Usaproject_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.
422 e validation_failed:
- Una richiesta che contiene sia
project_idsiaproject_ids. - Un valore di
project_idscon meno di 2 o più di 50 ID. - Un ID duplicato o un ID che non è un UUID.
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
sinceeuntilè al massimo di 31 giorni. intervalvaleauto,1m,5m,15m,1h,6ho1d. Il valore predefinito èauto. Un intervallo che produce più di 500 fasce genera un errore.service_name,releaseedenvironmentsono filtri esatti.
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
UsaGET /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 contengonostatus in un
progetto:
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.
Prosegui nel catalogo
Il catalogo non usapagination=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.
containsestarts_withrichiedono 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.
attribute_filters. Per la
risposta dei log, consulta
Risposta dei log.
Correggi gli errori sugli attributi
Ognuno di questi errori restituisce422 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, inviapagination=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.timeva incursor_time.next_cursor.idva incursor_id.- Per le tracce,
next_cursor.trace_idva incursor_trace_id. - Per le release, aggiungi
cursor_davanti al nome di ogni campo restituito, ad esempionext_cursor.releaseva incursor_release.
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
paginationdiverso dacursor. - Campi del cursore senza
pagination=cursor. - Un insieme incompleto di campi del cursore.
- Un
cursor_timeche non è un timestamp RFC3339.
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:- Verifica l’ID del progetto.
- Rimuovi i filtri facoltativi uno alla volta.
- Amplia
sincese l’evento atteso è meno recente. Rimuoviuntilo spostalo più avanti se l’evento atteso è più recente. - Confronta
service_name,releaseedenvironmentcon i valori che il tuo SDK invia. - Per i log, aggiungi
status=allse una regola dei log può nascondere il log atteso. - 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 restituisce422:
- 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.
