我最近开始使用kubernetes,现在正在研究如何配置集中式日志记录。对于大多数Pod,应用程序本身直接记录到GELF端点(logstash),但是我也需要从中获取许多“管理” pod。
以前,当我使用Docker Swarm时,我只是将日志驱动程序(和相关配置)添加到compose file中。但是,Kubernetes中似乎没有该选项。
我看过使用Fluentd直接从/ var / log / containers中读取日志,但是在这里遇到了两个问题:
似乎没有任何简单的方法来指定要记录到logstash的pod。我知道您可以创建过滤器等,但这似乎不太容易维护,在各个Pod上使用注释似乎更明智。
/ var / log / containers中的日志采用json文件日志格式,而不是GELF。
kubernetes中是否有任何方法可以按每个容器使用内置的Docker日志记录驱动程序来轻松登录到GELF端点?
答案 0 :(得分:1)
尝试对Kubernetes metadata plugin使用 fluentd 来提取本地json文件docker日志并发送到Graylog2。
tag_to_kubernetes_name_regexp
-用于从当前fluentd标记中提取Kubernetes元数据(容器名称,容器名称,名称空间)的正则表达式。