Skip to main content

n8n Observability Dashboards

Grafana provides dashboards for monitoring n8n in Common Hosted Workflow. They are provisioned automatically — no manual import is needed.

DashboardAudienceScope
n8n User OverviewWorkflow authorsHow are my workflows performing?
n8n ExecutionsWorkflow authors, team leadsAre my workflows running and how fast?
n8n HealthPlatform / ops teamIs the n8n process itself healthy?
n8n TracesWorkflow authors, platformWhat happened inside a single run?
n8n LogsPlatform / ops teamWhat failed, who changed what, audit trail?
n8n System LogsPlatform / ops teamWhat did the n8n pods print to stdout/stderr?

Component Overview​

┌─────────────────────────────────────────────────────────────────┐
│ Grafana (UI) │
│ n8n Executions │ n8n Traces │ n8n Logs │
│ n8n Health │ │ │
└──────┬──────────────────┬──────────────────┬────────────────────┘
│ PromQL │ TraceQL │ LogQL
▼ ▼ ▼
Mimir Tempo Loki
(metrics) (traces) (logs)
▲ ▲ ▲
└──────────────────┴──────────────────┘
│
Alloy
(collection agent)
│
┌───────────┴───────────┐
│ │
scrapes /metrics receives OTLP + syslog
(pull) (push)
│ │
n8n pod n8n pod

Accessing Grafana​

EnvironmentURLAuth
Local sandboxhttp://localhost:3000SSO via Keycloak
Dev / prodGrafana route configured in Helm valuesSSO via Keycloak

n8n User Overview is in the n8n folder in Grafana's left sidebar. All other dashboards (n8n Executions, n8n Health, n8n Traces, n8n Logs, n8n System Logs) are in the n8n-admin folder.


n8n User Overview​

A personal overview for workflow authors. Shows KPI stats, execution trends, duration percentiles, a live event stream, and a trace table — all scoped to the logged-in user's accessible workflows.

Filters​

Workflow — filters all panels to a specific workflow. Populated from the n8n projects API and scoped to the workflows the logged-in user can access. Defaults to All.

KPI panels​

PanelWhat it shows
Total ExecutionsWorkflows started in the selected time range
Successful ExecutionsExecutions that completed successfully — green background
Failed ExecutionsExecutions that failed — background turns red when non-zero
Cancelled ExecutionsExecutions manually stopped — background turns orange when non-zero
Success RateSuccessful executions as a percentage of terminal executions (success + failed + cancelled). Green at ≥ 95 %, orange at ≥ 80 %, red below
Avg DurationMean execution duration across all selected workflows and the selected time range
PanelWhat it shows
Executions Over TimeWorkflow lifecycle events per second (started, success, failed, cancelled) over time. A persistent gap between the started line and the completion lines indicates stuck in-flight executions.

Performance​

PanelWhat it shows
Execution Duration — p50 / p90 / p99Duration percentiles over time. A widening gap between p99 and p50 indicates slow outlier executions
Per-Workflow BreakdownTable of total runs, successes, failures, and mean duration per workflow over the selected time range

Live Events​

PanelWhat it shows
Live Workflow Event StreamRaw n8n log streaming events in real time, filtered by project and workflow. Only populated where log streaming is enabled. Shows blank otherwise.

Traces​

PanelWhat it shows
Workflow ExecutionsOne row per workflow execution span sourced from Tempo. Columns: Trace ID, Start time, Retry, Mode, Status, Project, Workflow, Duration. Click the Trace ID to open the span waterfall in Explore.

n8n Executions​

Tracks workflow execution activity — use it to verify workflows are running, spot failures, and understand duration trends.

Filters​

Execution Type — filters all panels to a specific trigger type: All, Webhook, Scheduled, or Manual.

Workflow — filters all panels to a specific workflow by name. Defaults to All.

KPI panels​

PanelWhat it shows
Total ExecutionsNumber of executions completed in the selected time range
SuccessfulCount of executions that completed successfully
FailedCount of executions that failed — background turns red when non-zero
Success RateSuccessful executions as a percentage of total
Executions / minAverage throughput over the selected time range
Avg Processing TimeMean n8n internal processing time per execution — does not include time spent waiting on external APIs or HTTP calls

Charts​

PanelWhat it shows
Executions Over TimeExecution rate over time, split by status — use to correlate failure spikes with deploys or external events
Executions by StatusTotal successes vs failures for the selected time range as a bar chart
Execution Stats — Breakdown by Type & StatusTable of execution counts by workflow, trigger type, and status
Execution Duration — p50 / p90 / p99Distribution of n8n processing times — p50 is the median, p99 is the slowest 1%. A wide gap between p50 and p99 means occasional slow outliers
Average Execution Duration Over TimeRolling mean processing time over time — complements the percentile chart

n8n Health​

Monitors the n8n process itself. Use this to catch memory leaks, CPU saturation, and event loop pressure before they affect workflow execution.

Instance overview (top row)​

PanelWhat it shows
Active WorkflowsWorkflows currently active with triggers registered — an unexpected drop to 0 means workflows were deactivated or failed to re-register after a restart
Total WorkflowsTotal number of workflows in n8n regardless of active state
All-time ExecutionsCumulative count of production (non-manual) executions since n8n started
All-time Manual ExecutionsCumulative count of manual test executions since n8n started

Process health KPIs​

PanelWhat it shows
Heap UsedV8 JavaScript memory currently in use — a value that rises steadily without recovering signals a memory leak
Heap TotalTotal V8 heap capacity allocated — should always be comfortably above Heap Used
Resident Memory (RSS)Total RAM consumed by the n8n process as seen by the OS, including heap and native buffers
Event Loop Lag (p99)How long callbacks wait before n8n processes them — sustained lag above 50 ms means n8n cannot accept new work fast enough
CPU UsageCPU consumed by the n8n process — sustained usage above 80 % correlates with rising event loop lag
Open File DescriptorsCount of open sockets and file handles — a steadily increasing value without rising throughput signals a handle leak

Process health charts​

PanelWhat it shows
Heap Memory Over TimeHeap Used and Heap Total overlaid — a narrowing gap that never recovers is the clearest indicator of a heap leak
Event Loop Lag Over Timep50 / p90 / p99 lag over time — all three rising together indicates sustained load; only p99 rising indicates occasional slow callbacks
CPU Usage Over TimeUser CPU (JavaScript execution) and System CPU (OS I/O) as separate lines — high System CPU with normal User CPU suggests I/O pressure
Garbage Collection Duration Over TimeTime spent in GC per second and GC cycle frequency — long GC pauses appear as spikes in Event Loop Lag

SSO panels​

PanelWhat it shows
Token ExchangesCumulative SSO token exchange requests — spikes with no user traffic increase can indicate an auth loop
JIT Provisioned UsersUsers auto-created on first SSO login — increments each time a new user logs in via Keycloak for the first time
Identities LinkedSSO identity links created — increments when an existing local account is connected to an SSO provider for the first time
Token Exchange Rate Over TimeRolling rate of token exchange requests — a rate that doesn't drop during off-peak hours suggests a client stuck in a refresh loop

Queue Health​

These panels show data in dev and production where n8n runs in queue mode with Redis and separate worker replicas. They will show no data in the local sandbox (docker-compose), which runs in single-process mode.

PanelWhat it shows
Waiting JobsJobs queued in Redis waiting for a free worker — a rising value means workers can't keep up and more replicas are needed
Active JobsJobs currently being executed across all worker pods
Failed JobsJobs that exhausted all retries — should always be 0
Delayed JobsJobs scheduled for future execution, such as retry backoff or scheduled triggers — expected to be non-zero if you have scheduled workflows
Queue Depth Over TimeWaiting, active, and failed job counts over time — Waiting rising while Active is flat at capacity means workers are saturated

Cache​

n8n caches workflow definitions and credentials in memory to avoid repeated database lookups.

PanelWhat it shows
Cache Hit RatioFraction of cache lookups served from memory vs going to the database — a low ratio means n8n is querying the DB more than expected
Cache Hits & Misses Over TimeHit and miss rates per second — a sustained rise in misses without a matching rise in hits indicates cache pressure


n8n Traces​

Shows individual workflow executions as distributed traces. Use it to inspect the internal span waterfall for a single run — which nodes executed, in what order, and how long each took.

Linked from the Executions dashboard: clicking a workflow name in the "Execution Stats — Breakdown by Type & Status" table opens the Traces dashboard pre-filtered to that workflow's ID.

Filters​

Workflow — workflow ID filter (default .* = all workflows). Populated automatically when navigating from the Executions dashboard. Can be manually replaced with a specific workflow ID to narrow results.

Status — All, Success, or Failed. Maps to the OpenTelemetry span status: ok for successful executions, error for failed ones.

Panel​

PanelWhat it shows
Workflow ExecutionsOne row per workflow execution span. Columns: Trace ID, Start time, Retry, Mode, n8n Status, Project, Workflow, Duration. Click the Trace ID to open the full span waterfall in Explore.

Trace structure​

Span names are enriched by Alloy before storage — the workflow or node name is appended to make the waterfall readable:

Span name (stored in Tempo)Description
workflow.execute: <workflow name>Root span for the entire execution. Status is ok or error based on outcome.
node.execute: <node name>Child span for each node that ran.

Note: Because span names are enriched, exact-match TraceQL queries like {name = "workflow.execute"} return zero results. Use a prefix regex instead: {name =~ "workflow.execute.*"}.

Sub-workflows run inside the same trace as the parent — they do not create a separate trace. A sub-workflow's workflow.execute span is a child of the Execute Workflow node span in the parent, so both rows in the table will share the same Trace ID.

Wait nodes cause a different behaviour: n8n creates two separate traces linked via a SpanLink — one for the execution up to the Wait, one for the resume after the wait completes. Both are visible in the trace list as distinct rows.

Key span attributes​

AttributeValue
n8n.workflow.nameWorkflow name
n8n.workflow.idn8n internal workflow ID
n8n.execution.idExecution ID (matches n8n UI and logs)
n8n.execution.modeTrigger type: manual, webhook, trigger, retry
n8n.execution.statussuccess, error, or waiting
n8n.execution.error_typeError class name when status is error (e.g. NodeOperationError)
n8n.execution.is_retrytrue when the execution is a manual retry of a previous failure
n8n.execution.retry_ofExecution ID of the original failed run, when is_retry is true
n8n.project.idn8n project ID — set automatically when the workflow belongs to a named project
n8n.node.nameDisplay name of the node (node spans only)
n8n.node.typeNode type identifier, e.g. n8n-nodes-base.httpRequest

Project column​

The Project column in the Workflow Executions table is populated from a custom span attribute set at the project level in n8n. It shows — for workflows that are not in a project or whose project has no custom attributes configured.

To populate the Project column:

  1. In n8n, open the project the workflow belongs to.
  2. Go to Project settings → Custom Span Attributes.
  3. Add an attribute with key name and the project's display name as the value (e.g. Analytics).
  4. Save.

All subsequent executions of workflows in that project will include n8n.project.custom.name in their traces.

Convention: n8n prefixes project custom attributes with n8n.project.custom. — a key of name becomes the span attribute n8n.project.custom.name. Use name (not project.name or n8n.project.name) to match what the dashboard queries.

Executions that ran before the attribute was configured will continue to show —.


n8n Logs​

Provides an audit trail and failure analysis based on n8n log streaming events. Use it to investigate workflow failures, trace configuration changes, monitor user activity, and diagnose queue issues.

