如何将指定路径的自定义日志发送到运行在docker内部的filebeat



我是新来的filbeat和elk。我试图直接使用filebeat发送自定义日志到弹性搜索。elk stack和filebeat都在docker容器中运行。自定义日志在home/username/docker/hello.log文件夹中。这是我的档案。yml文件:

filebeat.config:
modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
filebeat.inputs:
- type: log
enabled: true
paths:
- /home/raju/elk/docker/*.log
filebeat.autodiscover:
providers:
- type: docker
hints.enabled: true
processors:
- add_cloud_metadata: ~
output.elasticsearch:
hosts: ["my_ip:9200"]

下面是我的自定义日志文件:

This is a custom log file 
Sending logs to elastic search

这些是我用来运行filebeat的命令。

docker run -d 
--name=filebeat 
--user=root 
--volume="$(pwd)/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" 
--volume="/var/lib/docker/containers:/var/lib/docker/containers:ro" 
--volume="/var/run/docker.sock:/var/run/docker.sock:ro" 
docker.elastic.co/beats/filebeat:8.5.3 filebeat -e --strict.perms=false

当我使用上面的命令运行filebeat时,我可以在kibana仪表板上看到docker容器的日志。但是我正在努力如何使filebeat从上面指定的位置读取我的自定义日志,并向我展示kibana仪表板上日志文件内的行。

任何帮助都将不胜感激。

Filebeat输入通常可以接受多个日志文件路径来获取它们。在您的示例中,您只需要将日志文件位置添加到日志文件输入路径属性中,类似于:

filebeat.inputs:
- type: log
enabled: true
paths:
- /home/raju/elk/docker/*.log
- /home/username/docker/hello.log

最新更新