4

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

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

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

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

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

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

4

1 回答 1

1

尝试使用fluentdKubernetes 元数据插件来提取本地 json 文件 docker 日志并发送到 Graylog2。

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

于 2018-07-24T14:35:13.943 回答