Linked from the Executions dashboard: clicking a workflow in the failure panels opens the Logs dashboard pre-filtered to that workflow.

Default time range: last 15 minutes — widen the time picker for historical investigation.

Filters​

FilterBehaviour
WorkflowScopes all execution and audit panels to a single workflow by name. Defaults to All.
ProjectMulti-select. Scopes execution panels to one or more projects.
EventMulti-select. Filters raw logs to specific event types (e.g. n8n.workflow.failed).
ModeMulti-select. Filters execution panels by trigger mode: manual, webhook, trigger.

Live Health (top row)​

PanelWhat it shows
Failed ExecutionsCount of failed executions in the time range. First thing to check when a user reports a broken workflow.
In-Flight ExecutionsExecutions started minus executions completed. A persistently positive value means workflows started but never finished — check for stuck or very long-running runs.
Stalled JobsQueue jobs where the worker became unresponsive mid-execution. Any non-zero value warrants investigation. Queue mode only.

Failures​

PanelWhat it shows
Failed Executions by Project & WorkflowTable of failure counts grouped by project, workflow, and the last node executed before failure to help identify where workflows commonly fail. Click any row to filter the entire dashboard to that workflow.
Recent Workflow FailuresRaw log lines for each failure — expand a line to see the full error message, execution ID, and node context.
Top Error MessagesMost common failure error messages grouped by workflow. The same message appearing across multiple workflows points to a shared dependency (e.g. an external API down) rather than isolated bugs.

Execution Overview​

PanelWhat it shows
Workflow Events Over TimeAll four lifecycle events (started, success, failed, cancelled) on one chart. Started events exceeding completions indicate stuck executions.

Cancellations​

PanelWhat it shows
Cancelled ExecutionsCount of manually stopped executions in the time range.
Cancellation RateCancelled executions as a percentage of all completed executions. Elevated values usually indicate manual cancellation or workflows configured to stop previous executions when a new execution starts.
Failure RateFailed executions as a percentage of all completed executions.
Cancellations Over TimeCount of cancellation events over time — spikes often correlate with a specific workflow being triggered repeatedly and stopped manually.
Recent Cancelled ExecutionsRaw log lines for each cancellation — expand to see which workflow was stopped and the trigger mode.

Audit & Security​

PanelWhat it shows
Audit EventsCount of workflow configuration and user events in the time range. When a workflow is selected, shows only events for that workflow.
Failed Login AttemptsCount of failed login attempts — repeated failures may indicate a credential attack or a misconfigured SSO client.
Workflow Configuration ChangesBar chart of workflow CRUD events over time (created, updated, activated, deactivated, archived, published, unpublished). Use to correlate execution behaviour changes with config edits.
User ActivityBar chart of user login success/failure, signup and account deletions events.
Audit LogRaw audit event log lines. Expand each line to see who made the change, which workflow was affected.

Performance & Debug​

PanelWhat it shows
Most Active NodesTable of node execution counts by node name, node type, and workflow. High counts on a single node reveal which external services are called most — Helps identify which integrations are used most frequently.
Raw LogsFull log stream filtered by all active dropdowns. Use this for ad-hoc investigation when the structured panels above don't show enough detail.

Queue & Worker (queue mode only)​

These panels show data only when n8n runs in queue mode. They will show no data in the local sandbox.

PanelWhat it shows
Queue Job EventsLifecycle events for each queue job: enqueued, dequeued, completed, failed, stalled. A gap between enqueued and dequeued indicates queue lag — insufficient worker capacity.
Worker EventsWorker process start and stop events. A stopped event not followed by a started event means a worker went down and did not recover.

Cross-dashboard navigation​

  • The n8n Executions link in the top-right navigates to the Executions dashboard, carrying the current time range and workflow filter.
  • Clicking a row in Failed Executions by Project & Workflow filters the entire Logs dashboard to that workflow.
  • Navigating from the Executions dashboard to Logs (via data links on failure panels) automatically sets the Workflow filter.

