Java Web的Tomcat监控选型举例分析

介绍

本篇内容介绍了“Java Web的Tomcat监控选型举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

<强>监控选型

Tomcat,经理和Psi-probe是不错的可视化监控工具,能够很好地查看Tomcat状态信息(比如单位时间请求数,线程状态等)。在生产环境中,随着Tomcat实例的不断增加,维护不同实例上的经理控制台会显得有些繁琐,同时,为了与企业监控系统,运维仪表盘等结合,有必要选择兼容性和适配性更好的监控工具。

如今,企业微服务的流行和CI/CD的强需求性,要求我们的服务在易于开发和维护的同时,具有伸缩性强、快速交付等特点。在此环境下,Tomcat +普罗米修斯+ Grafana能够很好的与企业已有架构适配,并能够很好的与其他中间件服务监控整合到一起.Prometheus作为新一代的云原生监控系统,鼓励用户监控服务的内部状态,让用户可以获取服务和应用内部真正的运行状态。

容器环境下Tomcat +普罗米修斯+ Grafana简图如下:

 Java Web的Tomcat监控选型举例分析

在实际部署中,可以简单分为如下几个步骤:

1,下载jmx_prometheus_javaagent, (https://github.com/prometheus/jmx_exporter),若为容器环境,可将jmx_prometheus_javaagent与Tomcat一起打进运行镜像。

2, Tomcat启动时,JAVA_OPTS增加Javaagent和Tomcat配置。yaml  (https://github.com/prometheus/jmx_exporter/blob/master/example_configs/Tomcat.yml  )配置,例如:JAVA_OPTS=?javaagent:/var/tomcat/jmx_prometheus_javaagent-0.3.1.jar=port:/vat/tomcat/conf/config.xml”(port为实际端口)。

3、Prometheus添加Tomcat的job_name。

监控指标梳理

在《SRE:  Google运维解密》一书中指出,监控系统需要能够有效的支持白盒监控和黑盒监控。通过白盒监控能够了解其内部的实际运行状态,通过对监控指标的观察能够预判可能出现的问题,从而对潜在的不确定因素进行优化。而黑盒监控,常见的如HTTP探针,TCP探针等,可以在系统或者服务在发生故障时能够快速通知相关的人员进行处理。

监控的四个黄金指标可以在服务级别帮助我们更好地衡量终端用户体验、服务中断、业务影响等层面的问题。主要关注以下四种类型的指标:错误,延迟,流量以及饱和度。

通过对黑盒、白盒监控的理解,结合监控的四个黄金指标,针对Tomcat的重要监控指标,可以从以下几个方面进行考虑:

Java Web的Tomcat监控选型举例分析

监控实践

错误

错误监控关注的是当前应用或系统发生的错误请求。针对Tomcat错误监控,主要监控指标为Tomcat错误请求数及与请求总数之间的比例,这些多为显式的错误。关于隐式的错误(比如状态码响应200,实际业务流程却是失败的),通常需要根据业务场景的不同,在服务中添加钩子及业务逻辑监控来实现。

Java Web的Tomcat监控选型举例分析

图1:某Tomcat实例在1000+qps下请求数和错误数的比例

当然,我们也可以借助ELK等工具,对Tomcat上游代理或LB进行整体的错误状态码统计,方便我们更好的定位错误,以及在发生5xx错误时考虑如何“快速失败”,来减少错误对系统性能带来的影响。

Java Web的Tomcat监控选型举例分析

图2:通过Tomcat上游代理采集的状态码统计

延迟

延迟监控关注的是服务请求所需时间。针对Tomcat延迟监控,主要监控指标为Tomcat实例的Response  time。同时,我们也可以采用黑盒监控中的HTTP语义探测来采集Tomcat对应域名的全链路延迟,发送指定GET、POST、HEAD等请求,来匹配状态码及服务器的返回内容。

Java Web的Tomcat监控选型举例分析

图3:某产品线下多个Tomcat实例整体的response time汇总

Java Web的Tomcat监控选型举例分析

图4:通过Tomcat上游代理采集的平均请求时间和Tomcat平均响应时间

Java Web的Tomcat监控选型举例分析