当前位置: 代码网 > 服务器>服务器>Linux > 通过prometheus监控Tomcat运行状态的操作流程

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

2025年02月09日 Linux 我要评论
tomcat安装配置以及prometheus监控tomcattomcat本身无法对外提供prometheus所兼容的metrics,因此需要借助第三方exporter来提供:tomcat-export

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运行状态的资料请关注代码网其它相关文章!

(0)

相关文章:

  • Linux部署jar包过程

    Linux部署jar包过程

    linux部署jar包部署jar包需要注意:linux和你jar的jdk中的版本一定要是一致的需要导入打包的插件,这样我们的jar包才是可运行的数据库的密码大概... [阅读全文]
  • 在Linux服务器上部署War项目教程

    在Linux服务器上部署War项目教程

    linux服务器上部署war项目1.将war包上传到linux服务器上可以使用ftp或sftp等工具。2.确认服务器上已经安装了java运行环境如果没有安装可以... [阅读全文]
  • Linux文件重定向&&文件缓冲区解读

    一、c文件接口stdin & stdout & stderrc默认会打开三个输入输出流,分别是stdin, stdout, stderr仔细观察发现,这三个流的类型…

    2025年02月08日 服务器
  • Linux编译器--gcc/g++使用方式

    一、预编译指令1.1预处理功能去掉注释头文件的展开条件编译宏替换1.2指令预处理指令是以#号开头的代码行gcc下使用:gcc -e code.c -o code.i 来生成可执行文…

    2025年02月08日 服务器
  • Linux环境变量&&进程地址空间详解

    一、初步认识环境变量1.1常见的环境变量path:linux系统下的指令命令的默认搜索路径home:用户登录shell的默认主工作目录shell:当前shell,它的值通常是/bi…

    2025年02月08日 服务器
  • Linux之进程状态&&进程优先级详解

    一、操作系统的进程状态1.1运行状态当一个进程准备就绪,获得了cpu资源,就会在cpu所维护的运行队列上等待cpu的调度一个进程在运行或者处于运行队列中,都叫做运行状态一个进程并不…

    2025年02月08日 服务器

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com