- un autre tableau de bord, pour une vue ciblée d’un élément précis, comme un tableau de bord de détail par service, ou
- les événements sous-jacents dans Search, pour les logs ou les traces associés à la ligne.
Examiner un service dans son propre tableau de bord
Service Detail.
Créer le tableau de bord de détail
Créez un tableau de bord nomméService Detail et ajoutez un filtre personnalisé avec l’expression ServiceName sur votre traces source. Le filtre au niveau du tableau de bord redéfinit la portée de chaque tuile sur un seul service, afin que les tuiles elles-mêmes n’intègrent pas de service en dur dans leurs requêtes. Ajoutez les vues par service souhaitées : indicateurs clés RED (requests, errors, durée P95), graphique des percentiles de latence (P50, P95, P99), taux de requêtes au fil du temps et ventilation par endpoint regroupée par SpanName.Enregistrez d’abord ce tableau de bord afin de pouvoir le sélectionner comme cible à l’étape suivante.Créer l’inventaire des services
Sur un tableau de bord d’ensemble, ajoutez une tuile Table sur votre traces source, regroupée parServiceName. Donnez-lui les colonnes RED qui évaluent chaque service, chacune correspondant à une série avec alias :Requests: nombre de spans (taux).Errors: nombre de spans avec un statut d’erreur.P95 Duration: 95e centile deDuration. Définissez le format numérique de la colonne sur une durée afin qu’elle s’affiche comme288ms, et non en nanosecondes brutes.
Requests dans l’ordre décroissant afin que les services les plus sollicités apparaissent en haut. Ce tableau est le catalogue : une ligne par service, évalué selon RED.Configurer le clic sur la ligne
Sur le tableau d’inventaire, ouvrez Row Click Action, sélectionnez Dashboard, puis choisissezService Detail dans la liste des tableaux de bord. Le fait de choisir directement le tableau de bord l’ancre par ID. Le lien continue de fonctionner si le tableau de bord est renommé plus tard, et il reste valable après export et import du tableau de bord. (Réservez l’option Template au choix d’un tableau de bord différent par ligne ; voir Configurer une action de clic sur une ligne.)Comme Service Detail déclare un filtre personnalisé ServiceName, le panneau latéral préremplit un filtre vide pour cette expression. Renseignez son modèle :- Expression :
ServiceName(déjà renseigné) - Template :
{{ServiceName}}
ServiceName du tableau de bord.Cliquer sur une ligne
Au survol d’une ligne, un lien d’action apparaît sur le bord droit du tableau, avec une indication décrivant l’action (Open dashboard "Service Detail"). Un clic sur la ligne ouvre le tableau de bord Service Detail avec son filtre ServiceName défini sur la valeur cliquée, de sorte que chaque tuile (les indicateurs clés RED, les percentiles de latence, la ventilation par endpoint) se recentre sur ce seul service en un seul clic.Aller d’un service à ses traces
Pointer le clic sur une ligne vers Search
Dans le tableau d’inventaire, ouvrez Row Click Action et sélectionnez Search. Choisissez votre source de traces (seules les sources de logs et de traces sont proposées). Ajoutez un filtre :- Expression :
ServiceName - Template :
{{ServiceName}}
Cliquer sur une ligne
Un clic sur une ligne de service ouvre désormais la page Search sur cette source de traces, filtrée surServiceName = <service>, ce qui vous amène aux spans de ce seul service sur le même intervalle de temps.SpanName) ou par attribut d’endpoint au lieu de ServiceName, utilisez cette colonne comme modèle de filtre, et chaque clic sur une ligne ouvrira les événements correspondant à cette opération ou à cet endpoint. Pour un group-by sur un attribut map, consultez la note sur l’alias dans Validation et limites.
Configurer une action de clic sur une ligne
Row Click Action: Default, Row Click Action: Search ou Row Click Action: Dashboard. Cliquez dessus pour ouvrir le panneau latéral.
Le panneau latéral propose trois actions :
- Default : le comportement par défaut. Cliquer sur une ligne ouvre la page Search, filtrée selon les valeurs des colonnes de group-by de la ligne et l’intervalle de temps sélectionné. C’est le comportement obtenu lorsqu’aucune action personnalisée n’est définie.
- Search : envoie le clic vers la page Search pour une source de votre choix.
- Dashboard : envoie le clic vers un autre tableau de bord appartenant à votre équipe.
- Destination : choisissez une source ou un tableau de bord spécifique, ou sélectionnez Template et saisissez un modèle Handlebars mis en correspondance par nom avec une source ou un tableau de bord disponible. Le choix d’une cible spécifique l’ancre par ID. Préférez cette option pour une destination fixe unique : elle résiste aux renommages, ainsi qu’à l’export et à l’import de tableaux de bord, et, dans le cas d’un tableau de bord, elle préremplit les filtres déclarés de la destination. Utilisez Template lorsque la cible doit varier selon la ligne, en vous appuyant sur une colonne de la ligne pour la choisir (par exemple
Errors-{{ServiceName}}). - Filters : cliquez sur Add filter et fournissez une Expression (une colonne ou une expression sur la destination, par exemple
ServiceName) ainsi qu’un Template pour sa valeur (par exemple{{ServiceName}}). Les modèles référencent les colonnes de la ligne cliquée avec{{columnName}}(voir la note ci-dessous pour savoir quelles colonnes sont disponibles). Chaque filtre produit une conditionexpression IN (value)sur la destination, et les filtres qui partagent une même expression sont fusionnés. Lorsque la destination est un tableau de bord, le panneau latéral préremplit un filtre vide pour chaque filtre déjà déclaré par ce tableau de bord, de sorte que vous n’avez plus qu’à renseigner les modèles. - WHERE (facultatif) : un modèle Handlebars rendu dans le filtre global de la destination, en plus des conditions par filtre ci-dessus. Définissez son query language sur SQL ou Lucene pour que la destination puisse l’analyser. Par exemple, le modèle SQL
ServiceName = '{{ServiceName}}'limite la destination au service de la ligne cliquée.
Les modèles référencent les colonnes du tableauUn modèle
{{...}} est résolu à partir des colonnes de la tuile de tableau elle-même : les colonnes de group-by et chaque série par son nom ou son alias, exactement telles qu’elles apparaissent dans le tableau. Il n’a pas accès aux colonnes de la source sous-jacente que le tableau ne sélectionne pas. Pour être transmise lors d’un clic, une valeur doit correspondre à une colonne du tableau ; ainsi, {{ServiceName}} fonctionne parce que ServiceName est la colonne de group-by du tableau, et une colonne aliasée est référencée par son alias. Référencer un nom que le tableau ne possède pas fait échouer le clic avec Row has no column '<name>'.Comment la destination et les filtres sont déterminés
- Destination. Choisir une source ou un tableau de bord spécifique l’ancre à son ID. Une cible Template est générée à partir de la ligne cliquée, puis mise en correspondance par son nom avec les sources ou tableaux de bord de votre équipe. Le nom doit être unique pour que la résolution fonctionne : si deux sources ou deux tableaux de bord partagent le nom généré, le lien ne peut pas être résolu vers l’un d’eux. Un nom généré vide, ou un nom sans correspondance, empêche également la résolution.
- Filtres. Chaque modèle de filtre est généré à partir de la ligne et devient une condition
expression IN (value)dans la destination. Une actionSearchouvre/searchdans le contexte de la source choisie ; une actionDashboardouvre ce tableau de bord. L’intervalle de temps de la ligne cliquée est conservé dans les deux cas.
Les cibles de tableau de bord nécessitent un filtre correspondant déclaréUn filtre transmis à un tableau de bord ne prend effet que si le tableau de bord de destination déclare un custom filter de premier niveau dont l’expression correspond à l’Expression du filtre. Si aucun filtre déclaré ne correspond, cette valeur est ignorée au moment du clic et la destination s’ouvre sans filtre pour cette expression. C’est pourquoi le mode tableau de bord préremplit les filtres déclarés de la destination : si l’expression correspond, la liste déroulante de destination se remplit automatiquement avec la valeur de la ligne cliquée.
Validation et limites
- Uniquement pour les tuiles de tableau. Le bouton Row Click Action apparaît uniquement sur les tuiles de tableau, qu’il s’agisse du tableau du chart builder ou d’un tableau basé sur SQL. Les autres types de tuiles n’ont pas d’action au clic sur une ligne.
- Les cibles Search doivent être des sources de logs ou de traces. Les sources de métriques et de session ne sont pas proposées, car elles ne peuvent pas être affichées dans la page Search.
- Les noms de Template doivent être uniques. Une cible Template est résolue par son nom ; deux sources ou deux tableaux de bord portant le même nom ne peuvent donc pas être utilisées comme cible Template.
- Les cibles de tableau de bord nécessitent un filtre déclaré correspondant pour qu’une valeur transmise soit prise en compte (voir la note ci-dessus).
- Les colonnes de group-by sur une expression nécessitent un alias. Un group-by sur une expression, comme un attribut de map
SpanAttributes['http.route'], produit une colonne de résultat dont le nom est l’expression brute, ce qui est peu pratique à référencer dans un Template. Donnez un alias à la colonne dans le chart builder : ajoutezAS <alias>après l’expression dans le champ Group By (par exempleSpanAttributes['http.route'] AS Route), puis référencez{{Route}}dans le Template. Les séries agrégées prennent de la même façon un alias à partir de leur champ Alias. En revanche, un group-by sur une colonne simple commeServiceNamea déjà un nom clair et n’a pas besoin d’alias.