如何按每个容器从Kubernetes将日志发送到GELF UDP端点

时间:2018-07-23 09:55:49

标签: docker kubernetes gelf

我最近开始使用kubernetes,现在正在研究如何配置集中式日志记录。对于大多数Pod,应用程序本身直接记录到GELF端点(logstash),但是我也需要从中获取许多“管理” pod。

以前,当我使用Docker Swarm时,我只是将日志驱动程序(和相关配置)添加到compose file中。但是,Kubernetes中似乎没有该选项。

我看过使用Fluentd直接从/ var / log / containers中读取日志,但是在这里遇到了两个问题:

  1. 似乎没有任何简单的方法来指定要记录到logstash的pod。我知道您可以创建过滤器等,但这似乎不太容易维护,在各个Pod上使用注释似乎更明智。

  2. / var / log / containers中的日志采用json文件日志格式,而不是GELF。

kubernetes中是否有任何方法可以按每个容器使用内置的Docker日志记录驱动程序来轻松登录到GELF端点?

1 个答案:

答案 0 :(得分:1)

尝试对Kubernetes metadata plugin使用 fluentd 来提取本地json文件docker日志并发送到Graylog2。

tag_to_kubernetes_name_regexp-用于从当前fluentd标记中提取Kubernetes元数据(容器名称,容器名称,名称空间)的正则表达式。