2020年Kubernetes的7种最佳日志管理工具


【编者的话】本文列举了2020年最佳的7种日志管理工具:Zebrium,Sematext,Loki by Grafana,ELK堆栈,Google Operations,CloudWatch,Fluentd,分别描述了各自的优缺点,并推荐了它们的最佳使用场景。

你可能想知道为什么要费心使用Kubernetes的日志管理工具?

Kubernetes主导着容器编排市场,通常用于托管微服务。微服务的每个实例都会生成大量的日志事件,这些事件很快就会变得难以管理。但更糟糕的是,当出现问题时,由于服务之间的复杂交互和几乎无限个可能的故障模式,很难找到根本原因。这种潜在的麻烦推动了Kubernetes日志管理工具的流行。

但是为什么我们有这么多工具呢?是否有一个完美的工具可以满足所有的需求,并使监视、日志记录和根本原因分析尽可能高效和快速?你可能已经猜到了,没有。

大多数Kubernetes日志管理工具都是ELK的变体,它们做着类似的事情,也有类似的局限性。这些工具帮助你访问日志和搜索信息,但问题是,你需要知道要查找什么。这些工具中的大多数还需要解析规则和警报规则才能正确工作。但是我遇到了一个例外,它不需要手动创建规则来自动检测问题。

继续阅读我的Kubernetes 2020年最佳日志管理工具列表。

1. Zebrium

https://www.zebrium.com/

你是否以为另一个工具会先出现?Prometheus或者ELK?不,我把Zebrium放在第一位是因为我看到这个工具有潜力成为Kubernetes日志管理中的下一个大热门。

这家新创业公司最近被列入了“Gartner 2020年最值得关注的25家企业软件初创公司”和“福布斯人工智能50强:美国最有前途的人工智能公司”。

说到成功,Zebrium最近还帮助Sweetwater公司将事件追踪时间从3小时减少到仅几分钟。Zebrium甚至可以发现以前没有注意到的隐藏问题。这是一个很好的特性,因为它可以帮助客户提前发现问题。

那么是什么让Zebrium的方法在竞争中脱颖而出呢?它们使用人工智能(AI)来发现问题,并自动发现根本原因,而所有其他工具都依赖于用户手动添加规则。Zebrium还可以作为一个独立的日志管理平台使用,也可以与ELK堆栈(他们称之为ZELK堆栈)或其他日志管理器集成。

这听起来像是梦想成真了,所以我在一个非常简单的项目上测试了它。在这个测试中,Zebrium自动检测到一个网络调用超时的问题。我没有为此构建任何规则,也没有手动监视系统。Zebrium刚刚通过其基于ML的算法发现了这个问题,并立即让我知道。

有必要提一下,我不是专业的DevOps工程师,我还没有在更大的项目中测试过Zebrium。

优点

  • 上手容易;只需复制/粘贴定制helm或kubectl命令。
  • 自动检测问题和根本原因,而不需要手动规则。
  • 可以作为独立的日志管理工具使用,也可以作为现有日志管理工具(如ELK Stack)的ML插件。


缺点

  • 不如竞争对手出名。
  • 免费计划限制为每天500mb,保留3天。
  • 支持Kubernetes,Docker和大多数常见的平台,但还没有对Windows的本地支持。


2. Sematext

https://sematext.com/

这是一个日志管理和应用性能监视的解决方案。Sematex提供了系统状态的全栈可见性。

Sematext不仅限于Kubernetes日志,还对Kubernetes进行监视和警报(关于度量和日志)。收集到的日志会根据几种不同的已知日志格式自动进行解析/结构化,用户还可以为自定义日志提供模式。它还公开了Elasticsearch API,因此你也可以使用任何与Elasticsearch一起工作的工具,比如Filebeat和Logstash。你可以将其作为ELK的变体使用,也可以将其与本地的Sematext生态系统一起使用。该工具有助于创建特定的规则来监视特定的情况并捕获异常。由于Sematex全面的实时仪表板,客户可以控制和监控所有服务。

优点

  • 与其他Sematext云工具集成,如Experience和Infrastructure Monitoring。
  • 可通过停止接受日志来配置超额成本控制。
  • ELK的灵活性。


缺点

  • Sematext widget和Kibana不能混合在一个仪表板上。
  • 需要在日志传递器中进行自定义解析,Sematext只在服务器端解析Syslog和JSON。
  • 薄弱的跟踪功能,尽管他们计划改进它。


3. Loki by Grafana

https://grafana.com/oss/loki

在Kubernetes日志监控工具列表中排名第三的不是ELK,而是Loki。Loki是一个受Prometheus启发的多租户和高可用性日志聚合工具。这个工具有助于收集日志,但是用户需要为它构建手动规则。Loki与Grafana、Prometheus和Kubernetes一起工作。Loki可以让你的内部流程更有效率。例如,它为Paytm Insider节省了75%的日志和监控成本。Loki的效率很高,因为它不为日志内容建立索引,而是为每个事件流的一组标签建立索引。

优点

  • 大的生态系统。
  • 丰富的可视化功能。
  • 由于没有索引日志内容而提高了效率


缺点

  • 未针对Kubernetes日志管理进行优化。
  • 建立规则需要大量的手工工作。
  • 缺少内容索引可能会限制搜索性能。


4. ELK 堆栈

https://www.elastic.co/what-is/elk-stack

