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

2025-02-09 04:50

本文主要是介绍通过prometheus监控Tomcat运行状态的操作流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了...

Tomcat安装配置以及prometheus监控Tomcat

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

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

一. 安装并配置tomcat

1、安装tomcat

yum install tomcat tomcat-webapps -y

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

2、然后下载依赖包

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

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

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_co编程mmon/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/tjavascriptomcat_exporter_servlet-0.0.15.war

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

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

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

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

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自动解压

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

4、启动Tomcat

systemctl start tomcat.service

查看运行状态

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

5、访问tomcat的metrics

http://10.10.0.32:8080/metrics/

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

6、配置prometheus

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

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

重新加载prometheus配置文件

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

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

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

可以看到Tomcat相关指标

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

二. Tomcat常用指标与示例

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

1.Tomcat连接相关指标

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

最大连接数可以修改

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

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

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

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

重启tomcat,再看下

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

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

tomcat_connections_active_total / tomcat_connections_active_max * 100

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

2. Tomcat请求相关指标

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

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

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

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

案例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])

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

3.Tomcat会话相关指标

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

通过prometheus监控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 )python) * 100

4.Tomcat线程相关指标

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

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

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

默认是200

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

案例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 }}。"
android
  - 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、验证告警规则

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

3、导入Tomcat图形

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

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

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

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

以上就是通过prometheus监控Tomcat运行状态的操作流程的详细内容,更多关于prometheus监控Tomcat运行状态的资料请关注China编程(www.chinasem.cn)其它相关文章!

这篇关于通过prometheus监控Tomcat运行状态的操作流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1153355

相关文章

MySQL游标和触发器的操作流程

《MySQL游标和触发器的操作流程》本文介绍了MySQL中的游标和触发器的使用方法,游标可以对查询结果集进行逐行处理,而触发器则可以在数据表发生更改时自动执行预定义的操作,感兴趣的朋友跟随小编一起看看... 目录游标游标的操作流程1. 定义游标2.打开游标3.利用游标检索数据4.关闭游标例题触发器触发器的基

在C#中分离饼图的某个区域的操作指南

《在C#中分离饼图的某个区域的操作指南》在处理Excel饼图时,我们可能需要将饼图的各个部分分离出来,以使它们更加醒目,Spire.XLS提供了Series.DataFormat.Percent属性,... 目录引言如何设置饼图各分片之间分离宽度的代码示例:从整个饼图中分离单个分片的代码示例:引言在处理

使用Python实现局域网远程监控电脑屏幕的方法

《使用Python实现局域网远程监控电脑屏幕的方法》文章介绍了两种使用Python在局域网内实现远程监控电脑屏幕的方法,方法一使用mss和socket,方法二使用PyAutoGUI和Flask,每种方... 目录方法一:使用mss和socket实现屏幕共享服务端(被监控端)客户端(监控端)方法二:使用PyA

Python列表的创建与删除的操作指南

《Python列表的创建与删除的操作指南》列表(list)是Python中最常用、最灵活的内置数据结构之一,它支持动态扩容、混合类型、嵌套结构,几乎无处不在,但你真的会创建和删除列表吗,本文给大家介绍... 目录一、前言二、列表的创建方式1. 字面量语法(最常用)2. 使用list()构造器3. 列表推导式

Prometheus+cpolar如何在手机上也能监控服务器状态?

《Prometheus+cpolar如何在手机上也能监控服务器状态?》本文强调了通过Cpolar这一内网穿透工具,轻松突破Prometheus仅限于局域网访问的限制,实现外网随时随地访问监控数据,教你... 目录前言1.安装prometheus2.安装cpolar实现随时随地开发3.配置公网地址4.保留固定

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

SpringBoot的内嵌和外置tomcat的实现方式

《SpringBoot的内嵌和外置tomcat的实现方式》本文主要介绍了在SpringBoot中定制和修改Servlet容器的配置,包括内嵌式和外置式Servlet容器的配置方法,文中通过示例代码介绍... 目录1.内嵌如何定制和修改Servlet容器的相关配置注册Servlet三大组件Servlet注册详

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

MySQL基本表查询操作汇总之单表查询+多表操作大全

《MySQL基本表查询操作汇总之单表查询+多表操作大全》本文全面介绍了MySQL单表查询与多表操作的关键技术,包括基本语法、高级查询、表别名使用、多表连接及子查询等,并提供了丰富的实例,感兴趣的朋友跟... 目录一、单表查询整合(一)通用模版展示(二)举例说明(三)注意事项(四)Mapper简单举例简单查询