未使用Docker-compose运行文件节拍:设置'filebeat.prospectors'已被删除

0mkxixxg  于 2023-03-01  发布在  Docker
关注(0)|答案(1)|浏览(112)

我尝试使用docker-compose启动filebeat(我打算稍后添加其他服务),但每次执行docker-compose.yml文件时,filebeat服务总是以以下错误结束:

filebeat_1  | 2019-08-01T14:01:02.750Z  ERROR   instance/beat.go:877    Exiting: 1 error: setting 'filebeat.prospectors' has been removed
filebeat_1  | Exiting: 1 error: setting 'filebeat.prospectors' has been removed

我通过访问Docker-compose日志发现了该错误。
我的docker-compose文件现在已经尽可能的简单了,它只需要调用一个filebeatDockerfile,然后立即启动服务。
filebeat的Dockerfile旁边,我有一个简单的配置文件(filebeat.yml),它被复制到容器中,替换默认的filebeat. yml。
如果我使用docker命令执行Dockerfile,则filebeat示例可以正常工作:它使用我的配置文件并标识“output.json”文件。
我目前使用的是7.2版的filebeat,我知道**“filebeat.prospectors”没有被使用,我也确信这个特定的配置不是来自我的filebeat.yml文件(你可以在下面找到它)。
看起来,当使用docker-compose时,容器正在访问另一个配置文件,而不是由Dockerfile复制到容器中的配置文件,但到目前为止,我还无法弄清楚如何,为什么以及如何修复它...
下面是我的
docker-compose.yml**文件:

version: "3.7"
services:
  filebeat:
    build: "./filebeat"
    command: filebeat -e -strict.perms=false

文件beat.yml文件:

filebeat.inputs:
  - paths:
    - '/usr/share/filebeat/*.json'
    fields_under_root: true
    fields:
      tags: ['json']
output:
  logstash:
    hosts: ['localhost:5044']

停靠文件文件:

FROM docker.elastic.co/beats/filebeat:7.2.0
COPY filebeat.yml /usr/share/filebeat/filebeat.yml
COPY output.json /usr/share/filebeat/output.json
USER root
RUN chown root:filebeat /usr/share/filebeat/filebeat.yml
RUN mkdir /usr/share/filebeat/dockerlogs
USER filebeat

我所期望的输出应该与下面类似,这来自于我将它作为单个容器执行时所获得的成功执行。
错误是意料之中的,因为我目前没有配置logstash

INFO    crawler/crawler.go:72   Loading Inputs: 1
INFO    log/input.go:148        Configured paths: [/usr/share/filebeat/*.json]
INFO    input/input.go:114      Starting input of type: log; ID: 2772412032856660548
INFO    crawler/crawler.go:106  Loading and starting Inputs completed. Enabled inputs: 1
INFO    log/harvester.go:253    Harvester started for file: /usr/share/filebeat/output.json
INFO    pipeline/output.go:95   Connecting to backoff(async(tcp://localhost:5044))
ERROR   pipeline/output.go:100  Failed to connect to backoff(async(tcp://localhost:5044)): dial tcp [::1]:5044: connect: cannot assign requested address
INFO    pipeline/output.go:93   Attempting to reconnect to backoff(async(tcp://localhost:5044)) with 1 reconnect attempt(s)
ERROR   pipeline/output.go:100  Failed to connect to backoff(async(tcp://localhost:5044)): dial tcp [::1]:5044: connect: cannot assign requested address
INFO    pipeline/output.go:93   Attempting to reconnect to backoff(async(tcp://localhost:5044)) with 2 reconnect attempt(s)
goqiplq2

goqiplq21#

我设法找出了问题所在,我需要使用volumes标记Map配置文件和docker-compose文件中日志目录的位置:

version: "3.7"
services:
  filebeat:
    build: "./filebeat"
    command: filebeat -e -strict.perms=false
    volumes:
      - ./filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml
      - ./filebeat/logs:/usr/share/filebeat/dockerlogs

最后,我只需要执行docker-compose命令,一切都开始正常工作:

docker-compose -f docker-compose.yml up -d

相关问题