在我通过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下的日志文件
我错过了什么?
谢谢你,
奥利弗
嗯,我花了好几个小时才问到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站点配置的一个例子