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

java - k8s,filebeat将主机所有容器的控制台日志写入ES中,不成功?

卞博简
2023-10-12


这个是我的filebeat的配置。
image.png
这个是我运行的filebeat服务的日志
image.png
这是我容器中的日志地址
image.png
这个是我在kibana上的索引。

按上面的操作

来说我这边应该已经将主机中所有启动的容器服务中的日志文件写入es中的“
test_index1”中的。可是没有写入。filebeat服务启动也正常的去监视获取了“/app/logs/*.jar.log”日志中的数据写入es中,但是不成功,es中的索引文件大小不变。到底是哪里出了问题呢?

共有2个答案

汪阳辉
2023-10-12

主机上的目录需要挂载到容器中,container 才可以看到。否则 container 读不到主机上的任何内容,因为 container 内部的文件系统与主机的文件系统时独立的。

每一个需要读取主机内容的 container 都要挂载它读取的目录或文件。


需要写主机目录或文件的 container 的也是必须挂载之后才能写到主机上的。否则只能写到 container 内部,主机上看不到。比如如果有日志期望可以在主机上直接查看的话,就得把主机上的一个目录挂载到 container 中的日志目录上。


pod 中是可以有多个 container 的,每一个需要读取相关目录的 container 必须单独挂载主机目录。

田曜瑞
2023-10-12

基于你提供的信息,要解决这个问题可能需要进行以下步骤:

  1. 检查 Filebeat 配置:首先确认 Filebeat 的配置文件是否正确。特别是,要确保日志路径和正则表达式匹配你的容器日志文件。你的配置文件中的 /app/logs/*.jar.log 是否是正确的日志文件路径?同时,如果你是想监控所有容器的日志,那么这个路径应该是一个可以被所有容器访问的通用路径,而不是某个特定容器的日志路径。
  2. 检查权限问题:Filebeat 需要有足够的权限来读取你的日志文件。确保 Filebeat 运行的用户有读取这些日志文件的权限。
  3. 检查 Elasticsearch 配置:确认 Elasticsearch 是否已经正确地接收到 Filebeat 的输入。在 Elasticsearch 的配置中,应该有一个部分指定了 Filebeat 可以将日志发送到哪里。
  4. 检查日志:查看 Filebeat 和 Elasticsearch 的日志,看看是否有任何错误或警告。这可能会给你提供一些关于问题的线索。
  5. 检查索引:尽管你的 Elasticsearch 索引文件大小没有变化,但并不一定意味着没有数据被写入。可能只是数据没有被正确地写入到你预期的索引中。检查一下是否有其它的索引被创建,或者数据被写入了错误的地方。
  6. 测试一个小规模的环境:如果问题仍然存在,尝试在一个更小的环境中测试你的设置。例如,你可以在一个单一的主机上运行几个容器,并尝试将日志发送到 Elasticsearch。这样可以帮助你确定问题是否与特定的环境或配置相关。

在你提供更详细的信息(例如具体的错误消息、Elasticsearch和Filebeat的配置等)之前,以上是对你当前问题的一些基本建议。

 类似资料:
  • 我正在我的Spring Boot应用程序中使用Logback。 null

  • 在我通过Windows 10上的“Windows子系统Linux 2”运行Ubuntu18.04的本地机器上,我运行的是Elastic 7.3、Kibana 7.3和Elastic 7.3 docker容器。 设置成功,Filebeat似乎可以正确监控容器。但是,Kibana没有显示任何日志。 安装程序 要设置Elastic和Kibana,我使用以下命令 在这两个命令之后,容器Kibana日志显示

  • 问题内容: 此代码是否同时写入日志文件和控制台? 问题答案: 不,它不会同时写入两者。只会写入控制台。关于原始代码的简短说明。我想您在某处定义,但是代码仍然不正确。您需要在语句中使用引号,例如: 因为我认为您是要附加到文件中。否则,您的代码将抛出一个因为未定义的变量。 但是,正如其他人所说,您应该强烈考虑使用日志记录模块。这是一个如何同时写入控制台和日志文件的简单示例。该代码部分源自此处和此处:

  • 操作系统:RHEL7|k8s版本:1.12/13|kubes祈祷|裸机 我部署了一个标准的kubespray裸机集群,我正在尝试了解部署nginx ingress controller的最简单推荐方法是什么,它将允许我部署简单的服务。没有提供负载平衡器。我希望我的主公共IP作为我的服务的endpoint。 Github k8s ingress nginx建议将节点端口服务作为“强制”步骤,这似乎不

  • 问题内容: 我想在量角器测试中输出div的文本,到目前为止,我有: 但这输出 我尝试了“ toString()”,结果相同。 有没有办法将文本输出到控制台? 问题答案: 和其他大多数量角器方法都返回承诺。您想将您的陈述放入承诺解决方案中: 使用新的量角器语法:

  • 在中有一个,可以将日志写入到。 我需要在中使用相同的功能,但我还没有找到这样做的选项。有人知道如何使用实现同样的效果吗?