我尝试使用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)
1条答案
按热度按时间goqiplq21#
我设法找出了问题所在,我需要使用volumes标记Map配置文件和docker-compose文件中日志目录的位置:
最后,我只需要执行docker-compose命令,一切都开始正常工作: