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

Stella981
• 阅读 512

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

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

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

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

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

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

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

1. Zebrium

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

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

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

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

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

https://grafana.com/oss/loki

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

优点:

  • 大的生态系统。

  • 丰富的可视化功能。

  • 由于没有索引日志内容而提高了效率。

缺点:

  • 未针对Kubernetes日志管理进行优化。

  • 建立规则需要大量的手工工作。

  • 缺少内容索引可能会限制搜索性能。

4. ELK 堆栈

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

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)

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

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

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

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

优点:

  • 实时日志管理和分析。

  • 尺度上度量的内置可观察性。

  • 大量的集成。

缺点:

  • 很难追踪真正的延迟,因为请求要经过谷歌云平台(GCP)的各个级别。

  • 仅适用于GCP环境。

  • 复杂的定价体系。事先很难估计某件东西要花多少钱。

6. CloudWatch

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

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

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

https://www.fluentd.org/

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

优点:

  • 大型社区和插件生态系统。

  • 统一的日志记录层。

  • 经过验证的可靠性和性能。

  • 上手容易;可在10分钟内安装完毕。

缺点:

  • 困难的配置。

  • 对数据转换的支持有限。

  • 不是一个完整的日志解决方案。

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

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

首先,我应该解释一下为什么我没有把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)培训

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

本次CKA培训课程,基于最新考纲,通过线下授课、考题解读、模拟演练等方式,帮助学员快速掌握Kubernetes的理论知识和专业技能,并针对考试做特别强化训练,让学员能从容面对CKA认证考试,使学员既能掌握Kubernetes相关知识,又能通过CKA认证考试,学员可多次参加培训,直到通过认证。点击下方图片或者阅读原文链接查看详情。

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

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这