Filebeat容器不会将日志发送到Elastic

时间:2019-09-01 14:02:16

标签: docker elasticsearch kibana windows-subsystem-for-linux filebeat

在通过Windows 10上的“ Windows Subsystem Linux 2”运行Ubuntu 18.04的本地计算机上,我正在运行Elastic 7.3,Kibana 7.3和Elastic 7.3 docker容器。

设置成功,Filebeat似乎可以正确监视容器。但是,Kibana不会显示任何日志。

设置

要设置Elastic和Kibana,我使用以下命令


    docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.1
    docker run --network=lognetwork --name=elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.3.1

    docker pull docker.elastic.co/kibana/kibana:7.3.1
    docker run --name=kibana --network=lognetwork -e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 -p 5601:5601 docker.elastic.co/kibana/kibana:7.3.1

这两个命令之后,来自Kibana容器的日志显示它已成功连接到Elastic:


    {"type":"log","@timestamp":"2019-09-01T13:22:18Z","tags":["status","plugin:spaces@7.3.1","info"],"pid":6,"state":"green","message":"Status changed from yellow to green - Ready","prevState":"yellow","prevMsg":"Waiting for Elasticsearch"}

我也可以转到http://localhost:5601上的Kibana仪表板以及http://localhost:9200上的Elastic都正常工作

然后我设置文件拍子:


    docker run --network=lognetwork docker.elastic.co/beats/filebeat:7.3.1 setup -E setup.kibana.host=kibana:5601 -E output.elasticsearch.hosts=["elasticsearch:9200"]

我可以同时看到Elastic和Kibana容器日志,并返回200。Filebeat容器上的日志显示:


    Index setup finished.
    Loading dashboards (Kibana must be running and reachable)
    Loaded dashboards
    Loaded machine learning job configurations
    Loaded Ingest pipelines

最后,我从Elastic站点中获取默认配置,启动Filebeat并附加到容器


    curl -L -O https://raw.githubusercontent.com/elastic/beats/7.3/deploy/docker/filebeat.docker.yml

    docker run -d --network=lognetwork  --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:7.3.1 filebeat -e -strict.perms=false   -E output.elasticsearch.hosts=["elasticsearch:9200"]
    docker attach filebeat

我可以看到Filebeat发送监视脉冲,但是当它发送时,弹性日志不会显示任何新内容。

为了进行测试,我启动了Docker“ hello-world”,它会生成多行日志


    docker run hello-world

Filebeat显示以下日志


    2019-09-01T13:30:40.624Z        INFO    log/input.go:148        Configured paths: [/var/lib/docker/containers/460cc8c215ff69ecf28685c9cf89c0e56d0b3e4f680b8bf29beb5b570ebb7a14/*-json.log]
    2019-09-01T13:30:40.624Z        INFO    input/input.go:114      Starting input of type: container; ID: 16402101064670842079

然后我去http://localhost:5601

结果
Kibana没有显示日志。单击“检查新数据”也不会显示任何内容。

文件夹/ var / lib / docker / containers也为空。 filebeat日志(/ var / lib / docker / containers / 460cc8c215ff69ecf28685c9cf89c0e56d0b3e4f680b8bf29beb5b570ebb7a14 /)返回的路径似乎不存在。

预期
-Kibana显示“ hello world”泊坞窗容器日志
-要查看/ var / lib / docker / containers

下的日志文件

我想念什么?

谢谢你,
奥利维尔

1 个答案:

答案 0 :(得分:1)

好吧,我花了很多小时才提出SO,当然,问了我之后才找到答案了3000万。

诀窍是检查日志的创建位置,因为在WSL2上运行Docker-Desktop与在Linux上运行Docker略有不同。

docker inspect filebeat | grep LogPath

返回:

"LogPath": "/var/data/docker-desktop/default/daemon-data/containers/fd56c5e43c9206baaadd33d3a711e523107622450d0deafb498e7940d809f779/fd56c5e43c9206baaadd33d3a711e523107622450d0deafb498e7940d809f779-json.log

然后在启动filebeat时相应地更改音量映射 volume =“ / var / data / docker-desktop / default / daemon-data / containers:/ var / lib / docker / containers:ro” 完成了工作:

docker run -d --network=lognetwork  --name=filebeat   --user=root   --volume="$(pwd)/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro"   --volume="/var/data/docker-desktop/default/daemon-data/containers:/var/lib/docker/containers:ro"   --volume="/var/run/docker.sock:/var/run/docker.sock:ro"   docker.elastic.co/beats/filebeat:7.3.1 filebeat -e -strict.perms=false   -E output.elasticsearch.hosts=["elasticsearch:9200"]

现在,日志已正确显示在kibana上