elastic / elastic/integrations
[nginx_otel] Dashboard filters accumulate across tab navigation, breaking Request Health
- Dominant language
- Handlebars
- Stars
- 333
- Forks
- 647
- Avg merge
- 2d 17h
- Merged PRs (30d)
- 225
Description
Navigating the tab bar between the three `[Nginx OTel]` dashboards leaves them broken, because dataset scope is enforced via a removable app-state filter that the Links panel carries over and never clears.
### Repro
Open **Request Health** (works) → **Server Internals** (works) → back to **Request Health** → the log panels show no data.
### Cause
1. Each dashboard scopes data with a dashboard-level `data_stream.dataset` filter pill (not inside the Lens queries):
- **Request Health**: `∈ {nginx.access.otel, nginx.error.otel, nginxreceiver.otel}` (bool-should)
- **Server Internals**: `= nginxreceiver.otel` (match_phrase)
- **Traffic & Capacity**: `∈ {nginx.access.otel, nginxreceiver.otel}` (bool-should)
2. The tab bar is a Links panel; its dashboard links use the default `useCurrentFilters: true`, so navigating carries the current filter pills to the destination.
3. Source and destination filters share `meta.key = data_stream.dataset` but differ in shape (bool-should vs match_phrase), so Kibana stacks them instead of deduping → they get AND-ed together.
Returning to Request Health leaves `= nginxreceiver.otel` **AND** `∈ {access, error, nginxreceiver}`, whose intersection is `nginxreceiver.otel` only. Request Health's panels query the `nginx.access` / `nginx.error` log datasets, so they now match nothing. Server Internals masks the bug because its panels *are* the nginxreceiver metrics.
Confirmed against `packages/nginx_otel/kibana/dashboard/*.json` on `main`.
### Suggested fix
- Scope each Lens layer by dataset in its own query, rather than relying on a removable app-state filter; and/or
- Set `useCurrentFilters: false` on the Links panel's dashboard links so navigation doesn't carry filters over.
Contributor guide
Research direction
Inspect the dashboard JSON files under packages/nginx_otel/kibana/dashboard/*.json, starting with the Links panel definitions and their dashboard links. Reproduce the Request Health → Server Internals → Request Health navigation and inspect the resulting filters. Done means navigation no longer combines incompatible data_stream.dataset filters and Request Health log panels still show data.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- nginx
- Domain
- observability-sre
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 64/100