n8n System Logs​

Shows raw pod stdout/stderr from all n8n components — main, worker, webhook, and runner. Use this for infrastructure-level debugging: process crashes, startup errors, runner lifecycle events, and anything the application prints outside of structured log streaming.

Availability: This dashboard requires systemLogs.enabled: true in Helm values and is only available in OpenShift environments. It will show no data in the local docker-compose sandbox, which has no Kubernetes API for Alloy to read from.

Datasource: This dashboard uses the Loki System Logs datasource (uid: loki-system), which queries the system-logs Loki tenant. If you write custom LogQL queries in Grafana Explore for pod logs, select Loki System Logs — the default Loki datasource queries the streaming tenant and will return no pod log data.

Default time range: last 1 hour — widen the time picker for historical investigation.

Filters​

FilterBehaviour
ComponentFilters all panels to a specific n8n container: main, worker, webhook, or runner. Defaults to All.
PodFilters all panels to a specific pod. Useful when debugging a specific crashed or misbehaving pod.

KPI panels​

PanelWhat it shows
Total Log LinesCount of all log lines from selected pods in the time range. Turns red on zero — a pod that stops logging has likely crashed or been evicted.
Error LinesLines matching error keywords (error, exception, fatal, panic). Green at zero, orange at 1+, red at 10+.
Warn LinesLines matching warn keywords. Warnings often precede errors — a spike here before an error spike is a useful leading indicator.
Error RateError lines as a percentage of total output. A persistently high ratio indicates a component in a bad state.

Charts​

PanelWhat it shows
Log Volume by ComponentLog line throughput per container over time. A gap in a line means that container produced no output — abnormal for main/worker.
Errors & Warnings Over TimeError and warn line counts over time, colour-coded red and orange by severity. Correlate spikes with the workflow execution timeline in the Executions dashboard.
Error LinesRaw log lines matching error keywords, most recent first. Expand each line for full JSON context and pod label.
All System LogsFull stdout/stderr stream for selected components, pretty-printed as JSON.

Cross-dashboard navigation​

  • The n8n Logs link navigates to the log streaming dashboard (audit trail and workflow failures), carrying the current time range.
  • The n8n Executions link navigates to the executions dashboard, carrying the current time range.

Grafana Alerting​

Grafana evaluates provisioned alert rules and sends email notifications to the responsible team. Alert rules, contact points, notification policies, and email templates are managed in Git and provisioned by Helm; they are locked against editing in the Grafana UI.

Team routing​

Every alert rule includes a team label. Grafana routes notifications using that label:

Team labelRecipient contact pointAlert scope
platformn8n-ops-emailn8n platform and infrastructure health
workflowsn8n-workflows-emailWorkflow execution failures

The recipient addresses are supplied to Grafana through the deployment secret rather than stored in Git. Notifications are grouped by Grafana folder and alert name, wait 30 seconds before the first notification, and repeat every four hours while an alert remains firing.

System-log alerts​

The following rules query the n8n-system-logs Loki stream via the Loki System Logs datasource (loki-system tenant) and route to the platform team:

AlertConditionEvaluation
System Error DetectedAn unstructured log line contains error, exception, fatal, or panic; workflow execution events are excluded.More than zero errors for one minute
System Structured Error DetectedA non-workflow n8n component emits a structured error-level message.More than zero errors for one minute
System Warnings ElevatedMore than 10 non-execution warning lines are emitted.Sustained for five minutes

System-error emails include recent matching error messages and a link to the n8n System Logs dashboard around the alert time. Workflow alerts instead link to the n8n Executions dashboard and can include failed-workflow counts.

Adding a team route​

To send a class of alerts to another team, add an email contact point, supply its recipient address through the deployment secret, add a matching team route in the notification policy, and label the relevant alert rules with that team value. Keep the contact point, policy, and rule label in sync: an unmatched team label falls back to Grafana's default receiver.


