Conduit 0.4.0:流量都去哪了?

原文:Conduit 0.4.0: Where’s my traffic?

本周早些时候我们发布了 Conduit v0.4.0,这一版本在基于 Prometheus 的遥测系统方面,有了很大进步;同时还给微服务的除错提供了新的工具。

安装后的一分钟里,Conduit 给每个 Kubernetes 部署都提供了一个预配置的 Grafana Dashboard。这些 Dashboard 不只是成功率、请求量以及每服务延迟等常见指标,他还将每个指标按照依赖关系进行了分解。这样你就可以在不修改应用的情况下,轻松地回答“这个服务的流量是从哪里来的?”或者 “Foo 调用 Bar 的成功率如何”之类的问题了。

conduit-dashboard-deploy/web

我的流量呢?

在一个微服务形态的应用中,运行中的服务之间的依赖关系是很重要的问题。每服务成功率固然重要,流入服务的请求来自何处同样是不可忽视的问题,更不必说依赖服务的故障情况了。通常这些问题都是最难回答的,但是现在我们有了 Conduit 的帮助,就有机会对这些问题进行简化了。

为了达成这一目标,0.4.0 中我们把 Conduit 的遥测系统中指标的获取改为拉取方式来实现。这一过程中我们还把 Conduit 的 Rust 代理进行了改进,他的指标中描述了所有请求的源、目的以及健康状况。拉取方式获取指标,降低了代理的复杂度,更加贴近 Prometheus 的生态情况。

这样,Conduit 的遥测系统现在非常稳定。能深入到 Kubernetes 中任何两个 Deployment、Pod 或者命名空间之间的请求频率、成功率以及延迟等指标。还可以使用 Prometheus 进行各种查询。当然了,我们还把所有的这些集成到了 CLI 工具中,微服务中的 “TOP” 命令,想过么?

动手环节

我们现在来运行一个简单的例子(要看完整的安装介绍,请参考 Conduit 起步指南)。

首先安装 Conduit CLI:

curl https://run.conduit.io/install | sh

然后在 Kubernetes 中安装 Conduit:

conduit install | kubectl apply -f -

最后,安装 emojivoto 演示应用,并且将其加入 Conduit Mesh:

curl https://raw.githubusercontent.com/runconduit/conduit-examples/master/emojivoto/emojivoto.yml | conduit inject - | kubectl apply -f -

演示应用中包含了一个 vote-bot 服务,不断地在产生流量。这个基于 AI 的机器人在为他最喜欢的表情进行投票,他会变得越来越精明。所以为了安全起见,我们建议你不要让他长期运行。

让我们看看如何用 Conduit 在演示应用中获取流量走向:

先看看 Web 服务(确切的说是 Web Deployment)在做什么:

$ conduit stat -n emojivoto deployment web
NAME  MESHED  SUCCESS     RPS    LATENCY_P50  LATENCY_P95  LATENCY_P99
web      1/1   90.00%  2.0rps            2ms          4ms          9ms

voting 服务只有一个调用者,就是 web 服务。所以通过跟踪 Web 的依赖项,我们有了第一个需要监测的目标:voting 服务在被 web 服务调用的时候,有 83% 的成功率,这样我们就可以看看日志、跟踪或进行其他深入观察。

这只是 Conduit 众多功能中的一个例子。如果想要进一步探索,可以看看所有命名空间的成功率;各个命名空间以及每个 Deployment 调用某一命名空间的成功率;甚至是 Conduit 组件自身的成功率。

https://youtu.be/R5UDKgX72tg 还有我们录制的一个关于 Conduit 0.4 的视频。

下一步

我们的未来版本,会把指标和遥测能力扩展到其他的 Kubernetes 对象,例如 Pod 和 RS。另外我们还会把 conduit tap 命令也应用到这些对象上,让 stattap 完美配合。我们可能还会逐步为 Conduit 加入更多命令,来增强 Conduit 的遥测能力,敬请期待!

Avatar
崔秀龙

简单,是大师的责任;我们凡夫俗子,能做到清楚就很不容易了。

comments powered by Disqus
下一页
上一页

相关