diff --git a/k8s/grafana/dashboards/obs-distributed-traces.json b/k8s/grafana/dashboards/obs-distributed-traces.json index 0b0e739..4c0b5e6 100644 --- a/k8s/grafana/dashboards/obs-distributed-traces.json +++ b/k8s/grafana/dashboards/obs-distributed-traces.json @@ -170,7 +170,7 @@ { "type": "traces", "title": "Trace $traceId", - "description": "Grafana's own trace view: the full waterfall, every span nested in order, across LibreChat, Keycloak, the Kong gateways and the backend — no split between HTTP hops and plugins, they are one tree.\n\nClick a span to expand its attributes: method, route, status, durations, and whatever the instrumentation attached. From a span, 'Logs for this span' jumps to Loki.", + "description": "Grafana's own trace view: every span nested in order across LibreChat, Keycloak, the Kong gateways and the backend. Click a span to expand its attributes; from a span, 'Logs for this span' jumps to Loki.\n\nA default span filter hides the framework plumbing — Express middleware, mongoose/mongodb calls, kong.dns, raw SQL — which is most of a 212-span trace and none of the flow. Clear the filter in the panel, or toggle 'Show all spans', to get them back.\n\nThis is a DISPLAY filter: those spans are still produced and still stored in Tempo.", "datasource": { "type": "tempo", "uid": "tempo" @@ -192,7 +192,26 @@ "query": "$traceId", "limit": 300 } - ] + ], + "options": { + "spanFilters": { + "spanName": "middleware - .*|mongoose\\..*|mongodb\\..*|kong\\.dns|SELECT|INSERT|UPDATE|DELETE|router - .*", + "spanNameOperator": "!~", + "serviceName": "", + "serviceNameOperator": "=", + "from": "", + "to": "", + "tags": [ + { + "id": "1", + "operator": "=" + } + ], + "matchesOnly": true, + "criticalPathOnly": false, + "query": "" + } + } }, { "type": "row",