当前位置: 首页 > 知识库问答 >
问题:

Filebeat容器不向Elastic发送日志

方野
2023-03-14

在我通过Windows 10上的“Windows子系统Linux 2”运行Ubuntu18.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"}

我也可以去Kibana dashboardhttp://localhost:5601还有弹性的http://localhost:9200两者都能正常工作

然后我设置了filebeat:


    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.html" target="_blank">go:114      Starting input of type: container; ID: 16402101064670842079

然后我去http://localhost:5601

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

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

需要:
-Kibana显示“hello world”docker容器日志
-查看/var/lib/docker/containers下的日志文件

我错过了什么?

谢谢你,
奥利弗

共有1个答案

殷宇
2023-03-14

嗯,我花了好几个小时才问到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上

 类似资料:
  • 我在Mac OSX上运行filebeat以及sebp/elk docker镜像。当我在具有完全相同配置的Windows机器上尝试相同的操作时,日志从Filebeat无缝地传送到Logstash。在windows上,当我在启动elk docker容器之前运行filebeat时,它会不断重试以建立与Logstash的连接。在Mac上,filebeat正在启动任何连接。它甚至不会尝试连接到在端口5044

  • 我是docker和所有这些日志记录的新手,所以可能我犯了一个stuipd错误,所以提前感谢您的帮助。我让麋鹿通过Dockerfile行运行docker容器(6.2.2): 在一个单独的容器中,我通过folling Dockerfile行安装并运行Filebeat: 我的Filebeat配置是: 正如你所看到的,我试图在elasticsearch中创建一个自定义索引,但现在我只是想先让默认索引正常工

  • 我的目标:我需要收集从运行的tomcat容器到Filebeat容器的tomcat日志。 问题:我不知道如何从Tomcat容器中获取收集的日志文件。 到目前为止我尝试过的内容:我尝试创建一个docker卷并将tomcat日志添加到该卷中,并从filebeat容器访问该卷,但没有成功。 docker-containers:包含3个主子目录(Tomcat、Nginx和Postgres)。ENV文件和do

  • 我的ec2实例上运行了几个Docker容器。 我想将这些容器中的日志直接保存到Logstash(弹性云)。 当我试图手动安装Filebeat时,一切正常。我使用 我把它拆开,换了文件。yml配置到 这很好,我可以在Kibana中搜索应用程序“myapp”后找到我的日志。 然而,当我试图从Docker运行Filebeat时,没有成功。 这是我的docker compose中的filebeat部分。y

  • 我创建了一个索引映射,就像这样,现在我将使用filebeat向Elasticsearch发送一个json文件,如何确保配置我的filebeat。yml将信息发送到我刚刚创建的新索引映射? 索引映射: 我的音乐节拍。yml: #设置日志级别。默认的日志级别是info.#可用的日志级别包括:错误、警告、信息、调试#日志。级别:调试 我想确保我将用filebeat上传的内容,会正确提交到我之前设置的El

  • 我使用filebeat作为docker,当ıpoint我的nginx登录filebeat时。ymlım在kibana看不到nginx日志这是我的filebeat。yml。我准备好了elastichsearch和kibana容器。当我在日志中启动filebeat容器时,它表示已配置给定的日志路径。但ı无法在kibana上看到任何nginx日志 以及我的nginx站点配置的一个例子