Lire l’occurrence recommandée
Installez la CLI LogBrew et exécutezlogbrew login. Copiez
l’UUID du problème depuis une liste de problèmes. La CLI valide la réponse
avant de l’afficher.
--json pour les agents et les scripts.
logbrew explain issue "<issue_id>" fait la même lecture. Pour une lecture
directe par l’API, demandez la version 13 de la réponse. La CLI demande la
même version :
response_version de 1 à 13. La sélection d’une occurrence
nécessite la version 2 ou une version ultérieure. Ce guide décrit la
version 13.
L’occurrence recommandée est une occurrence récente et conservée, avec un
contexte utile. Elle peut être plus ancienne que la dernière occurrence.
LogBrew compare les occurrences conservées les plus récentes, dans la limite
de occurrence_selection.recommendation.candidate_limit. Il choisit celle qui
offre le plus de contexte pour l’investigation. Si deux occurrences ont autant
de contexte, la plus récente l’emporte. Si
occurrence_selection.recommendation.candidate_window_truncated vaut true,
le problème a des occurrences plus anciennes que la recommandation n’a pas
évaluées.
Confirmer le périmètre de l’investigation
Les filtres de la liste des problèmes ne s’appliquent pas à une investigation. L’ID du problème sélectionne le groupe, et la réponse peut inclure l’historique conservé du groupe. Un ID d’occurrence exact ne retire pas cet historique. Si votre tâche n’autorise pas l’accès à cet historique, ne demandez pas l’investigation. Avant d’interpréter l’erreur, vérifiez que :subject.project_idest le projet prévu.event.idest l’occurrence sélectionnée.event.occurred_atse situe dans la période de l’incident.- Le service, l’environnement et la version correspondent au déploiement examiné.
schema_versionvaut13.
Sélectionner une autre occurrence
Envoyez un seul sélecteur :
N’envoyez pas
selection et occurrence_id ensemble. Dans subject,
first_seen_at et last_seen_at décrivent le groupe. Les preuves détaillées
se trouvent dans l’objet event sélectionné.
occurrence_selection renvoie aussi des résumés des occurrences first,
latest, recommended et selected. occurrence_selection.reason indique
pourquoi LogBrew a sélectionné l’occurrence :
Lire la réponse dans l’ordre
- Lisez
subjectpour le groupe, puiseventpour l’occurrence sélectionnée. - Lisez
grouping,lifecycleetoccurrence_analysispour l’historique du groupe. - Lisez
fixpour l’emplacement dans le code. Gardez saprovenanceavec le fichier, la fonction, la ligne et la colonne. Un frame observé montre du code à examiner, pas une cause prouvée. - Lisez
cause.statuset ses preuves. Aucune valeur de cause ne prouve une cause racine. - Lisez
impact.user_impactséparément deimpact.occurrence_count. Gardezcount_method,coverageetlimitationsavec le nombre. Un seul utilisateur peut causer plusieurs occurrences. - Lisez
reproduction.status, puiscorrelations.
Emplacement dans le code et cause
fix.status indique d’où vient l’emplacement dans le code :
cause.status vaut reported_hypothesis, evidence_only ou unknown. Une
reported_hypothesis vient de l’application et n’est pas vérifiée.
cause.signals liste les signaux observés, comme unhandled_exception ou
error_trace_span. provenance vaut backend_observed ou
application_reported. Ne mélangez pas ces deux valeurs.
Trouver le fichier source
source_locator relie l’emplacement dans le code à un dépôt quand la
configuration du projet associe un dépôt au service. Utilisez
repository_full_name, revision et repository_relative_file pour ouvrir
le fichier. revision_source vaut deployment_commit ou setup_snapshot.
Si source_locator.status vaut not_found, le service n’a aucun composant de
dépôt associé. Cela ne signifie pas que le fichier manque. Ne devinez pas un
composant à partir du nom du fichier.
Utilisateurs touchés
known_affected_users est approximatif, même quand le statut vaut
complete. Il ne compte ni les utilisateurs anonymes ni les occurrences sans
contexte utilisateur. Un nombre null ne vaut pas zéro. impact.reported
contient les valeurs signalées par l’application. Ne les ajoutez pas aux
nombres mesurés.
Statut de reproduction
Le déclencheur vient de
event.request ou de impact.reported.failed_action.
L’échec attendu vient de event.exception ou de
event.request.response_status_code. L’emplacement dans le code est
fix.location. reproduction.baseline_occurrence_id est l’occurrence
sélectionnée. Le reçu reproduction.evidence enregistre chaque élément sous
reproduction.trigger, reproduction.expected_failure et
reproduction.code_location. Un statut ready ne prouve pas qu’un rejeu a
réussi. N’inventez jamais de corps de requête, de valeurs masquées ni
d’étapes.
Cycle de vie et régression
lifecycle.persisted_status est le statut stocké.
lifecycle.effective_status vaut regressed quand une occurrence est arrivée
après la résolution du problème. Le statut stocké reste resolved jusqu’à ce
qu’une personne rouvre le problème.
lifecycle.regression.first_reappeared_occurrence identifie la première
nouvelle occurrence.
La réponse d’investigation affiche un problème archivé comme ignored dans
subject.status et lifecycle. Consultez
Valeurs de statut.
Gérer les preuves manquantes et limitées
correlations.trace.status prend ces valeurs :
Pour
not_linked, continuez avec l’exception, les frames, les breadcrumbs et
les autres preuves renvoyées. Pour not_found, conservez l’ID de trace exact.
Pour unavailable, réessayez plus tard. Aucun de ces statuts ne signifie que
l’application n’a pas de traces. Une trace available peut ne contenir que le
span de capture du problème. Consultez
Spans de capture.
correlations.logs contient des logs proches de l’heure de l’occurrence, de
la même version et du même environnement. Si l’occurrence a un ID de trace,
les logs viennent de cette trace. Sans ID de trace, ils viennent du même
service. actions, metrics et related_issues nécessitent un ID de trace.
Chaque collection a un status, ses items et truncated.
Ne mélangez pas captured_fields, missing_fields, redacted_fields et
truncated_fields. Des données masquées ne sont pas des données manquantes.
Des données tronquées ne sont pas complètes. evidence.status vaut partial
quand un champ requis est manquant, masqué, tronqué ou indisponible. Les mises
à jour du SDK n’ajoutent pas de preuves aux événements passés.
Suivez les ID exacts pour les logs, problèmes et versions associés. Un
horodatage proche ne constitue pas un lien.
Suivre les actions suivantes
Traiteznext_actions dans l’ordre de priority quand votre client prend en
charge la paire exacte code et target. Chaque action a aussi une reason.
Vérifier le déploiement candidat
Utilisez l’ID de l’occurrence en échec comme référence. Obtenez l’ID du déploiement candidat dans les preuves de déploiement ou dans votre processus de livraison.logbrew deploy enregistre un déploiement.
422.
La réponse compte les occurrences du même problème reçues par LogBrew entre
la fin du déploiement et l’heure de la requête (observed_after et
observed_until). Elle compte aussi les traces de la version candidate.
absence_is_proof vaut toujours false. L’absence de récurrence sur la
période ne prouve pas que le correctif est définitif. Modifiez le statut dans le
workflow des problèmes seulement
après que votre équipe a accepté les preuves.
Corriger les erreurs sans risque
Les réponses d’erreur contiennent
error, code, next et next_action.
Utilisez code et next_action pour piloter le programme. Affichez next
comme une indication. Ne l’exécutez pas comme une commande. Si une lecture
échoue, ne remplacez pas l’occurrence demandée par une autre. Consultez
Erreurs de l’API et
API de télémétrie.