如何实现Kubernetes可观察性监测

如何实现Kubernetes可观察性监测,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

成都创新互联公司始终坚持【策划先行,效果至上】的经营理念,通过多达十载累计超上千家客户的网站建设总结了一套系统有效的网络营销推广解决方案,现已广泛运用于各行各业的客户,其中包括:成都混凝土搅拌机等企业,备受客户赞扬。

我们将向您展示如何完成基本的Kubernetes可观察性任务:从运行在Kubernetes集群上的应用程序获得黄金指标或黄金信号。我们不需要修改任何代码,也不需要进行任何配置,只要安装Linkerd(一个开源的超轻服务网格)就可以做到这一点。我们将介绍什么是服务网格,术语可观察性是什么意思,以及这两者在Kubernetes上下文中是如何关联的。

用服务网格监控Kubernetes应用程序

如果你们刚刚适应了Kubernetes。恭喜你!但是现在你需要干什么?任何Kubernetes使用者者的第一个可观察性任务之一是监视,您需要知道什么时候出现了问题,以便您可以快速地修复它们。

Kubernetes可观察性是一个非常广泛的话题,网上有很多关于可观察性与监控、分布式跟踪与日志记录等之间的细微差别的讨论。在本文中,我们将重点讨论一个基本问题:在不更改任何代码的情况下,从运行在集群上的应用程序获得黄金指标或黄金信号。我们将安装一个Linkerd,一个开源的超轻量级服务网格。与大多数服务网格不同,Linkerd只需要在集群上安装几分钟,不需要配置。

虽然简单,但Linkerd包含了一个非常强大的度量管道。一旦安装完毕,它将通过观察集群上运行的所有组件之间的HTTP(或gRPC)和TCP通信,自动检测并报告成功率、流量级别和响应延迟。

linkd可以自动为服务报告度量标准通常被引用为服务的黄金度量标准。

 

什么是黄金度量标准?为什么它们很重要?

如果您已经知道黄金参数是什么,请跳过这一节!

黄金指标或黄金信号是您需要了解应用程序是否按预期启动和运行的首要指标。这些度量为您提供了有关服务运行状况的粗略信号,而不需要知道服务的实际功能。

Cindy Sridharan在她的关于监控和可观察性的博文中写道:当不直接驱动报警时,监控数据应该被优化,以提供系统整体健康状况的鸟瞰图。

谷歌SRE书定义的黄金指标为:

  • 延迟——一种衡量服务速度快慢的方法。它是服务请求所花费的时间,通常以百分比来度量。第99百分位延迟为5ms意味着99%的请求在5ms或更短的时间内得到服务。
  • 流量——让你知道某项服务有多忙或需求有多复杂。通常用每秒对服务的请求数来衡量。
  • 错误-请求失败的数量。通常与总流量相结合来生成一个成功率——成功请求与遇到错误请求的比率。
  • 饱和-衡量你的系统的负载

通过观察服务的流量,Linkerd可以简单地提供延迟、流量和错误的测量——乐观地说,Linkerd以成功率的形式提供了这些数据。(第四个指标,饱和度,在监控讨论中经常被忽略,因为它需要了解服务的内部情况,通常跟踪其他指标,如流量和延迟。)

有时这些指标也被称为服务的RED指标:

  • Rate——您的服务每秒正在处理的请求数。
  • Errors—每秒失败的请求数。
  • Duration——每个请求所花费时间的分布

不管你怎么称呼它们,Linkerd的美妙之处在于,它不仅记录这些指标的流量,而且汇总和报告它们,这样我们就可以轻松地使用它们。(我们将在下面看到。)这使我们能够监控我们的应用程序。一旦我们能够监控我们的应用程序,我们就可以在出错时收到报警;研究其长期性能;并对其可靠性和性能进行测试和改进。

 

黄金指标:最简单的方法

 

安装:访问Kubernetes集群并安装Linkerd CLI

我们假设您有一个正常运行的Kubernetes集群和一个指向它的kubectl命令。在本节中,我们将带您浏览linkd入门指南的缩写版本,以便在这个集群上安装Linkerd和一个演示应用程序(我们将获得最佳指标的应用程序)。

