当前位置: 首页 > news >正文

Tomcat全方位监控实施方案指南

#作者:程宏斌

文章目录

  • 一.二进制部署
    • 1、安装包信息
    • 2、新建配置文件
      • 2.1 配置config.yaml文件
      • 2.2 上传jar包
    • 3、修改配置
      • 3.1 备份
      • 3.2 修改bin目录下的startup.sh文件
    • 4、重启tomcat
    • 5、访问测试
  • 二.docker部署
    • 1、临时方案
      • 1.1、重新启动容器
      • 1.2、创建配置文件
      • 1.3、修改startup.sh并覆盖
      • 1.4、重启tomcat容器
      • 1.5、访问测试
    • 2、永久方案
      • 2.1、重新构建镜像
      • 2.2、修改启动脚本
      • 2.3、重启容器
      • 2.4访问测试

注:
如果一台服务器运行多个tomcat进程,需要监控多个tomcat进程,以下操作在不同的tomcat目录下进行配置,正常配置多个jmx_prometheus_javaagent修改不同端口即可

1、部署插件需要重启中间件,会影响服务
2、启动插件最少需要500M内存,正常的需求使用内存不少于1G,不少于1颗逻辑CPU

网络策略开通:
tomacat插件会暴露一个端口供prometheus访问(文档中提供的开通30018端口,如生产不可以使用30018端口可以再配置文件中修改)

prometheus主机----> 主机ip:端口

一.二进制部署

1、安装包信息

环境:

版本:jmx_prometheus_javaagent-0.3.1.jar 
下载地址:
https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.1/jmx_prometheus_javaagent-0.3.1.jar

2、新建配置文件

2.1 配置config.yaml文件

在服务器上 tomcat 的bin目录下创建config.yaml文件

---
lowercaseOutputLabelNames: true
lowercaseOutputName: true
whitelistObjectNames: ["java.lang:type=OperatingSystem"]
blacklistObjectNames: []
rules:- pattern: 'java.lang<type=OperatingSystem><>(committed_virtual_memory|free_physical_memory|free_swap_space|total_physical_memory|total_swap_space)_size:'name: os_$1_bytestype: GAUGEattrNameSnakeCase: true- pattern: 'java.lang<type=OperatingSystem><>((?!process_cpu_time)\w+):'name: os_$1type: GAUGEattrNameSnakeCase: true

2.2 上传jar包

将下载好的jar包上传到服务器上 tomcat 的bin 目录下
bin/jmx_prometheus_javaagent-0.3.1.jar

3、修改配置

请先检查端口是否冲突,如冲突可通过修改JAVA_OPTS参数的30018的选项来使用其他端口

3.1 备份

cd 服务器上 tomcat 的bin 目录下
mv startup.sh startup.sh.bak

3.2 修改bin目录下的startup.sh文件

(如果之前是在startup.sh文件添加的,需要去掉“-javaagent:/root/tomcat/apache-tomcat/bin/jmx_prometheus_javaagent-0.3.1.jar=30018:/root/tomcat/apache-tomcat/bin/config.yaml”部分)
在exec “ P R G D I R " / " PRGDIR"/" PRGDIR"/"EXECUTABLE” start "$@"之前添加标红的jar包和config.yaml路径

export JAVA_OPTS="$JAVA_OPTS -javaagent:/root/tomcat/apache-tomcat/bin/jmx_prometheus_javaagent-0.3.1.jar=30018:/root/tomcat/apache-tomcat/bin/config.yaml"
exec "$PRGDIR"/"$EXECUTABLE" start "$@"

4、重启tomcat

根据实际环境重启tomcat

5、访问测试

访问服务器上的30018端口

在这里插入图片描述

二.docker部署

安装包信息
环境:

版本:jmx_prometheus_javaagent-0.3.1.jar
下载地址:
https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.1/jmx_prometheus_javaagent-0.3.1.jar

docker运行的tomcat监控方案分为两种:
一种临时方案,就是把所需要的文件以及插件全部cp到容器里的形式来进行监控指标采集。(或者是使用-v参数挂载进去)
另外一种方案为永久方案,需要重新构建tomcat镜像,就是把所需要的文件以及插件全部通过dockerfile构建到镜像里。

1、临时方案

1.1、重新启动容器

需要docker暴露端口供指标访问,所以需要提前确认主机的30018是否占用,如果占有采用其他端口

  1. 关闭之前的tomcat(确认完之前的启动命令,再rm)
    docker stop tomcat
    docker rm tomcat
  2. 重启dcoeker增加端口映射(只是在之前启动命令中加-p选项映射新的端口即可)
    例如:docker run -d -p 8080:8080 -p 30018:30018 --name tomcat tomcat:test 。。。。

1.2、创建配置文件

命名config.yaml,可以完全复制

lowercaseOutputLabelNames: true
lowercaseOutputName: true
whitelistObjectNames: ["java.lang:type=OperatingSystem"]
blacklistObjectNames: []
rules:- pattern: 'java.lang<type=OperatingSystem><>(committed_virtual_memory|free_physical_memory|free_swap_space|total_physical_memory|total_swap_space)_size:'name: os_$1_bytestype: GAUGEattrNameSnakeCase: true- pattern: 'java.lang<type=OperatingSystem><>((?!process_cpu_time)\w+):'name: os_$1type: GAUGEattrNameSnakeCase: truedocker cp config.yaml  tomcat:/usr/local/tomcat/bin
docker cp jmx_prometheus_javaagent-0.3.1.jar  tomcat:/usr/local/tomcat/bin

