【问题标题】:How to collect logs from java app (k8s) to fluentd(k8s)如何从java app(k8s)收集日志到fluentd(k8s)
【发布时间】:2019-10-08 21:06:39
【问题描述】:

我在 k8s 和 fluentd (daemonset) 中有 java 应用程序。在流利的conf中:

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

我有点困惑。 我需要使用 fluentd-logger-java 库吗?我在文档中读到,我需要为 fluentd 添加远程主机,但这里我一般不使用服务。 应用如何将日志发送到 fluentd pod?

提前致谢!

【问题讨论】:

    标签: kubernetes fluentd


    【解决方案1】:

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

    这张来自official docs 的图片显示了在 Kubernetes 中配置节点级日志记录的常见模式,例如fluentd 作为使用 DaemonSet 部署的 Pod:

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

    为了使其正常运行,fluentd 需要对容器日志的读取权限,这是通过挂载日志目录来完成的,例如/var/lib/docker/containers 进入 fluentd 容器。

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

    请注意,您不需要使用 fluentd-logger-java 库来开始使用 fluentd,尽管您可以在 Java 应用程序中将其用作另一种类型的记录器。开箱即用您应该能够让 Java 将所有内容记录到 stdoutstderr 并使用 fluentd 读取日志。

    【讨论】:

      【解决方案2】:

      如果您只关心实时日志,那么您可以尝试基于 fluent、Elastic search 和 kibana 构建的产品;你可以得到它https://logdna.com

      只需添加一个标签并部署 demoset。

      您可以免费试用几天

      【讨论】:

      • 只需添加标签并部署 demoset。 --> 如何在 Daemonset/Deployment 文件中添加标签?样品请
      • 您可以编辑属于各自环境的 logdna 演示集,例如“dev”标签被用于开发集群,您在其中添加了一个由 logdna 生成的秘密,这将开始为您提供日志在针对该标签的 logdna 仪表板中
      猜你喜欢
      • 2021-10-09
      • 2019-12-13
      • 2023-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      • 2020-05-19
      • 1970-01-01
      • 2021-01-04
      相关资源
      最近更新 更多