单节点启动多个filebeat注意点

多个 Filebeat 实例同时使用默认 path.data=/usr/share/filebeat/data,产生同一个 filebeat.lock 文件,导致进程互斥锁冲突,第二个进程无法启动。


1.锁文件冲突说明

Filebeat 会在 path.data 下创建锁文件:

/usr/share/filebeat/data/filebeat.lock

用于防止多个实例共享注册表和状态目录。当你启动第二个进程时,它检测到该锁被占用,因此报错退出。


2. 为每个实例单独指定 path.data

需要在每个实例的 filebeat.yml 里明确指定独立的数据目录:

2.1示例创建目录:

mkdir -p /var/lib/filebeat-dev/
mkdir -p /var/lib/filebeat-prod/

配置示例(dev 实例):

path.data: /var/lib/filebeat-dev/
logging.files:
  path: /var/log/filebeat-dev/

配置示例(prod 实例):

path.data: /var/lib/filebeat-prod/
logging.files:
  path: /var/log/filebeat-prod/

2.2启动命令

/usr/bin/filebeat -c /etc/filebeat-dev/filebeat.yml -e &
/usr/bin/filebeat -c /etc/filebeat-prod/filebeat.yml -e &

如需前台调试:

/usr/bin/filebeat -c filebeat.yml -e -d "*"

3. 多实例隔离架构图

flowchart LR
    subgraph Dev
    A[Filebeat Dev] -->|独立 path.data| B[(Registry Dev)]
    end
    subgraph Prod
    C[Filebeat Prod] -->|独立 path.data| D[(Registry Prod)]
    end

4. 结论

只要配置 path.data 为独立目录,即可同时运行多个 Filebeat 进程
这不仅避免锁竞争,还做到日志采集逻辑互不干扰,便于调试、灰度对比。