最后,ELK排名第四。ELK可能是最著名的日志管理开源工具。ELK是Elasticsearch、Logstash和Kibana的首字母缩写;每个组件负责日志记录过程的不同部分。Elasticsearch是一个强大的、可扩展的搜索系统,Logstash聚合和处理日志,Kibana提供了一个分析和可视化界面,帮助用户理解数据。它们共同为Kubernetes提供了一个综合的日志解决方案。注意,ELK堆栈还有许多其他变体(如EFK堆栈——Elasticsearch、Fluentd和Kibana)。

很多大公司都在使用ELK,比如AdobeT-Mobile沃尔玛,所以你可以肯定它的健壮性。一般来说,这是一个可靠且经过良好验证的工具。我把它放在第四位是因为它的复杂性和它工作所需的大量资源。

优点

  • 这个工具很有名,并且有一个庞大的社区。
  • 非常广泛的平台支持。
  • Kibana有丰富的分析和可视化能力。
  • 需要对日志和手动定义的警报规则进行复杂的解析。


缺点

  • 难以维持规模。
  • 进行大量的调优,特别是针对大型环境。
  • 沉重的资源需求。
  • 有些功能需要付费许可


5. Google Operations(以前的Stackdriver)

https://cloud.google.com/products/operations

谷歌Operations,也就是你可能知道的Stackdriver,是在技术巨头谷歌的环境中监视、故障排除和改进应用性能的本机工具。它通过谷歌云和你的应用程序收集指标、日志和跟踪。谷歌Operations相当于AWS上的CloudWatch,与CloudWatch一样,它也有日志记录和监控解决方案。

云日志记录与GKE深度集成,并默认添加到你创建的每个GKE集群中。你的日志存储在日志的数据存储中,并为搜索和可视化建立索引。云日志支持灵活的查询(可以保存)、简单的字段探索器和直方图可视化,并可以与谷歌基础设施中的其他工具无缝集成。

优点

  • 实时日志管理和分析。
  • 尺度上度量的内置可观察性。
  • 大量的集成。


缺点

  • 很难追踪真正的延迟,因为请求要经过谷歌云平台(GCP)的各个级别。
  • 仅适用于GCP环境。
  • 复杂的定价体系。事先很难估计某件东西要花多少钱。


6. CloudWatch

https://aws.amazon.com/cn/cloudwatch/

CloudWatch是Amazon Web Services提供的原生AWS服务。它从AWS收集监控和操作数据,并将其可视化到一个自动仪表板中。这允许你查看并关联日志和度量,以理解问题的根本原因。可以使用CloudWatch自己专门构建的查询语言来分析日志,该语言支持聚合、过滤器和正则表达式。你还可以通过Lambda将日志发送到Elasticsearch。

总的来说,如果你已经在使用亚马逊服务,CloudWatch是一个很好的选择。它还可以在混合云架构中使用,并使用代理或API来监控本地资源。CloudWatch被Airbnb、Deliveroo、9GAG等很多知名公司使用。由于DynamoDB TTL,它还可以每年为公司节省数百万美元

优点

  • 用于监控AWS资源。
  • 具有突发实例度量(t2 CPU信用平衡)。
  • 详细的监视和自动伸缩组。


缺点

  • 它只能用于AWS服务。
  • 仪表板没有很多自定义选项。
  • 不支持事务跟踪。


7. Fluentd

https://www.fluentd.org/

Fluentd是一个跨平台的开源数据收集器,提供了一个统一的日志层(但它不是一个独立的日志管理器)。这是一个非常流行的工具,拥有超过5000名用户,包括Atlassian、Microsoft和Amazon。看看客户,我们可以得出一个高水平的可靠性和性能。此外,Fluentd创建了一个统一的日志记录层,帮助你更有效地使用数据,并在软件上快速迭代数据。这个工具可以帮助你每秒处理120,000条记录,就像他们为LINE所做的那样。

优点

  • 大型社区和插件生态系统。
  • 统一的日志记录层。
  • 经过验证的可靠性和性能。
  • 上手容易;可在10分钟内安装完毕。


缺点

  • 困难的配置。
  • 对数据转换的支持有限。
  • 不是一个完整的日志解决方案。


结论:如何选择合适的工具?

首先,我应该解释一下为什么我没有把Prometheus列入名单,因为我相信你会希望看到它。原因在于,本文主要关注日志监控工具,而Prometheus只处理度量,不支持日志。

所以,如果你厌倦了手工搜索日志寻找根本原因,或者厌倦了构建和管理警报规则,那么你应该尝试一下Zebrium的AI和ML算法。它可能会节省大量时间,并将你从创建大量规则的繁重任务中解放出来。它看起来是一种非常有趣的日志记录方法。

但如果你正在寻找更主流的工具,并且知道要创建哪些警报规则——或者你不相信人工智能——试试LokiSematext,如果你以前没有使用过日志监控工具,它们是适合你的高效工具。如果你已经在使用Grafana或Sematext Cloud/Enterprise的产品,它们将特别有用。

如果你在你的项目中使用谷歌的GCP产品,那么谷歌Operations可能是一个很好的、相当明显的变体。

如果你的日志有多个或外来的源,请尝试使用统一的日志记录层Fluentd,但你仍然需要日志记录工具。当然,如果你是AWS用户,CloudWatch将是你的自然选择。

无论如何,我希望你喜欢这篇文章。如果你知道Kubernetes的其他日志管理工具,请在评论中与我分享。我计划在未来更新这篇文章。

原文链接:7 Best Log Management Tools for Kubernetes [2020](翻译:池剑锋)

0 个评论

要回复文章请先登录注册