7

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

 3 years ago
source link: http://dockone.io/article/1326670
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

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

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

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

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

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

1. Zebrium

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

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

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

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

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

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

优点:

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

缺点:

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

链接: https://www.zebrium.com/

2. Sematext

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

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

优点:

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

缺点:

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

链接; https://sematext.com/

3. Loki by Grafana

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

优点:

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

缺点:

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

链接: https://grafana.com/oss/loki/

4. ELK 堆栈

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

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

优点:

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

缺点:

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

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

5. Google Operations(以前的Stackdriver)

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

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

优点:

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

缺点:

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

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

6. CloudWatch

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

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

优点:

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

缺点:

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

链接: https://aws.amazon.com/cloudwatch/

7. Fluentd

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

优点:

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

缺点:

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

链接: https://www.fluentd.org/

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

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

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

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

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

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK