通过prometheus监控Tomcat运行状态的操作流程

 更新时间:2025年02月08日 08:56:15   作者:景天科技苑  
文章介绍了如何安装和配置Tomcat,并使用Prometheus和Tomcat Exporter来监控Tomcat的运行状态,文章详细讲解了Tomcat的常用指标,如连接、请求、会话和线程指标,并提供了具体的计算方法和示例,需要的朋友可以参考下

Tomcat安装配置以及prometheus监控Tomcat

Tomcat本身无法对外提供Prometheus所兼容的Metrics,因此需要借助第三方exporter来提供:tomcat-exporter
https://github.com/nlighten/tomcat_exporter

在这里插入图片描述

一. 安装并配置tomcat

1、安装tomcat

yum install tomcat tomcat-webapps -y

在这里插入图片描述

2、然后下载依赖包

我们可以看到官方介绍,需要很多依赖包

在这里插入图片描述

wget https://search.maven.org/remotecontent?filepath=io/prometheus/simpleclient/0.12.0/simpleclient-0.12.0.jar
wget https://search.maven.org/remotecontent?filepath=io/prometheus/simpleclient_common/0.12.0/simpleclient_common-0.12.0.jar
wget https://search.maven.org/remotecontent?filepath=io/prometheus/simpleclient_hotspot/0.12.0/simpleclient_hotspot-0.12.0.jar
wget https://search.maven.org/remotecontent?filepath=io/prometheus/simpleclient_servlet/0.12.0/simpleclient_servlet-0.12.0.jar
wget https://search.maven.org/remotecontent?filepath=io/prometheus/simpleclient_servlet_common/0.12.0/simpleclient_servlet_common-0.12.0.jar
wget https://search.maven.org/remotecontent?filepath=nl/nlighten/tomcat_exporter_client/0.0.15/tomcat_exporter_client-0.0.15.jar
wget https://search.maven.org/remotecontent?filepath=nl/nlighten/tomcat_exporter_servlet/0.0.15/tomcat_exporter_servlet-0.0.15.war

当然也可以一次性全部下载

git clone https://github.com/littlefun91/tomcat-exporter.git

在这里插入图片描述

在这里插入图片描述

3、将jar包和war包分别拷贝至对应的目录下

[root@jingtian03 tomcat_exporter ]#cp *.jar /usr/share/tomcat/lib/
[root@jingtian03 tomcat_exporter ]#cp *.war /usr/share/tomcat/webapps/

启动后,metrics.war自动解压

在这里插入图片描述

4、启动Tomcat

systemctl start tomcat.service

查看运行状态

在这里插入图片描述

5、访问tomcat的metrics

http://10.10.0.32:8080/metrics/

在这里插入图片描述

6、配置prometheus

编辑prometheus配置文件,将Tomcat纳入监控

  - job_name: "tomcat"
    static_configs:
      - targets: ["jingtian03:8080"]

重新加载prometheus配置文件

curl -X POST http://localhost:9090/-/reload

检查Prometheus的Status->Targets页面,验证Tomcat是否已经成功纳入监控中

在这里插入图片描述

可以看到Tomcat相关指标

在这里插入图片描述

二. Tomcat常用指标与示例

对于 Tomcat,我们通常会使用RED 方法,监控请求速率(Rate)、请求失败数(Errors)、请求延迟(Duration)来评估当前服务的质量。

1.Tomcat连接相关指标

在这里插入图片描述

最大连接数可以修改

在这里插入图片描述

在/usr/share/tomcat/conf/server.xml中修改

在这里插入图片描述

在这里插入图片描述

重启tomcat,再看下

在这里插入图片描述

案例:计算Tomcat的最大活动连接数的饱和度,计算公式:当前活跃连接数/ 最大活跃连接数 * 100

tomcat_connections_active_total / tomcat_connections_active_max * 100

在这里插入图片描述

2. Tomcat请求相关指标

在这里插入图片描述

在这里插入图片描述

tomcat_requestprocessor_time_seconds Tomcat服务器处理请求所花费的总时间(单位是秒)虽然显示是gauge类型指标,但它的值却是不断累加的

在这里插入图片描述

案例1:计算Tomcat最近5分钟,Http请求的错误率占比Http请求总数的比率。计算公式: 每5分钟的错误请求数 / 每5分钟的总请求数 * 100

rate(tomcat_requestprocessor_error_count_total[5m]) / rate(tomcat_requestprocessor_request_count_total[5m]) * 100

案例2:计算Tomcat最近5分钟,处理每个请求所需要花费的时间。
这个本来标注的是gauge类型的数据,但是其值是一直在增大的,因此可以使用irate()来求最近5分钟内,每个请求所花费的时间

irate(tomcat_requestprocessor_time_seconds[5m])

在这里插入图片描述

3.Tomcat会话相关指标

在这里插入图片描述

在这里插入图片描述

案例1:计算Tomcat创建会话的速率。

sum (rate(tomcat_session_created_total[5m])) by (instance,job,host)

案例2:计算被拒绝创建的会话占总创建会话的比率。计算公式:( 拒绝的会话数 / (创建的会话数 + 拒绝会话数) * 100 )

(tomcat_session_rejected_total / ( tomcat_session_created_total + tomcat_session_rejected_total )) * 100

4.Tomcat线程相关指标

在这里插入图片描述

允许的最大线程数,也是可以配置的

在这里插入图片描述

默认是200

在这里插入图片描述

案例1:计算Tomcat活跃的请求线程数占总请求的线程数比率。计算公式:当前活跃线程数 / 最大的线程数 * 100

(tomcat_threads_active_total / tomcat_threads_max) * 100

三. Tomcat告警规则文件

1、具体告警规则示例文件(可以根据公司实际情况进行调整)

cat /etc/prometheus/rules/tomcat_rules.yml
groups:
- name: tomcat告警规则
  rules:
  - alert: Tomcat活跃连接数过高
    expr: tomcat_connections_active_total / tomcat_connections_active_max* 100 >=80
    for: 1m
    labels:
      severity: warning
    annotations:
      summary: "Tomcat服务器活跃连接数过高, 实例:{{ $labels.instance }}"
      description:
        Tomcat最大连接数是 {{ printf `tomcat_connections_active_max{instance="%s",job="%s",name="%s"}` $labels.instance $labels.job $labels.name | query | first | value }} Tomcat目前连接数是 {{ printf `tomcat_connections_active_total{instance="%s",job="%s",name="%s"}` $labels.instance $labels.job $labels.name | query | first | value }} Tomcat活跃连接数已超过最大活跃连接数的80%, 当前值为 {{ $value }}%
  - alert: Tomcat处理请求超过5秒
    expr: rate(tomcat_requestprocessor_time_seconds[5m]) > 5
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "Tomcat处理请求时间过长, 实例:{{ $labels.instance }}"
      description: "Tomcat在过去5分钟的平均处理请求时间超过5秒,当前值 {{ $value}}。"
  - alert: "Tomcat会话拒绝率超过20%"
    expr: (tomcat_session_rejected_total / (tomcat_session_created_total +tomcat_session_rejected_total)) * 100 > 20
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "Tomcat会话拒绝率过高, 实例:{{ $labels.instance }}"
      description: "Tomcat在Host:{{ $labels.host }} 的 {{ $labels.context}} 的上下文中的会话拒绝率超过20%,当前值 {{ $value }}。"

  - alert: "Tomcat线程使用率过高"
    expr: (tomcat_threads_active_total / tomcat_threads_max) * 100 > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "Tomcat线程使⽤率过⾼, 实例:{{ $labels.instance }}"
      description: Tmcat最大线程数是 {{ printf `tomcat_threads_max{instance="%s",job="%s",name="%s"}` $labels.instance $labels.job $labels.name | query | first| value }} Tomcat目前线程数是 {{ printf `tomcat_threads_active_total{instance="%s",job="%s",name="%s"}` $labels.instance $labels.job $labels.name | query | first | value }} Tomcat线程数已超过最大活跃连接数的80%, 当前值为 {{ $value }}%

