作者:The Consul Team
译者:张成
审校:宋净超
原文链接:https://www.servicemesher.com/blog/layer-7-observability-with-consul-service-mesh/
编者按:Consul团队写了一篇易懂、又有实操的如何在Service Mesh中,实现服务的可观察性的文章。即使没有太多基础,也能比较容易的看懂并了解service mesh中,如何实现服务的度量。
这是系列博客的第二篇文章,重点介绍Consul服务网格中的新功能。
简介
您之前可能已经听过“可观察性(Observability)”一词,但它实际上意味着什么?它只是监控重新品牌,还是更多的可观察性?我们正在发布一系列博客文章,讨论服务网格的核心用例。在本博客中,我们将详细介绍可观察性以及如何启用最近Consul 1.5发布中包含的Consul Connect的新L7可观察性功能。
首先,让我们重新审视一个熟悉的概念:监控。
监控
监控意味着使用内部或外部工具检测应用程序和系统,以确定其状态。
例如,您可能有一个外部运行状况检查,用于探测应用程序的状态或确定其当前的资源消耗。您可能还有内部统计信息,用于报告特定代码块的性能,或执行某个数据库事务所需的时间。
可观察性
可观察性来自工程和控制理论的世界。控制理论指出可观察性本身就是一种描述“从外部产出的知识中推断出系统内部状态的程度”的措施。与监视哪些是你所做的相比,可观察性是系统的属性。如果外部输出,日志记录,度量,跟踪,健康检查等允许您了解其内部状态,则可以观察系统。
可观察性对于频繁发布的现代分布式应用程序尤其重要。与通过进程内调用进行通信的单片体系结构相比,微服务体系结构在服务交互期间会出现更多故障,因为这些调用发生在可能不可靠的网络上。随着为测试创建逼真的类似生产的环境变得越来越困难,在客户开始之前检测生产中的问题变得更加重要。这些服务调用的视图可帮助团队及早发现故障,跟踪故障并设计弹性。
借助模块化和可独立部署的(微)服务,很难实现对这些服务的可视性。单个用户请求可以流经多个服务,每个服务由不同的团队独立开发和部署。由于无法预测系统中可能发生的每个潜在故障或问题,因此您需要构建一旦部署后易于调试的系统。对网络的了解对于了解这些高度分布式系统的流量和性能至关重要。
服务网格
服务网格是一种网络基础设施,它利用“边车”代理进行微服务部署。由于边车代理存在于每个网络跃点,因此它捕获上游和下游通信。因此,服务网格提供了对所有服务的外部性能的完全可见性。
采用服务网格的一个主要好处是,边车代理队伍可以完全了解所有服务流量,并且可以以一致的方式公开指标,而不管不同的编程语言和框架。应用程序仍需要进行检测,以便深入了解内部应用程序性能。
控制平面
服务网格传统上由两个主要组件构成:控制平面和数据平面。控制平面为网格中的所有正在运行的数据平面提供策略和配置。数据平面通常是本地代理,作为应用程序的边车运行。数据平面根据控制平面中的策略和服务图终止所有TLS连接和托管授权。Consul构成服务网格的控制平面,简化了边车代理的配置,以实现安全的流量通信和度量收集。Consul旨在支持各种代理作为sidecars,并且目前已经为Envoy提供了一流的支持,因为它具有轻量级的占用空间和可观察性支持。
![Envoy sidecar proxy with its upstream services 640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/8d8c8019a351fdec5fa83d8b738c0587.jpeg)