Filebeat 无法作为 docker 容器启动
Filebeat fails to start as docker container
以下是使用的 docker-compose。
version: '3.5'
services:
filebeat:
image: docker.elastic.co/beats/filebeat:6.4.2
volumes:
- ${PWD}/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- ${PWD}/test/input:/tmp/input:rw
filebeat.yml 中的 Filebeat 配置是
filebeat.inputs:
- type: container
paths:
- '/var/lib/docker/containers/*/*.log'
processors:
- add_docker_metadata:
host: "unix:///var/run/docker.sock"
- decode_json_fields:
fields: ["message"]
target: "json"
overwrite_keys: true
output.elasticsearch:
hosts: ["elasticsearch:9200"]
indices:
- index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
logging.json: true
logging.metrics.enabled: false
docker-compose up
后,容器启动失败并报告以下错误。
正在退出:加载配置文件时出错:配置文件 ("filebeat.yml") 必须由用户标识符 (uid=0) 或 root[=14 所有=]
这里有什么问题?我是 运行 我笔记本电脑上的这个样本 运行 ubuntu.
error loading config file: config file ("filebeat.yml") must be owned
by the user identifier (uid=0) or root
一般情况下,我们以root身份启动filebeat(确保系统所有文件都可以被它访问)。
您可以尝试以 root 身份启动 compose 的 filebeat 服务:
version: '3.5'
services:
filebeat:
user: root #change here
image: docker.elastic.co/beats/filebeat:6.4.2
volumes:
- ${PWD}/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- ${PWD}/test/input:/tmp/input:rw
如果这还不够,您可以 运行 带有禁用权限检查的 -strict.perms=false
参数的容器,例如:
version: '3.5'
services:
filebeat:
user: root #change here
image: docker.elastic.co/beats/filebeat:6.4.2
command:
- "-e"
- "--strict.perms=false"
...
PS :-e
标志禁用 syslog/file 输出并重定向标准错误中的所有输出(与您的观点无关,但通常需要在容器中读取 filebeat 日志来自容器日志)。
以下是使用的 docker-compose。
version: '3.5'
services:
filebeat:
image: docker.elastic.co/beats/filebeat:6.4.2
volumes:
- ${PWD}/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- ${PWD}/test/input:/tmp/input:rw
filebeat.yml 中的 Filebeat 配置是
filebeat.inputs:
- type: container
paths:
- '/var/lib/docker/containers/*/*.log'
processors:
- add_docker_metadata:
host: "unix:///var/run/docker.sock"
- decode_json_fields:
fields: ["message"]
target: "json"
overwrite_keys: true
output.elasticsearch:
hosts: ["elasticsearch:9200"]
indices:
- index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
logging.json: true
logging.metrics.enabled: false
docker-compose up
后,容器启动失败并报告以下错误。
正在退出:加载配置文件时出错:配置文件 ("filebeat.yml") 必须由用户标识符 (uid=0) 或 root[=14 所有=]
这里有什么问题?我是 运行 我笔记本电脑上的这个样本 运行 ubuntu.
error loading config file: config file ("filebeat.yml") must be owned by the user identifier (uid=0) or root
一般情况下,我们以root身份启动filebeat(确保系统所有文件都可以被它访问)。
您可以尝试以 root 身份启动 compose 的 filebeat 服务:
version: '3.5'
services:
filebeat:
user: root #change here
image: docker.elastic.co/beats/filebeat:6.4.2
volumes:
- ${PWD}/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- ${PWD}/test/input:/tmp/input:rw
如果这还不够,您可以 运行 带有禁用权限检查的 -strict.perms=false
参数的容器,例如:
version: '3.5'
services:
filebeat:
user: root #change here
image: docker.elastic.co/beats/filebeat:6.4.2
command:
- "-e"
- "--strict.perms=false"
...
PS :-e
标志禁用 syslog/file 输出并重定向标准错误中的所有输出(与您的观点无关,但通常需要在容器中读取 filebeat 日志来自容器日志)。