带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(2)

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
性能测试 PTS,5000VUM额度
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(2)

带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(1)https://developer.aliyun.com/article/1377524


image.png

 

接下来介绍一下TraceMetrics的基本原理。

 

首先看一下Trace的原理,这里列了一个场景。一个HTTP请求进来,在最上面会过一个Tomcat的方法,StandarHostValve.invoke。进来之后会调一次数据库,在里面sleep了一秒,然后再往外发了一个http请求。

 

那么这个调用链路,我们怎么通过Trace技术用柱状图的形式,反映它的耗时情况呢?

 

我们会通过埋点的技术来实现,这种埋点技术可能是用户手动埋点,也有可能通过Java的agent技术字节码增强,也就是在用户运行时动态插入一些代码。我们会在每个方法执行的前后打上点,然后把整个方法执行的上下文记录下来,包括方法的执行耗时等等,这样就形成了上图右侧的粉色柱状图了。

 

此外,在sleep一秒的位置,还有一个绿色的柱状图。这个方法调用由于没有埋点,所以在整个Trace里是看不到的,相当于是一个监控的盲点。所以我们也无法知道它耗时在哪里,后面会详细介绍通过Profiling技术来解决这个问题,帮助我们定位调用慢、调用出错等问题。

 

接下来介绍一下Metrics的基本原理,Metrics目前的标准是基于Prometheus提出的单指标、多维度的指标模型,以及它提出的一些指标类型,比如CounterGaugeHistogramSummary。还有它提出的关键概念包括时间点、时间线,PromQL等等。

 

image.png 

 

我们在传统的web容器里做耗时埋点的时候,有一个很关键的点是,我们要把埋点的地方尽可能的提前,来保证用户的业务代码都能获取上下文。因为在一些开源的探针,比如我们现在Skywalking和OpenTelemetry的探针里,还有一些商业化的产品里,他们对Tomcat的埋点可能会去复用Tomcat的filter的技术。它会在Tomcat的filter链里加一个filter进去,在filter里面做一些耗时的统计。

 

但阿里云的商业化产品就会把这个埋点提前到StandarHostValve.invoke的地方,来保证在每一个用户的filter里都能有Trace的上下文,然后把Trace的上下关联到日志和指标里。

 

此外,在新型的web服务端技术里,这里主要指的是构建在Reactor-netty上,像SpringCloud Gateway、Flex这样的技术里面,埋点的复杂点在于,因为它是一个纯异步的框架,你很难在一个方法里准确的统计它的调用耗时。所以针对这种纯异步的框架,我们把创建一个span和关闭一个span的操作进行异步化了,来保证我们统计到的指标是准确的。

 

带你读《Apache Tomcat的云原生演进》——Web容器可观测最佳实践(3)https://developer.aliyun.com/article/1377521

相关文章
|
1月前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
27天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
131 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
1月前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
本文整理自2024云栖大会冯诗淳(花名:行疾)的演讲,介绍了阿里云容器服务团队在生产级可观测体系建设方面的实践。冯诗淳详细阐述了容器化架构带来的挑战及解决方案,强调了可观测性对于构建稳健运维体系的重要性。文中提到,阿里云作为亚洲唯一蝉联全球领导者的容器管理平台,其可观测能力在多项关键评测中表现优异,支持AI、容器网络、存储等多个场景的高级容器可观测能力。此外,还介绍了阿里云容器服务在多云管理、成本优化等方面的最新进展,以及即将推出的ACK AI助手2.0,旨在通过智能引擎和专家诊断经验,简化异常数据查找,缩短故障响应时间。
阿里云ACK容器服务生产级可观测体系建设实践
|
25天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
19天前
|
存储 人工智能 调度
容器服务:智算时代云原生操作系统及月之暗面Kimi、深势科技实践分享
容器技术已经发展成为云计算操作系统的关键组成部分,向下高效调度多样化异构算力,向上提供统一编程接口,支持多样化工作负载。阿里云容器服务在2024年巴黎奥运会中提供了稳定高效的云上支持,实现了子弹时间特效等创新应用。此外,容器技术还带来了弹性、普惠的计算能力升级,如每分钟创建1万Pod和秒级CPU资源热变配,以及针对大数据与AI应用的弹性临时盘和跨可用区云盘等高性能存储解决方案。智能运维方面,推出了即时弹性节点池、智能应用弹性策略和可信赖集群托管运维等功能,进一步简化了集群管理和优化了资源利用率。
|
17天前
|
监控 安全 Cloud Native
阿里云容器服务&云安全中心团队荣获信通院“云原生安全标杆案例”奖
2024年12月24日,阿里云容器服务团队与云安全中心团队获得中国信息通信研究院「云原生安全标杆案例」奖。
|
17天前
|
人工智能 运维 监控
容器服务Kubernetes场景下可观测体系生产级最佳实践
阿里云容器服务团队在2024年继续蝉联Gartner亚洲唯一全球领导者象限,其可观测体系是运维的核心能力之一。该体系涵盖重保运维、大规模集群稳定性、业务异常诊断等场景,特别是在AI和GPU场景下提供了全面的观测解决方案。通过Tracing、Metric和Log等技术,阿里云增强了对容器网络、存储及多集群架构的监控能力,帮助客户实现高效运维和成本优化。未来,结合AI助手,将进一步提升问题定位和解决效率,缩短MTTR,助力构建智能运维体系。
|
1月前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
1月前
|
人工智能 Kubernetes Cloud Native
阿里云容器服务,智算时代云原生操作系统
2024云栖大会,阿里巴巴研究员易立分享了阿里云容器服务的最新进展。容器技术已成为云原生操作系统的基石,支持多样化的应用场景,如自动驾驶、AI训练等。阿里云容器服务覆盖公共云、边缘云、IDC,提供统一的基础设施,助力客户实现数字化转型和技术创新。今年,阿里云在弹性计算、网络优化、存储解决方案等方面进行了多项重要升级,进一步提升了性能和可靠性。
|
1月前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器化到微服务
本文将带领读者踏上云原生的旅程,深入探讨容器化和微服务架构的概念、优势以及它们如何共同推动现代软件的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务应用,并解释相关的配置和操作。无论你是云原生新手还是希望深化理解,这篇文章都将为你提供有价值的见解和实操指南。

推荐镜像

更多