Skip to content
DevOps AI ToolKit
Newsletter
All guides
AI for Filebeat By James Joyner IV · · 8 min read

Filebeat Error: 'pipeline with id does not exist' — Cause, Fix, and Troubleshooting Guide

Quick answer

Fix Filebeat 'pipeline with id [...] does not exist': install the referenced ingest pipeline or fix the output pipeline setting so bulk writes succeed.

  • #filebeat
  • #logging
  • #troubleshooting
  • #errors
Free toolkit

Fixing errors like this? Get 500 free DevOps AI prompts

500 copy-paste AI prompts for the stack you actually run — one PDF, free.

Overview

When Filebeat routes events through an Elasticsearch ingest pipeline — via a module, output.elasticsearch.pipeline, or a pipeline on the input — Elasticsearch must have that pipeline installed. If the named pipeline is absent, it rejects the write:

Failed to perform any bulk index operations: 400 Bad Request: {"error":{"type":"illegal_argument_exception","reason":"pipeline with id [filebeat-8.13.0-nginx-access-pipeline] does not exist"}}

The document reached Elasticsearch but named a pipeline the cluster does not know. This happens when module pipelines were never loaded, when filebeat setup --pipelines ran against a different cluster, or when a manually configured pipeline: name is misspelled or was deleted. The events are non-indexable until the pipeline exists.

Symptoms

  • pipeline with id [...] does not exist in a 400 Bad Request bulk error.
  • Only datasets that use a pipeline fail; plain inputs still index.
  • Appeared after enabling a module without re-running setup, or after a cluster rebuild.
  • GET _ingest/pipeline/<id> returns 404 for the named pipeline.

Common Root Causes

  • Pipelines never loadedfilebeat setup --pipelines was skipped.
  • Wrong cluster — setup ran against a different ES than the output targets.
  • Module enabled after setup — its pipeline was never installed.
  • Misspelled/renamed pipeline: in the output or input config.
  • Pipeline deleted during a cluster reset or cleanup job.

How to diagnose

Check whether the named pipeline exists on the target cluster:

curl -sk 'https://es01:9200/_ingest/pipeline/filebeat-8.13.0-nginx-access-pipeline?pretty' \
  -u elastic:$ES_PASS
curl -sk 'https://es01:9200/_ingest/pipeline?pretty' -u elastic:$ES_PASS | grep filebeat

See what pipeline Filebeat references and which modules are enabled:

grep -i 'pipeline' /etc/filebeat/filebeat.yml
filebeat modules list

Fixes

Load the module/ingest pipelines against the cluster the output writes to:

filebeat setup --pipelines -e \
  -E 'output.elasticsearch.hosts=["https://es01:9200"]' \
  -E 'output.elasticsearch.username=elastic' \
  -E 'output.elasticsearch.password=${ES_PASS}'

For a specific module, load only its pipelines:

filebeat setup --pipelines --modules nginx
systemctl restart filebeat

If you set a custom pipeline, make sure the name matches an installed pipeline exactly:

output.elasticsearch:
  hosts: ["https://es01:9200"]
  pipeline: "my-custom-pipeline"   # must exist: PUT _ingest/pipeline/my-custom-pipeline

What to watch out for

  • Pipelines are cluster-scoped — re-run --pipelines after any cluster rebuild.
  • Enabling a module later does not auto-load its pipeline; re-run setup.
  • The pipeline name is version-stamped (e.g. filebeat-8.13.0-...); an upgrade changes it.
  • A misspelled custom pipeline: produces the same 404 as a missing one.
Free download · 368-page PDF

Get 500 Battle-Tested DevOps AI Prompts — Free

500 battle-tested, copy-paste AI prompts engineered by a senior systems engineer — every one with fill-in placeholders and safety/back-out notes. Drop your email and it's yours.

  • 500 prompts: Linux · Kubernetes · Terraform · OpenStack · GitLab · Docker · Monitoring · Incident Response
  • Instant PDF download — yours free, forever
  • Plus one practical AI-workflow email a week (no spam)

Single opt-in · unsubscribe anytime · no spam.