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

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
云原生网关 MSE Higress,422元/月
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 带你读《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

相关文章
|
7月前
|
Java 应用服务中间件 Apache
Maven程序 tomcat插件安装与web工程启动
Maven程序 tomcat插件安装与web工程启动
78 0
|
5月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
66 1
|
5月前
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
147 0
|
5月前
|
Ubuntu Java 应用服务中间件
如何通过 Apt-Get 在 Ubuntu 14.04 上安装 Apache Tomcat 7
如何通过 Apt-Get 在 Ubuntu 14.04 上安装 Apache Tomcat 7
110 0
|
3月前
apache+tomcat配置多站点集群的方法
apache+tomcat配置多站点集群的方法
42 4
|
3月前
|
Java 应用服务中间件 Apache
浅谈Tomcat和其他WEB容器的区别
Tomcat是一款轻量级的免费开源Web应用服务器,常用于中小型系统及并发访问量适中的场景,尤其适合开发和调试JSP程序。它不仅能处理HTML页面,还充当Servlet和JSP容器。相比之下,物理服务器是指具备处理器、硬盘等硬件设施的服务器,如云服务器,其设计目标是在处理能力、稳定性和安全性等方面提供高标准服务。简言之,Tomcat专注于运行Java应用,而物理服务器则提供基础计算资源。
|
5月前
|
Java 应用服务中间件 Apache
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
本文介绍了在IntelliJ IDEA中修改Web项目访问路径的步骤,包括修改项目、模块、Artifacts的配置,编辑Tomcat服务器设置,以及解决Apache Tomcat控制台中文乱码问题的方法。
277 0
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
|
5月前
|
jenkins 持续交付 开发工具
"引爆效率革命!Docker+Jenkins+GIT+Tomcat:解锁持续集成魔法,一键部署Java Web应用的梦幻之旅!"
【8月更文挑战第9天】随着软件开发复杂度的增加,自动化变得至关重要。本文通过实例展示如何结合Docker、Jenkins、Git与Tomcat建立高效的持续集成(CI)流程。Docker确保应用环境一致性;Jenkins自动化处理构建、测试和部署;Git管理源代码版本;Tomcat部署Web应用。在Jenkins中配置Git插件并设置项目,集成Docker构建Tomcat应用镜像并运行容器。此外,通过自动化测试、代码质量检查、环境隔离和日志监控确保CI流程顺畅,从而显著提高开发效率和软件质量。
93 3
|
4月前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
59 0
|
5月前
|
Kubernetes 安全 JavaScript
Docker 与 Podman:探索用于现代 Web 开发的容器技术
在软件开发中,Docker 和 Podman 作为主流容器化技术,各具特色。本文深入对比两者优缺点,探讨其实用场景与部署Web应用的最佳实践。Docker 凭借成熟生态和跨平台能力引领潮流;Podman 以无守护进程架构提升安全与效率。通过具体示例展示如何构建和运行Node.js与Angular应用,帮助读者理解核心命令与配置要点。无论是在开发环境还是生产部署,选择合适的工具能显著增强应用的安全性和稳定性。
378 0

推荐镜像

更多