422 et validation_failed, sauf si la matrice
indique autre chose. Les alias pratiques comme project, trace et user ne
sont pas des paramètres de requête. Ne reportez pas un filtre d’une route sur
une autre.
Construire une requête filtrée
Placez la chaîne de requête après le chemin. Utilisez--data-urlencode pour
encoder correctement les caractères réservés. Cette requête lit les logs critiques
d’un projet sur les dernières 24 heures :
- Sélectionnez le projet avec
project_idouproject_ids. - Ajoutez une période avec
since, et éventuellementuntil. - Ajoutez les filtres de service, de version, d’environnement, de statut ou les filtres propres au signal.
- Définissez
limitpour obtenir une page plus petite. - Ajoutez les champs de curseur seulement après qu’une réponse paginée par curseur les a renvoyés.
GET /api/logs
utilise status=active quand vous omettez status.
Matrice des filtres
Les paramètres de la colonne « Obligatoires » doivent figurer dans la requête. Tous les autres paramètres sont facultatifs.
Pour l’investigation d’un problème,
selection vaut first, latest ou
recommended. Envoyez selection ou occurrence_id, pas les deux. Les deux
exigent une response_version de 2 à 13. Avec la version 2 ou une version
ultérieure et sans sélecteur, LogBrew utilise recommended. Obtenez un
occurrence_id avec GET /api/telemetry/issues/{issue_id}/events.
Les routes d’analyse en POST acceptent un corps JSON. Consultez
Analyses produit.
Filtres communs et filtres propres à un signal
service_name, release et environment restreignent toutes les listes de
télémétrie. Utilisez les valeurs exactes qu’envoie votre SDK.
Certains filtres appartiennent à un seul signal :
- Les logs acceptent
search,trace_id,severityetattribute_filters. - Les logs acceptent
status:active(par défaut),ignoredouall.ignoredsélectionne les logs qu’une règle de log masque dans la vue active. - Les problèmes acceptent le
statusde problème :unresolved,resolvedouarchived.ignoredest un ancien nom dearchivedet sélectionne les mêmes problèmes. - Les problèmes acceptent
severity:info,warning,erroroucritical. - Les problèmes acceptent
priority:high,mediumoulow. - Les problèmes acceptent
assignee:mepour les problèmes attribués au compte connecté,nonepour les problèmes sans responsable,my_teamspour les problèmes de vos équipes, un ID d’utilisateur outeam:<team_id>. - Les actions et les métriques acceptent
name. - Les actions acceptent
distinct_id. - Les traces acceptent le
statusde trace etmin_duration_ms. - Les déploiements acceptent
status:succeededoufailed.
severity des logs et des problèmes comparent la gravité
effective. Si une règle a modifié la gravité, le filtre utilise la valeur de la
règle. Consultez
Valeurs de gravité.
Période
since accepte un nombre entier positif d’heures ou de jours, comme 24h ou
7d, ou un horodatage RFC3339. Une durée compacte est relative à l’heure de
chaque requête.
until accepte uniquement un horodatage RFC3339. C’est une heure de fin
exclusive : une ligne située exactement à until n’est pas dans le résultat.
since est inclusif. Par exemple, since=2026-10-01T00:00:00Z et
until=2026-10-02T00:00:00Z sélectionnent 1 journée complète. LogBrew compare
les heures à la milliseconde près.
until doit être postérieur à since. Sinon, ou si until n’est pas un
horodatage RFC3339, la requête échoue avec 422 et validation_failed.
Pour une lecture sur plusieurs pages, choisissez une heure de début RFC3339 et
gardez-la sur chaque page. Gardez aussi le même until sur chaque page.
Cette requête lit les logs d’erreur d’une journée :
La liste des déploiements suit d’autres règles de temps. Ses paramètres
since et until acceptent uniquement des horodatages RFC3339, et les deux
sont inclusifs. Ils portent sur l’heure de fin du déploiement.Version de la réponse des problèmes
La liste et le détail des problèmes acceptentresponse_version=1,
response_version=2, response_version=3 ou response_version=4. La version 1 est la valeur par
défaut. Toute autre valeur échoue avec 422 et validation_failed.
- La version 1 affiche l’état archivé sous la forme
ignored. Elle n’affiche pas la priorité. - La version 2 affiche l’état archivé sous la forme
archived. Elle ajoutepriorityetpriority_source. - La version 3 contient tous les champs de la version 2. Elle ajoute
assignee. - La version 4 contient tous les champs de la version 3.
assigneea untype:userouteam.
status=archived, priority et assignee.
Consultez la
réponse d’un problème.
Filtre de gravité
Utilisezseverity=info|warning|error|critical sur GET /api/logs. L’ancien
paramètre level est un alias de compatibilité. Les 2 paramètres acceptent les
valeurs canoniques et les alias trace, debug, warn et fatal. LogBrew
convertit un alias en sa valeur canonique avant de comparer.
Si une requête envoie à la fois severity et level, LogBrew normalise
d’abord les deux. Des valeurs contradictoires sont rejetées avec :
Filtres de trace
Pour la recherche de traces,status vaut error ou ok. Omettez-le pour
inclure les deux. min_duration_ms doit être supérieur ou égal à zéro. Il
s’applique uniquement à la recherche de traces.
Cette requête trouve les traces en erreur qui ont duré au moins
500 millisecondes :
trace_id en
pourcentage dans le segment de chemin. Ne l’envoyez pas comme paramètre de
requête.
Périmètre de projet
Utilisezproject_id=<project-uuid> pour lire un projet. Sur les routes dont
la matrice liste project_ids, utilisez project_ids=<uuid>,<uuid> pour un
ensemble exact de 2 à 50 projets. Sur ces routes, omettez les 2 paramètres pour
lire tous les projets que le compte peut lire. Une route qui exige
project_id accepte 1 seul projet.
422 et validation_failed :
- Une requête qui contient à la fois
project_idetproject_ids. - Une valeur
project_idsavec moins de 2 ou plus de 50 ID. - Un ID en double ou un ID qui n’est pas un UUID.
project_ids correspond à un projet que le compte ne peut pas
lire, la requête échoue avec 404 et not_found. Ne retirez pas cet ID pour
continuer. Demandez à l’utilisateur de choisir un nouvel ensemble.
Gardez le même périmètre de projet sur chaque page de curseur. Ne retirez pas
le filtre de projet après un résultat vide : cela pose une autre question.
Séries par intervalle
GET /api/telemetry/metrics/series renvoie une métrique sous forme
d’intervalles de temps. GET /api/telemetry/summary/volume renvoie le nombre
de signaux sous forme d’intervalles de temps. Les 2 routes suivent ces
règles :
sinceest obligatoire.untilest facultatif et vaut par défaut l’heure de la requête.- L’écart entre
sinceetuntilest de 31 jours au maximum. intervalvautauto,1m,5m,15m,1h,6hou1d. La valeur par défaut estauto. Une valeur qui produit plus de 500 intervalles échoue.service_name,releaseetenvironmentsont des filtres exacts.
name est le nom exact de la métrique issu de
GET /api/telemetry/metrics. group_by vaut none, service_name,
release ou environment. series_limit va de 1 à 20.
Pour le volume des signaux, until ne doit pas être dans le futur, et
response_version accepte uniquement 1.
Filtrer les attributs de log
UtilisezGET /api/logs/attributes pour trouver les chemins et les types
d’attributs que vous pouvez rechercher. Envoyez ensuite attribute_filters à
GET /api/logs. Les 2 requêtes exigent since.
Lire le catalogue d’attributs
Cette requête trouve, dans un projet, les chemins numériques qui contiennentstatus :
type vaut string, number ou boolean. observed_count est le nombre de
logs de la période qui ont ce chemin et ce type. last_seen_at est l’heure du
plus récent d’entre eux. Un log peut avoir de nombreux chemins. N’additionnez
pas les comptages pour obtenir un nombre de logs.
coverage indique quels logs un filtre d’attributs peut rechercher :
La somme des 3 groupes vaut
total_logs. Les paramètres type et search
du catalogue et le curseur ne modifient pas la couverture. Une liste
attributes vide ne signifie pas que total_logs vaut zéro.
Le catalogue n’a pas de paramètre status. Son filtre de gravité compare la
gravité capturée, pas la gravité effective.
search est une sous-chaîne de chemin de 1 à 128 octets, sans caractères de
contrôle. limit définit le nombre d’attributs par page.
Poursuivre le catalogue
Le catalogue n’utilise paspagination=cursor. Répétez chaque filtre et
copiez les 3 champs de next_cursor :
Arrêtez-vous quand
next_cursor vaut null.
Appliquer un filtre typé
Copiez le chemin et le type depuis le catalogue. Les chemins utilisent la syntaxe JSON Pointer, pas des clés séparées par des points. Gardez tels quels les échappements~0 ou ~1 du chemin.
Cette requête lit les logs dont le statut numérique de réponse est supérieur ou
égal à 500 :
attribute_filters est un tableau JSON de 1 à 4 filtres. Un log doit
correspondre à chaque filtre. Chaque filtre a path, type, operator et
value. Le type JSON de value doit correspondre à type : le nombre 500
n’est pas la chaîne "500".
ne correspond uniquement aux logs qui ont le chemin. Un log sans le chemin ne
correspond pas à ne. Pour string, case_sensitive est facultatif et vaut
false par défaut. LogBrew rejette "case_sensitive": true pour number et
boolean.
Ces limites s’appliquent :
- Le tableau JSON fait au maximum 4 096 octets.
- Une valeur de type chaîne fait au maximum 1 024 octets.
containsetstarts_withexigent une chaîne non vide.- Un nombre doit être fini et compris entre -9 007 199 254 740 992 et 9 007 199 254 740 992.
attribute_filters. Pour la
réponse de log, consultez
Réponse de log.
Corriger les erreurs d’attributs
Chaque erreur ci-dessous renvoie422 avec validation_failed :
Corrigez la requête avant de réessayer. Ne retirez pas de filtre : cela
modifie le résultat.
Pagination par curseur
Le mode curseur est facultatif et doit être activé. Sans lui, les routes de liste renvoient un simple tableau. Pour la première page, envoyezpagination=cursor sans champs de curseur. Pour chaque page suivante, répétez
chaque filtre et envoyez l’ensemble complet des champs de curseur :
Reportez les champs
next_cursor renvoyés dans la requête suivante :
next_cursor.timeva danscursor_time.next_cursor.idva danscursor_id.- Pour les traces,
next_cursor.trace_idva danscursor_trace_id. - Pour les versions, ajoutez
cursor_devant chaque nom de champ renvoyé. Par exemple,next_cursor.releaseva danscursor_release.
next_cursor vaut null. Ne calculez pas un curseur à
partir de la dernière ligne. Le curseur des versions ne modifie pas les projets
sélectionnés. Gardez le project_id ou les project_ids d’origine.
limit définit la taille de la page. Une page peut contenir moins de lignes.
Ces routes n’acceptent pas page ni page_number.
Sur la plupart des routes, LogBrew ramène au maximum un
limit supérieur au
maximum. La liste des déploiements rejette un limit hors de l’intervalle 1 à
100 avec 422. La liste des déploiements renvoie toujours un objet de page
avec next_cursor, même sans pagination=cursor.
LogBrew rejette ces requêtes avec 422 et validation_failed :
- Une valeur de
paginationautre quecursor. - Des champs de curseur sans
pagination=cursor. - Un ensemble incomplet de champs de curseur.
- Un
cursor_timequi n’est pas un horodatage RFC3339.
Diagnostiquer un résultat vide
Une liste vide signifie qu’aucune ligne ne correspond à tous les filtres. Elle ne dit rien des autres signaux. Vérifiez la requête dans cet ordre :- Vérifiez l’ID du projet.
- Retirez les filtres facultatifs un par un.
- Élargissez
sincesi le signal attendu est plus ancien. Retirezuntilou repoussez-le si le signal attendu est plus récent. - Comparez
service_name,releaseetenvironmentavec les valeurs qu’envoie votre SDK. - Pour les logs, ajoutez
status=allsi une règle de log peut masquer le log attendu. - Vérifiez que la route accepte chaque filtre.
Corriger une requête rejetée
Une requête rejetée renvoie l’enveloppe d’erreur standard. Un paramètre inconnu ou une valeur du mauvais type renvoie422 :
- Remplacez un alias pratique par le paramètre de la matrice des filtres.
- Envoyez chaque champ de curseur de continuation dont la route a besoin.
- Retirez les champs de curseur de la requête de la première page.
- Utilisez un seul sélecteur de projet.
- Remplacez une gravité ou un statut de trace non pris en charge par une valeur canonique.
