【发布时间】:2018-07-03 19:14:55
【问题描述】:
是否有任何关于将日志从 K8s 中的容器发送到在 EC2 实例上运行的外部 ELK 集群的文档?
我们正在尝试设置 Kubernetes,我正在尝试弄清楚如何让日志记录正常工作。我们已经在 EC2 上为当前版本的应用程序设置了 ELK 堆栈,但那里的大多数文档似乎都提到 ELK,因为它已部署到 K8s 集群。
【问题讨论】:
是否有任何关于将日志从 K8s 中的容器发送到在 EC2 实例上运行的外部 ELK 集群的文档?
我们正在尝试设置 Kubernetes,我正在尝试弄清楚如何让日志记录正常工作。我们已经在 EC2 上为当前版本的应用程序设置了 ELK 堆栈,但那里的大多数文档似乎都提到 ELK,因为它已部署到 K8s 集群。
【问题讨论】:
我也在做同样的事情。
首先,您应该知道您的 docker 容器正在使用什么驱动程序来管理日志(json 驱动程序/日志等 - 阅读 here)。
之后,您应该在架构中使用一些日志收集器将日志发送到 Logstash 端点。您可以使用 filebeat/fluent 位。它们分别是 logstash/fluentd 的轻量级替代品。您必须使用其中之一,而不是直接通过 syslog 将您的日志发送到 logstash,因为这些日志传送器具有使用相应容器的 kubernetes 元数据丰富您的日志的特殊功能。
之后可能会有很多挑战。解析日志数据(例如多行日志)等。对于高效的管道,最好在日志发送方完成大部分工作(即从日志中提取日期对象等),而不是为此使用通用的 logstash可能是一个瓶颈。
请注意,如果容器日志没有发送到 stdout/stderr 而是写入 else-where,您可能需要将 filebeat/fluent-bit 作为容器的 side-car 运行。
至于文档的链接,我自己并没有在一个地方找到任何文档,但是我提到的关键字,阅读它们我了解了很多东西。
希望这会有所帮助。
【讨论】: