Kubernetes 是容器编排市场的主导者,经常被用来托管微服务。微服务的每个实例都会生成大量的日志事件,并且这些事件很快就会变得难以管理。但是,更糟糕的是,当问题发生时,由于服务之间的复杂的交互以及几乎无穷无尽的可能故障模式,很难找到问题根源。这种潜在的问题推动了 Kubernetes 日志管理工具的流行。
但是为什么我们有如此多的工具呢?是否存在一种完美的工具,能够满足每一种需求,并尽可能高效、快速地进行监控、日志记录和根源分析?你可能已经猜到了,答案是否定的。
大多数 Kubernetes 日志管理工具都是 ELK 的变体,具有相似的功能并且具有相似的局限性。这些工具可以帮助你访问日志并搜索信息,但问题是,你需要知道要查找的内容。这些工具中的大多数还需要解析规则和警报规则才能正常工作。但我遇到了一个例外,它不需要手动创建规则就可以自动检测问题。
下面是我列出的 2020 年 Kubernetes 最佳日志管理工具清单。
你认为会先出现其他工具吗?还是 Prometheus 或者 ELK?没有,我将 Zebrium 放在第一位,是因为我看到这个东西有潜力成为 Kubernetes 日志管理的下一个大杀器。
最近,这家新成立的初创公司被评为“Gartner 2020 年最值得关注的 25 家企业软件初创公司”,并被评为“Forbes 人工智能 50 强:美国最有前途的人工智能公司”。
谈到成功,Zebrium 最近还帮助 Sweetwater 将事件跟踪时间 从 3 小时缩短到仅仅几分钟。Zebrium 甚至能发现以前没有注意到的隐藏问题。这个功能非常棒,因为它能够在问题影响客户之前就发现问题。
那又是什么让 Zebrium 的方法在竞争中脱颖而出呢?嗯,他们利用人工智能来发现问题,并自动找出问题根源,而所有其他的工具都依靠用户手动添加规则。Zebrium 还可以用作一个独立的日志管理平台,也可以与 ELK Stack(他们称之为 ZELK 栈)或其他日志管理器集成。
这听起来像是梦想成真,所以我在一个非常简单的项目上对它进行了测试。在这个测试中,Zebrium 自动检测到网络调用超时的问题。而我并没有为此建立任何规则,也没有手动监视系统。Zebrium 刚刚通过其基于机器学习算法就发现了这个问题,并立即通知了我。
还需要指出的是,我并非专业的 DevOps 工程师,况且我也没有在更大的项目中测试过 Zebrium。
官网:https://www.zebrium.com/
这是一个用于日志管理和应用程序性能监视的解决方案。Sematext 提供了系统状态的全栈可见性。
Sematext 并不仅限于 Kubernetes 日志,它还根据度量标准和日志对 Kubernetes 进行监控和报警。收集的日志针对几种不同的已知日志格式自动解析 / 结构化,并且用户还可以提供自定义日志的模式。它还公开了 Elasticesarch API,因此,你可以使用任何支持 Elasticsearch 的工具,比如 FileBeat 以及带有 Sematext 的 Logstash。你可以将它用作 ELK 的变体,也可以与原生 Sematext 生态系统一起使用。该工具有助于创建特定的规则来监视特定的案例并捕获异常情况。客户端可以控制和监控所有服务,这要归功于 Sematext 全面实时仪表板。
官网:https://sematext.com/
Kubernetes 日志监视工具列表的第三位并不是 ELK,而是 Loki。受 Prometheus 的启发,Loki 是一个多租户、高可用的日志聚合工具。该工具可以帮助收集日志,但用户需要为其构建手动规则。Loki 和 Grafana、Prometheus 和 Kubernetes 一起使用。Loki 可以让你的内部流程更加高效。举例来说,它为 Paytm Insider 节省了 75% 的记录和监控成本。由于没有对日志内容进行索引,而只是为每个事件流索引一组标签,因此 Loki 实现了很高的效率。
官网:https://grafana.com/oss/loki/
ELK 最终名列第四。总的来说,ELK 可能是最为著名的开源日志管理工具。ELK 是 Elasticsearch、Logstash 和 Kibana 的首字母缩写。每个组件负责日志记录过程的不同部分。Elasticsearch 是一个功能强大的、且可扩展的搜索系统,Logstash 聚合和处理日志,Kibana 提供分析和可视化界面,帮助用户理解数据。它们共同为 Kubernetes 提供了全面的日志记录解决方案。请注意,ELK 栈还有许多其他变体(如 EFK 栈:Elasticsearch、Flunentd 和 Kibana)。
许多大公司都在使用 ELK,比如 Adobe、T-Mobile 和 Walmart 等等,因此你可以确定它的健壮性。总的说来,这是一个可靠且经过充分验证的工具。我之所以将它放在第四位,是因为它的复杂性和工作所需的大量资源。
官网:https://www.elastic.co/what-is/elk-stack
Google Operations,也就是你可能知道的 StackDriver,是用于在科技巨擘 Google 的环境中监控、故障排除和提高应用程序性能的原生工具。它收集 Google Cloud 和你的应用程序上的度量指标、日志和跟踪。Google Operations 相当于 AWS 的 CloudWatch,而且和 CloudWatch 一样,它也有日志记录和监控解决方案。
Cloud Logging 与 GKE 深度集成,并将默认情况下添加到你创建的每个 GKE 集群中。你的日志存储在 Logging 的数据存储中,并被索引用于搜索和可视化。Cloud Logging 支持灵活的查询(可保存)、简单的字段探索和直方图可视化,并能与 Google 基础设施的其他工具无缝集成。
官网:https://cloud.google.com/products/operations
CloudWatch 是 Amazon Web Service 提供的 AWS 原生产品。它从 AWS 收集监控和运营数据,并在一个自动化仪表板上将其进行可视化。这使你能够查看并关联日志和指标,以了解问题的根本原因。日志可以使用 CloudWatch 自己专门构建的查询语言来分析,该语言支持聚合、过滤器和正则表达式。你也可以通过 Lambda 将日志发送到 Elasticsearch。
总的来说,如果你已经在使用 Amazon 服务,那么 CloudWatch 就是一个很不错的选择。它还可以在混合云架构中使用,并使用代理或 API 来监控内部资源。很多知名公司,如 Airbnb、Deliveroo、9GAG 等,都在使用 CloudWatch。由于 DynamoDB TTL 的存在,它每年还可以为公司节省数百万美元的开支。
官网:https://aws.amazon.com/cloudwatch/
Fluentd 是一个跨平台的开源数据收集器,提供了统一的日志记录层(但它并不是独立的日志管理器)。这是一个非常流行的工具,拥有超过 5000 名用户,包括 Atlassian、Microso 和 Amazon。从客户端来看,我们可以得出高水平的可靠性和性能。此外,Fluentd 还创建了一个统一的日志记录层,帮助你更有效地使用数据,并在软件上对数据进行快速的迭代。这个工具可以帮助你每秒处理 120000 条记录,就像处理 LINE 一样。
官网:https://www.fluentd.org/
首先,我应该解释一下我为何没有将 Prometheus 列入名单,因为我肯定你会看到的。这是因为本文主要讨论日志监视工具,而 Prometheus 处理的是度量指标,并不支持日志管理。
因此,如果你厌倦了手动查找日志以查找问题根源,或厌倦了构建和管理警报规则,那么你应该尝试使用 Zebrium 及其基于人工智能和机器学习的算法。这可能会为你节省大量时间,让你从制定大量规则的艰巨任务中解脱出来。这看起来是一种非常有趣的日志记录方法。
不过,如果你正在寻找一些更主流的工具,并且知道要创建哪些警报规则,或者你不信任人工智能,那么可以试试 Loki 或 Sematext,如果你以前没有使用过日志监视工具的话,它们都是非常有效的工具。如果你已经使用 Grafana 或者 Sematext Cloud/Enterprise 产品,它们将会特别有用。
如果你的项目使用 Google 的 GCP 产品,那么,一个很好的、并且相当明显的变体可能就是 Google Operations。
如果你有多个或外来的日志源,可以尝试 Fluentd 的统一日志记录层,但你仍然需要日志记录工具。当然,如果你是 AWS 用户的话,CloudWatch 将是你的自然选择。
作者介绍:
Max Shash,DeployPlace 首席营销官。
原文链接:
https://dzone.com/articles/7-best-log-management-tools-for-kubernetes-2020
InfoQ 写作平台欢迎所有热爱技术、热爱创作、热爱分享的内容创作者入驻!
还有更多超值活动等你来!
扫描下方二维码
填写申请,成为作者
点个在看少个 bug 👇