How metrics, traces, and logs reach Grafana​

n8n /metrics → Alloy (scrapes every 30 s) → Mimir → Grafana (datasource "Mimir")
n8n OTLP → Alloy (OTLP receiver :4318) → Tempo → Grafana (datasource "Tempo")
n8n log streaming → Alloy (syslog TCP :5514) → Loki tenant: streaming → Grafana (datasource "Loki")
n8n pod stdout/stderr → Alloy (loki.source.kubernetes) → Loki tenant: system-logs → Grafana (datasource "Loki System Logs")

Loki runs with auth_enabled: true and uses two logical tenants for Grafana datasource separation — streaming for workflow events, system-logs for pod output. Alloy sets the X-Scope-OrgID header on every write. Each tenant's data lands under a separate S3 prefix in SeaweedFS. Retention for the two log types is set independently via Loki's retention_stream config (not prefix-scoped lifecycle rules).

When writing custom LogQL queries in Grafana Explore, select the matching datasource for the log type you want to query: Loki for workflow events and audit logs, Loki System Logs for pod stdout/stderr.


Data retention​

Retention is enforced natively by each component's built-in compactor, which deletes old data from SeaweedFS via S3 DeleteObject calls.

SignalDevTestProd
Streaming logs (Loki)30 days30 days6 years
System logs (Loki)30 days30 days6 months
Traces (Tempo)30 days30 days6 years
Metrics (Mimir)30 days30 days6 years

Streaming logs carry the workflow audit trail and are retained for 6 years in production. System logs (pod stdout/stderr) are operational and retained for 6 months. The two log types expire at different rates using Loki's retention_stream feature — no multi-tenancy or S3 prefix scoping required for retention.

Changing a retention period​

Edit the environment's Helm values file and redeploy:

FileWhat to edit
helm/main/values-c89a45-dev-gold.yamltempo.tempo.retention, mimir.retention.blockRetention
helm/main/values-c89a45-test-gold.yamlsame as dev
helm/main/values-c89a45-prod-gold.yamlloki.loki.limits_config.retention_period, loki.loki.limits_config.retention_stream[].period, tempo.tempo.retention, mimir.retention.blockRetention
helm/main/values.yamlloki.loki.limits_config.retention_period (base default for dev/test)

After the Helm deploy, the compactors pick up the new period on their next compaction cycle — no restart required.


Tenant isolation​

Dashboard variables populated from the n8n projects API restrict each Grafana user's view to the projects they belong to. The project_id and workflow_id dropdowns are populated with only the projects the authenticated user can access, and all panel queries are parameterized by those variables.

How it works​

Grafana dashboard
↓
Infinity datasource → /rest/custom/v1/obs/projects (on n8n)
↓
n8n DB (projects synced from CSTAR at every user login)

When the project_id variable loads (on dashboard open or refresh), Grafana's Infinity datasource calls the n8n projects API with the user's SSO Bearer token forwarded via oauthPassThru. For allowed requests, the API:

  1. Verifies the X-Grafana-Secret header against GRAFANA_PROJECTS_SECRET.
  2. Verifies the Bearer token against the Keycloak JWKS endpoint and extracts the user's email.
  3. Calls loadUserContext(email) to resolve the user's role and accessible project list directly from the n8n database. No external API calls are made at request time — CSTAR tenant memberships are synced into n8n project records at every user login by TenantProjectSyncService.
  4. Returns { isAdmin, projects: [{ id, name }] }.

The workflow_id variable calls the same API's /workflows endpoint filtered by the selected project_id. This is re-fetched every time the user changes the project dropdown.

Authentication​

Two checks are applied on every request to the projects API:

CheckHeaderPurpose
Grafana identityX-Grafana-SecretConfirms the request is from a configured Grafana instance. Validated against GRAFANA_PROJECTS_SECRET in external-hooks.
User identityAuthorization: Bearer <token>Identifies the calling user. Forwarded by the Infinity datasource via oauthPassThru.

A missing, invalid, or expired token returns 401. An unrecoverable error returns 503.

Admin users​

Users whose n8n account has the global:owner or global:admin role (set via SSO role mapping at login) are treated as admins:

  • The API returns all team projects from the n8n database.
  • The admin's own personal project is appended to the list.
  • isAdmin: true is returned alongside the project list; dashboards use this to unlock admin-only panels.

Project membership and freshness​

Project membership is resolved from the n8n database, which is kept in sync with CSTAR tenant memberships by TenantProjectSyncService. This service runs at every user login — membership changes in CSTAR take effect in Grafana the next time the user logs in to n8n. There is no additional caching layer on the projects API: all queries are lightweight local DB reads.

Label schema​

Loki log events use these labels as the filtering anchors for dashboard variables:

LabelValueSet by
project_idn8n project UUIDn8n log-streaming hook (via Alloy)
workflow_idn8n workflow IDn8n log-streaming hook (via Alloy)
project_nameHuman-readable project namen8n log-streaming hook only

The Project filter in the n8n Logs dashboard queries against the project_id label. The Workflow filter queries against workflow_id.

What users can see (dashboards)​

User typeProject dropdownData
Admin (global:admin / global:owner)All team projects + personal projectData for all projects
User with one or more team projectsTheir team projects + personal projectData for their projects only
User with a personal project onlyPersonal projectData for their personal project only
User with no projectsEmptyNo data

Known limitations​

Avg Processing Time ≠ wall-clock execution time The duration panels measure n8n's internal node execution time only. Time spent waiting on external HTTP calls, databases, or APIs is not included. The n8n UI's "Succeeded in Xs" figure reflects total wall-clock time and will typically be higher.

Counters reset on restart SSO counters are in-memory and reset to zero when n8n restarts. Time-series charts preserve history in Mimir; only the stat panels reset.

Metrics scrape interval is 30 seconds Short-lived executions that complete between scrapes contribute to histogram buckets but may not appear as a visible spike in rate-based time series charts over very short time windows.

Log metric panels lag raw log panels by 10–30 seconds Stat and table panels on the Logs dashboard (Failed Executions count, Top Error Messages, etc.) use aggregated Loki metric queries that go through Loki's result cache. Raw log panels (Recent Failures, Audit Log, Raw Logs) query the store directly and update immediately. The gap closes on the next dashboard refresh cycle.

New workflows don't appear in the n8n Logs Workflow dropdown immediately The Workflow filter in n8n Logs is populated from Loki label values. A newly created workflow only appears in the dropdown after it has generated at least one log streaming event (e.g. a test run). Click the refresh icon next to the dropdown to force a reload. The Workflow filters in n8n User Overview and n8n Executions are populated from the n8n projects API and reflect new workflows as soon as they exist in n8n.

User login events are not filterable by workflow n8n.audit.user.* events carry no workflow context. They appear only when the Workflow filter is set to All. Filtering to a specific workflow will hide all login and signup events.

Queue and worker panels show no data in single-process mode The Queue Job Events and Worker Events panels only receive data when n8n runs in queue mode. In the local docker-compose sandbox these panels will always be empty.

anonymizeAuditMessages is disabled Audit log events include full user details to support accountability and investigation. Access to the Logs dashboard should be restricted to authorized platform and ops team members.

System Logs Pod filter only lists pods active in the selected time range The Pod variable is populated from Loki label values within the current time window. Pods that crashed and produced no logs in the selected range will not appear in the dropdown — widen the time range if you need to find a pod that died before the current window.

System Logs not available in the local sandbox The docker-compose environment has no Kubernetes API. loki.source.kubernetes requires OpenShift — the dashboard will be empty when running locally.