本文列举了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最近还帮助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
这是一个日志管理和应用性能监视的解决方案。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
在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,比如Adobe、T-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
Fluentd是一个跨平台的开源数据收集器,提供了一个统一的日志层(但它不是一个独立的日志管理器)。这是一个非常流行的工具,拥有超过5000名用户,包括Atlassian、Microsoft和Amazon。看看客户,我们可以得出一个高水平的可靠性和性能。此外,Fluentd创建了一个统一的日志记录层,帮助你更有效地使用数据,并在软件上快速迭代数据。这个工具可以帮助你每秒处理120,000条记录,就像他们为LINE所做的那样。
优点:
大型社区和插件生态系统。
统一的日志记录层。
经过验证的可靠性和性能。
上手容易;可在10分钟内安装完毕。
缺点:
困难的配置。
对数据转换的支持有限。
不是一个完整的日志解决方案。
结论:如何选择合适的工具?
首先,我应该解释一下为什么我没有把Prometheus列入名单,因为我相信你会希望看到它。原因在于,本文主要关注日志监控工具,而Prometheus只处理度量,不支持日志。
所以,如果你厌倦了手工搜索日志寻找根本原因,或者厌倦了构建和管理警报规则,那么你应该尝试一下Zebrium的AI和ML算法。它可能会节省大量时间,并将你从创建大量规则的繁重任务中解放出来。它看起来是一种非常有趣的日志记录方法。
但如果你正在寻找更主流的工具,并且知道要创建哪些警报规则——或者你不相信人工智能——试试Loki或Sematext,如果你以前没有使用过日志监控工具,它们是适合你的高效工具。如果你已经在使用Grafana或Sematext Cloud/Enterprise的产品,它们将特别有用。
如果你在你的项目中使用谷歌的GCP产品,那么谷歌Operations可能是一个很好的、相当明显的变体。
如果你的日志有多个或外来的源,请尝试使用统一的日志记录层Fluentd,但你仍然需要日志记录工具。当然,如果你是AWS用户,CloudWatch将是你的自然选择。
无论如何,我希望你喜欢这篇文章。如果你知道Kubernetes的其他日志管理工具,请在评论中与我分享。我计划在未来更新这篇文章。
原文链接:https://dzone.com/articles/7-best-log-management-tools-for-kubernetes-2020
Kubernetes管理员认证(CKA)培训
本次CKA培训课程,基于最新考纲,通过线下授课、考题解读、模拟演练等方式,帮助学员快速掌握Kubernetes的理论知识和专业技能,并针对考试做特别强化训练,让学员能从容面对CKA认证考试,使学员既能掌握Kubernetes相关知识,又能通过CKA认证考试,学员可多次参加培训,直到通过认证。点击下方图片或者阅读原文链接查看详情。