如何从Java应用程序(k8s)收集日志到fluentd(k8s)

时间:2019-10-08 21:06:39

标签: kubernetes fluentd

我在k8s和fluentd(守护程序集)中都有Java应用程序。在流利的conf中:

 *`<source>
     @type forward
     port 24224
  </source>
  <match **>
  @type stdout
  </match>`*

我有点困惑。 我需要使用fluentd-logger-java lib吗?我在文档中读到,我需要添加remotehost以使流利,但是这里我一般不使用服务。 应用程序如何将日志发送到流利的Pod?

谢谢!

2 个答案:

答案 0 :(得分:1)

鉴于您的Java应用程序可以登录到stdoutstderr,您将使用fluentd读取该日志,并且在大多数情况下,将这些日志发送到可以聚合日志的系统。 / p>

这张图片来自official docs,显示了在Kubernetes中使用例如以下命令配置节点级日志记录的常见模式。通过Poemon与DaemonSet一起部署时很流畅:

enter image description here

在上图中,logging-agent将流利,my-pod将是您的Pod,其中包含一个运行Java应用程序的容器。从流畅的配置角度来看,Logging Backend是可选的,但强烈建议使用。基本上,您可以选择通过流利的stdout输出日志。

要使此功能正常运行,需要对容器日志进行读取访问,这可以通过安装日志目录来实现,例如/var/lib/docker/containers放入流利的容器中。

我们已成功使用this fluentd example ConfigMap,并进行了一些修改以从节点读取日志并将其发送到Elasticsearch。请查看该ConfigMap的containers.input.conf部分,以获取有关容器日志及其摘要的更多信息。

请注意,尽管您可以将fluentd-logger-java库用作Java应用程序中的另一种类型的记录器,但您无需使用它就可以开始使用fluentd。开箱即用,您应该应该可以让Java将所有内容记录到stdoutstderr并流畅地阅读日志。

答案 1 :(得分:0)

如果您只关心实时日志,则可以尝试基于流畅,弹性搜索和基巴纳语的产品;您可以获得https://logdna.com

只需添加标签并部署恶魔集。

您可以尝试几天的免费试用