2、验证告警规则

在这里插入图片描述

3、导入Tomcat图形

1、下载对应的dashboard
https://github.com/nlighten/tomcat_exporter/blob/master/dashboard/example.json
下载下来导入

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

以上就是通过prometheus监控Tomcat运行状态的操作流程的详细内容,更多关于prometheus监控Tomcat运行状态的资料请关注脚本之家其它相关文章!

相关文章

  • Tomcat多实例与负载均衡示例详解

    Tomcat多实例与负载均衡示例详解

    这篇文章主要介绍了Tomcat多实例与负载均衡,在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境,具体内容详情跟随小编一起看看吧
    2022-04-04
  • 一文详解Tomcat的简介与安装过程

    一文详解Tomcat的简介与安装过程

    Tomcat是一个流行的开源Web应用服务器,用于解析JSP程序,安装步骤包括下载并安装JDK,然后下载并解压Tomcat,最后启动Tomcat服务器,启动后,可以通过浏览器访问Tomcat的默认页面来验证安装是否成功,下面通过本文给大家介绍Tomcat的简介与安装过程,感兴趣的朋友一起看看吧
    2026-01-01
  • Tomcat配置虚拟主机的实现示例

    Tomcat配置虚拟主机的实现示例

    在Tomcat中配置虚拟主机允许你通过不同的域名或IP地址访问同一台服务器上的不同Web应用,这通常通过编辑Tomcat的配置文件server.xml来实现,本文就来介绍一下,感兴趣的可以了解一下
    2024-11-11
  • 腾讯云Ubuntu14.04安装Tomcat8教程

    腾讯云Ubuntu14.04安装Tomcat8教程

    本篇文章主要介绍了腾讯云Ubuntu14.04安装Tomcat8教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • tomcat服务安装步骤及详细配置实战教程

    tomcat服务安装步骤及详细配置实战教程

    Tomcat是由Apache开发的一个开源Java WEB应用服务器,下面这篇文章主要给大家介绍了关于tomcat服务安装步骤及详细配置实战教程,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Tomcat中redirectPort的作用

    Tomcat中redirectPort的作用

    这篇文章主要介绍了Tomcat中redirectPort的作用,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • Tomcat报404问题的解决方案大全

    Tomcat报404问题的解决方案大全

    Tomcat报错404通常表示请求的资源未找到,可能原因包括配置错误、文件或目录不存在、URL拼写错误、重定向设置不当、过滤器或拦截器影响以及应用程序部署问题,本文给大家介绍了Tomcat报404问题的解决方案大全,需要的朋友可以参考下
    2026-03-03
  • Tomcat 请求资源[/XXX/]不可用问题的解决方法

    Tomcat 请求资源[/XXX/]不可用问题的解决方法

    Tomcat 请求的资源[/XXX/]不可用问题,通过正确路径访问(运行代码时候自动打开浏览器访问的路径),和错误路径访问,它的表现是不一样的,本文就来介绍一下解决方法
    2023-11-11
  • Tomcat中实现Session小结

    Tomcat中实现Session小结

    本篇文章主要介绍了Tomcat中实现Session小结 ,Session的主要目的就是为了弥补Http的无状态特性。简单的说,就是服务器可以利用session存储客户端在同一个会话期间的一些操作记录。
    2017-01-01
  • 解析Tomcat的启动脚本--catalina.bat

    解析Tomcat的启动脚本--catalina.bat

    本文主要对Tomcat的三个最重要的启动脚本之一--catalina.bat脚本做了详细分析,具有很好的参考价值,需要的朋友可以看下
    2016-12-12

最新评论