elastic / elastic/integrations

[nginx_otel] Dashboard filters accumulate across tab navigation, breaking Request Health

Open
#20,089 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.