原文:Conduit 0.4.0: Where’s my traffic?
本周早些时候我们发布了 Conduit v0.4.0,这一版本在基于 Prometheus 的遥测系统方面,有了很大进步;同时还给微服务的除错提供了新的工具。
安装后的一分钟里,Conduit 给每个 Kubernetes 部署都提供了一个预配置的 Grafana Dashboard。这些 Dashboard 不只是成功率、请求量以及每服务延迟等常见指标,他还将每个指标按照依赖关系进行了分解。这样你就可以在不修改应用的情况下,轻松地回答“这个服务的流量是从哪里来的?”或者 “Foo 调用 Bar 的成功率如何”之类的问题了。
我的流量呢?
在一个微服务形态的应用中,运行中的服务之间的依赖关系是很重要的问题。每服务成功率固然重要,流入服务的请求来自何处同样是不可忽视的问题,更不必说依赖服务的故障情况了。通常这些问题都是最难回答的,但是现在我们有了 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
命令也应用到这些对象上,让 stat
和 tap
完美配合。我们可能还会逐步为 Conduit 加入更多命令,来增强 Conduit 的遥测能力,敬请期待!
文章来源于互联网:Conduit 0.4.0:流量都去哪了?