1.3、修改startup.sh并覆盖

进入容器里面修改

1.3.1 备份
cd 容器 tomcat 的bin 目录下
mv startup.sh startup.sh.bak

1.3.2 修改bin目录下的startup.sh文件(如果之前是在startup.sh文件添加的,需要去掉“-javaagent:/root/tomcat/apache-tomcat/bin/jmx_prometheus_javaagent-0.3.1.jar=30018:/root/tomcat/apache-tomcat/bin/config.yaml”部分)

在exec "$PRGDIR"/"$EXECUTABLE" start "$@"之前添加标红的jar包和config.yaml路径
export JAVA_OPTS="$JAVA_OPTS -javaagent:/root/tomcat/apache-tomcat/bin/jmx_prometheus_javaagent-0.3.1.jar=30018:/root/tomcat/apache-tomcat/bin/config.yaml"
exec "$PRGDIR"/"$EXECUTABLE" start "$@"

1.4、重启tomcat容器

docker restart tomcat

1.5、访问测试

访问服务器上的30018端口

在这里插入图片描述

2、永久方案

2.1、重新构建镜像

修改之前构建tomcat镜像的Dockerfile文件,把以下内容添加至Dockerfile中,重新构建镜像
/usr/local/tomcat/bin修改为之前tomcat镜像的bin目录

2.2、修改启动脚本

修改bin目录下的startup.sh文件(如果之前是在startup.sh文件添加的,需要去掉“-javaagent:/root/tomcat/apache-tomcat/bin/jmx_prometheus_javaagent-0.3.1.jar=30018:/root/tomcat/apache-tomcat/bin/config.yaml”部分)

在exec "$PRGDIR"/"$EXECUTABLE" start "$@"之前添加标红的jar包和config.yaml路径export JAVA_OPTS="$JAVA_OPTS -javaagent:/root/tomcat/apache-tomcat/bin/jmx_prometheus_javaagent-0.3.1.jar=30018:/root/tomcat/apache-tomcat/bin/config.yaml"
exec "$PRGDIR"/"$EXECUTABLE" start "$@"

2.3、重启容器

启动命令指定的镜像修改为新构建的tomcat镜像,其他参数不变

2.4访问测试

访问服务器上的30018端口
在这里插入图片描述
备注:
如果需要给jmx_prometheus_javaagent 监控的JMX指标暴露页面添加用户名和密码认证,不能直接在 jmx_prometheus_javaagent 配置中实现,因为该Java agent主要用于收集和导出JMX指标,并不涉及认证层面的配置。要为监控页面添加安全认证,你需要在前端代理或者网关层面设置认证,比如使用Nginx、Apache HTTP Server或者Spring Boot的Security功能等。

http://www.xdnf.cn/news/903853.html

相关文章:

  • 撰写脚本,通过发布/joint_states话题改变机器人在Rviz中的关节角度
  • HakcMyVM -TheWall
  • 初识AI Agent
  • 面向开发者的提示词工程④——文本推断(Inferring)
  • 数学建模期末速成 聚类分析与判别分析
  • Caliper 配置文件解析:fisco-bcos.json
  • 【计算机组成原理 第5版】白、戴编著 第六章 总线系统 课后题总结
  • 大模型安全测试报告:千问、GPT 全系列、豆包、Claude 表现优异,DeepSeek、Grok-3 与 Kimi 存在安全隐患
  • LabVIEW工业级多任务实时测控系统
  • ComfyUI 文生图教程,进行第一次的图片生成
  • 连续小波变换(Continuous Wavelet Transform, CWT)
  • 【HarmonyOS 5】出行导航开发实践介绍以及详细案例
  • Spring Boot实现接口时间戳鉴权
  • ABAP设计模式之---“简单设计原则(Simple Design)”
  • Windows无限期暂停更新
  • 模板方法模式:优雅封装不变,灵活扩展可变
  • web3-基于贝尔曼福特算法(Bellman-Ford )与 SMT 的 Web3 DeFi 套利策略研究
  • 贝叶斯深度学习!华科大《Nat. Commun.》发表BNN重大突破!
  • Science Robotics:UCLA 贺曦敏团队综述自主软体机器人
  • dexcap升级版之DexWild——面向户外环境的灵巧手交互策略:人类和机器人演示协同训练(人类直接带上动捕手套采集数据)
  • 【Linux 学习计划】-- 简易版shell编写
  • 【大模型LLM学习】Flash-Attention的学习记录
  • 阿里140 补环境日志
  • 华为 “一底双长焦” 专利公布,引领移动影像新变革
  • Caliper 负载(Workload)详细解析
  • 【NLP中向量化方式】序号化,亚编码,词袋法等
  • MySQL数据库基础(二)———数据表管理
  • 安卓基础(生成APK)
  • React 第五十六节 Router 中useSubmit的使用详解及注意事项
  • next,react封装axios,http请求