首先,安装Linkerd命令行(或者,直接从Linkerd release页面下载。):

curl -sL https://run.linkerd.io/install | sh
export PATH=$PATH:$HOME/.linkerd2/bin
 

验证Kubernetes集群是否能够处理linkd;安装Linkerd;并验证安装:

linkerd check --pre
linkerd install | kubectl apply -f -
linkerd check
 

最后,安装Emojivoto演示应用程序,这是我们希望获得黄金指标的应用程序。如果仔细观察下面的命令,您将看到我们实际上是在向应用程序添加linkerd(我们称之为注入),然后将应用程序部署到Kubernetes。(如果您想知道这是如何工作的,请查看我们的文档https://linkerd.io/2/tasks/adding-your-service/)。

curl -sL https://run.linkerd.io/emojivoto.yml \
| linkerd inject - \
| kubectl apply -f -
 

嗯,就是这样。这就是您需要的所有工具,您的应用程序,并能够访问您的黄金指标!现在让我们来看看他们。

 

在Grafana查看度量

想要看到所有这些有用的图表和仪表板吗?没有问题!运行linkd dashboard -show grafana并打开命令输出的链接。您将看到Linkerd的顶层仪表盘,其中包含它所收集的指标的总体和每个名称空间的细分。向下滚动到我们应用程序的命名空间(ns/emojivoto),观察以下图表:

如何实现Kubernetes可观察性监测

 

通过linkd CLI查看指标

我们还可以使用linkd stat命令查看应用程序的指标。

所有这些数据也可以在Linkerd's dashboard中找到,你可以通过运行Linkerd dashboard来访问:

如何实现Kubernetes可观察性监测

如何实现Kubernetes可观察性监测  

看看Grafana图表(或linkd仪表盘),你可以立即看到voting服务做得不是很好-它的成功率相当低!向我们的应用程序中添加黄金指标可以立即让我们看到应用程序中可能出现的问题。

真的这么简单吗?答案是肯定的!我们所需要做的就是安装Linkerd并将其注入到我们的应用程序中。在底层,当linkd被添加到一个服务时,它会自动检测与服务的pod之间的任何HTTP和gRPC调用。由于它能够解析这些协议,它可以记录这些调用的响应类和延迟,并将它们聚合在一起,在这种情况下,将它们合并到一个名为Prometheus的时间序列数据库的小型内部实例中。当您通过Linkerd的仪表板和CLI查看黄金指标时,Linkerd会从这个内部的Prometheus实例中获取它们,在不修改应用程序代码的情况下为您提供所有这些指标。

 

Linkerd还能做什么?

我们已经看到了如何使用Linkerd来获得黄金指标,这是获得系统可观察性的第一步,也就是说,获得复杂应用程序中正在发生的事情的高级视图。但指标只是个开始。当您继续您的监视和可观察性旅程时,您一定会遇到另外两个常用的工具:日志和分布式链路跟踪。

分布式跟踪涉及到检测应用程序,以便测量请求在服务中花费的时间长度。当我们的应用程序使用许多相互通信的微服务时,跟踪是一个很好的工具,可以用来调试缓慢的请求,并找出哪个服务是瓶颈。Linkerd可以帮助分布式跟踪,尽管一个服务网格在分布式跟踪方面做的不多。

类似于分布式跟踪,Linkerd也提供了一个强大的动态请求跟踪工具tap。tap命令类似于用于微服务的tcpdump:它允许您查看发送到或来自特定服务的实时请求(示例)。Tap是在生产中调试Kubernetes服务的强大工具。

最后,应用程序日志当然是开发人员在怀疑某个特定进程不正常时首先要做的事情之一。当运行一个服务网格时,有时候查看网格内部发生了什么是很有用的。虽然Linkerd不能为你提供应用程序日志,但Linkerd logs命令提供了一种简单的方法,至少可以查看Linkerd内部发生了什么。

关于如何实现Kubernetes可观察性监测问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


分享名称:如何实现Kubernetes可观察性监测
标题网址:http://myzitong.com/article/gpidos.html