如何在不使用fluentd传递的情况下代理应用程序日志级别?

时间:2018-03-19 15:05:06

标签: elasticsearch kubernetes openshift-origin fluentd efk

所以我在官方Openshift/Origin architecture之后安装了以下Openshift/Origin documentation 我们还想使用开箱即用的聚合日志记录设置,这就是严格使用Openshift aggregated logging文档设置的原因。

到目前为止,反馈非常好,但我还有另一项挑战,我需要一些帮助。 开发人员希望自己指定将转发到Elasticsearch的日志级别。当前日志级别仅通过FluentD设置。

有没有办法通过Deployment变量设置日志级别,并将Fluentd传递给Elasticsearch?

目标是为人们提供一种方法,由他们自己设置将转发给Elasticsearch的日志级别。

1 个答案:

答案 0 :(得分:1)

我担心如果不添加自定义FluentD,标准工具就无法做到这一点。

首先,Docker通过json-file logging reading a container logs提供的集群driver中的FluentD:

  

默认情况下,Fluentd分别从/ var / log / messages和/var/log/containers/.log读取系统日志和容器日志。

即使使用SystemD日志记录,您也会得到相同的结果 - 日志记录级别由Docker设置。 Kubernetes also using那个司机。

对于Docker json文件驱动程序,您可以设置log-tags,从理论上讲,它可以帮助您过滤日志。但是Kubernetes不可能在运行时为容器设置选项,所以现在有办法。

我唯一能看到你如何做到这一点的方法是使用边车容器with custom logging agent。它看起来像这样:

logging agent sidecar

使用sidecar,您可以在其中运行带有自定义配置的FluentD,并通过任何修改解析应用程序的日志,包括将环境变量用作日志级别。