加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

Java Web应用服务器之一:Tomcat监控选型及实践

发布时间:2019-07-18 02:30:23 所属栏目:外闻 来源:智能运维
导读:副标题#e# 监控选型 Tomcat Manager和Psi-probe是不错的可视化监控工具,能够很好地查看Tomcat状态信息(比如单位时间请求数,线程状态等)。在生产环境中,随着Tomcat实例的不断增加,维护不同实例上的Manager控制台会显得有些繁琐,同时,为了与企业监控系
副标题[/!--empirenews.page--]

监控选型

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

Java Web应用服务器之一:Tomcat监控选型及实践

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

容器环境下Tomcat+Prometheus+Grafana简图如下:

Java Web应用服务器之一:Tomcat监控选型及实践

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

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

2、Tomcat启动时,JAVA_OPTS增加Javaagent和Tomcat config.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平均响应时间

流量

流量监控关注的是当前系统或应用的流量,以便更好地衡量服务的承载能力。针对Tomcat流量监控,我们需要关注Tomcat实例发送和接收的流量。

Java Web应用服务器之一:Tomcat监控选型及实践

图5:某Tomcat实例发送和接收的流量

饱和度

饱和度监控关注的是系统或应用对资源的利用率,强调最能影响服务状态的受限制的资源。

不同的系统或应用对饱和度监控的需求各不相同,但共性是在服务性能明显下降时,起决定性的状态指标。针对Tomcat饱和度监控,可以从堆内存、线程数、GC次数及耗时等方面出发,在告警发生前后,通过查看各个指标的变化曲线,快速定位问题原因。

Tomcat线程池

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读