【运维监控】Prometheus+grafana监控tomcat运行情况

news2024/11/16 7:23:52
  • 运维监控系列文章入口:【运维监控】系列文章汇总索引

文章目录

  • 一、prometheus
  • 二、grafana
  • 三、tomcat与jmx_exporter配置
    • 1、下载jmx_exporter
    • 2、部署jmx_exporter
    • 3、添加tomcat的配置信息
    • 4、修改tomcat的启动文件
    • 5、重启tomcat及验证
    • 6、其他
  • 四、集成prometheus与grafana监控tomcat
    • 1、配置prometheus
    • 2、导入grafana模板
    • 3、验证


  • 本示例通过jmx_exporter收集tomcat的运行情况,将数据收集到prometheus中,然后通过grafana的dashboard导入模板进行可视化。
  • 本示例分为四个部分,即prometheus、grafana部署、tomcat与jmx_exporter配置和最后的集成。
  • 说明:jmx_exporter需要与tomcat在同一台机器上部署,这个好理解,因为需要通过jmx代理运行tomcat服务。

关于java应用的监控本系列有文章如下:
【运维监控】influxdb 2.0+telegraf 监控tomcat 8.5运行情况
【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况
【运维监控】Prometheus+grafana监控tomcat运行情况
【运维监控】Prometheus+grafana监控spring boot 3运行情况

一、prometheus

参考:【运维监控】prometheus+node exporter+grafana 监控linux机器运行情况关于prometheus的部署。

二、grafana

参考:【运维监控】prometheus+node exporter+grafana 监控linux机器运行情况 关于grafana的部署。

三、tomcat与jmx_exporter配置

1、下载jmx_exporter

用于集成到tomcat实施监控指标采集,通过代理实现jmx信息的收集。
下载地址:https://github.com/prometheus/jmx_exporter/tree/release-1.0.1/docs
下载版本:jmx_prometheus_javaagent-1.0.1.jar

2、部署jmx_exporter

将下载的jmx_prometheus_javaagent-1.0.1.jar文件放在tomcat所在机器的任一位置即可,本示例放在/usr/local/apache-tomcat-8.5.30/jmx_exporter目录下。

3、添加tomcat的配置信息

可自己编写,也可以在下面地址下载(可直接使用)
https://github.com/prometheus/jmx_exporter/blob/main/example_configs/tomcat.yml
下载后的源码如下(文件名称随意,存放位置随意),本示例存放位置在/usr/local/apache-tomcat-8.5.30/jmx_exporter目录下。

# https://grafana.com/grafana/dashboards/8704-tomcat-dashboard/
---   
lowercaseOutputLabelNames: true
lowercaseOutputName: true
whitelistObjectNames: ["java.lang:type=OperatingSystem", "Catalina:*"]
blacklistObjectNames: []
rules:
  - pattern: 'Catalina<type=Server><>serverInfo: (.+)'
    name: tomcat_serverinfo
    value: 1
    labels:
      serverInfo: "$1"
    type: COUNTER
  - pattern: 'Catalina<type=GlobalRequestProcessor, name=\"(\w+-\w+)-(\d+)\"><>(\w+):'
    name: tomcat_$3_total
    labels:
      port: "$2"
      protocol: "$1"
    help: Tomcat global $3
    type: COUNTER
  - pattern: 'Catalina<j2eeType=Servlet, WebModule=//([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), name=([-a-zA-Z0-9+/$%~_-|!.]*), J2EEApplication=none, J2EEServer=none><>(requestCount|processingTime|errorCount):'
    name: tomcat_servlet_$3_total
    labels:
      module: "$1"
      servlet: "$2"
    help: Tomcat servlet $3 total
    type: COUNTER
  - pattern: 'Catalina<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|connectionCount|acceptCount|acceptorThreadCount|pollerThreadCount|maxThreads|minSpareThreads):'
    name: tomcat_threadpool_$3
    labels:
      port: "$2"
      protocol: "$1"
    help: Tomcat threadpool $3
    type: GAUGE
  - pattern: 'Catalina<type=Manager, host=([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), context=([-a-zA-Z0-9+/$%~_-|!.]*)><>(processingTime|sessionCounter|rejectedSessions|expiredSessions):'
    name: tomcat_session_$3_total
    labels:
      context: "$2"
      host: "$1"
    help: Tomcat session $3 total
    type: COUNTER   

4、修改tomcat的启动文件

修改/usr/local/apache-tomcat-8.5.30/bin目录下的catalina.sh文件中的JAVA_OPTS变量,加入javaagent相关配置,增加内容“-javaagent:/usr/local/apache-tomcat-8.5.30/jmx_exporter/jmx_prometheus_javaagent-1.0.1.jar=12345:/usr/local/apache-tomcat-8.5.30/jmx_exporter/tomcat.yml”,路径需要写绝对路径,所以上述的jar和yml文件放在哪里都无所谓。12345是端口,可以随意设置。修改后的JAVA_OPTS变量属性如下。

JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask` -javaagent:/usr/local/apache-tomcat-8.5.30/jmx_exporter/jmx_prometheus_javaagent-1.0.1.jar=12345:/usr/local/apache-tomcat-8.5.30/jmx_exporter/tomcat.yml"

5、重启tomcat及验证

重启tomcat后,验证tomcat是否正常启动以及验证指标是否收集到即可。
在浏览器中输入地址http://server4:12345/,出现如下页面
在这里插入图片描述
点击“/metrics”链接(http://server4:12345/metrics)出现如下页面即成功。
在这里插入图片描述

6、其他

  • 如果是jar运行环境,执行命令如下
# jmx_prometheus_javaagent-1.0.1.jar和yml文件根据自己需要进行设置
java -javaagent:./jmx_prometheus_javaagent-1.0.1.jar=12345:tomcat.yml -jar yourJar.jar
  • 如果是war运行环境,参考tomcat的部署方式

四、集成prometheus与grafana监控tomcat

1、配置prometheus

/usr/local/bigdata/prometheus-2.54.0.linux-amd64/prometheus.yml配置文件增加关于jmx_exporter的配置,即如下:

  - job_name: "tomcat_node_10.44"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["server4:12345"]

关于本示例的完整配置文件示例如下。

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["server4:9090"]

  - job_name: "tomcat_node_10.44"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["server4:12345"]

完成以上配置后,重启prometheus即可。

验证prometheus是否配置成功比较简单,打开prometheus的web UI界面,点击“Status”下的“Targets”链接出现配置的job_name,点击job_name对应的“show more”按钮,再点击“Endpoints”对应的链接,如果有相应的监控指标数据即可。如下2个图所示。
prometheus targets页面
在这里插入图片描述

2、导入grafana模板

模板地址:https://grafana.com/grafana/dashboards/19532-apache-tomcat/
导入模板示例图如下:
在这里插入图片描述

3、验证

在grafana的dashboard中查看添加的“Apache Tomcat”dashboard,如下图。
在这里插入图片描述
以上,完成了集成操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2133925.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PythonCode】力扣Leetcode41~45题Python版

【PythonCode】力扣Leetcode41~45题Python版 前言 力扣Leetcode是一个集学习、刷题、竞赛等功能于一体的编程学习平台&#xff0c;很多计算机相关专业的学生、编程自学者、IT从业者在上面学习和刷题。 在Leetcode上刷题&#xff0c;可以选择各种主流的编程语言&#xff0c;如C…

蓝桥杯备赛---1.安装软件 配置环境

1.准备比赛软件安装包 2.安装java环境 根据电脑型号选择环境&#xff0c;一般是x64&#xff0c;安装即可 3.安装STM32CubeMx 点击next默认安装即可 安装之后打开cubeMX&#xff0c;选择顶层Help&#xff0c;点击Mange embeded software packege 选择软件包添加 4.安装keil 点击…

jsp+sevlet+mysql实验室设备管理系统2.0

jspsevletmysql实验室设备管理系统2.0 一、系统介绍二、功能展示1.控制台2.申购设备3.设备列表4.设备维护5.设备类型6.报废设备7.维修记录 四、其它1.其他系统实现 一、系统介绍 系统主要功能&#xff1a; 普通用户&#xff1a;控制台、申购设备、设备列表、设备维护、设备类型…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第二集:通过InControl插件实现绑定玩家输入以及制作小骑士移动空闲动画

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、通过InControl插件实现绑定玩家输入二、制作小骑士移动和空闲动画 1.制作动画2.玩家移动和翻转图像3.状态机思想实现动画切换总结 前言 好久没来CSDN看看&…

低代码开发平台:常用动态脚本Groovy

目录 引言 Groovy 的应用场景 安全问题与解决方案 SQL 注入攻击 反序列化攻击 输入验证 文件路径遍历 命令注入 结论 引言 Groovy 是一种动态语言&#xff0c;它运行在 Java 虚拟机&#xff08;JVM&#xff09;上&#xff0c;并且与 Java 有着很好的互操作性。Groovy…

MATLAB基础应用精讲-【数模应用】卡方拟合优度检验(附MATLAB、python和R语言代码实现)

目录 前言 几个高频面试题目 卡方分布与拟合优度的卡方检验是什么关系? 算法原理 什么是卡方检验 卡方是什么? 如何使用卡方表计算器? 什么是卡方拟合优度检验 使用条件 基本原理 数学模型 卡方检验自由度 理论频数计算 需要注意的事项 卡方检验分类 1、 独…

【Linux】NAT

一、NAT技术背景 之前&#xff0c;我们就讨论了在IPv4协议中&#xff1a;IP协议数量不充足的问题。NAT技术当前解决IP地址不够用的主要手段&#xff0c;是路由器的一个重要功能。对&#xff0c;现在路由器不仅可以工作到网络层&#xff0c;也可以工作到应用层。 NAT能够将私有…

【Hot100】LeetCode—45. 跳跃游戏 II

目录 1- 思路覆盖范围 2- 实现⭐45. 跳跃游戏 II——题解思路 3- ACM 实现 原题链接&#xff1a;45. 跳跃游戏 II 1- 思路 覆盖范围 int cur 0 &#xff1a;记录当前的覆盖范围int next 0&#xff1a;记录当前结点最远的跳跃距离int res 0&#xff1a;记录具体跳几步 覆盖…

tp6.0.8反序列化漏洞的一些看法

更多漏洞分析的内容&#xff0c;可前往无问社区查看http://www.wwlib.cn/index.php/artread/artid/5741.html 环境搭建 composer create-project topthink/think6.0.x-dev thinkphp-v6.0 首先构造一个反序列化点 app/controller/Index.php <?php namespace app\contro…

Claude Prompt 汉语新解

感谢刚哥&#xff01; ;; 作者: 李继刚 ;; 版本: 0.3 ;; 模型: Claude Sonnet ;; 用途: 将一个汉语词汇进行全新角度的解释 ​ ;; 设定如下内容为你的 *System Prompt* (defun 新汉语老师 () "你是年轻人,批判现实,思考深刻,语言风趣" (风格 . ("Oscar Wilde&q…

Linux shell编程学习笔记78:cpio命令——文件和目录归档工具(上)

0 前言 在Linux系统中&#xff0c;除了tar命令&#xff0c;我们还可以使用cpio命令来进行文件和目录的归档。 1 cpio命令的功能&#xff0c;帮助信息&#xff0c;格式&#xff0c;选项和参数说明 1.1 cpio命令的功能 cpio 名字来自 "copy in, copy out"&#xf…

Redis网络模型、通信协议、内存回收

Redis网络模型 一、用户空间和内核空间&#xff08;前提&#xff09;问题来了&#xff1a;为啥要区分用户空间和内核空间呢&#xff1f;我们来看看两个空间以及硬件是如何操作的 二、Linux中五种IO模型1、 阻塞IO2、非阻塞IO3、IO多路复用3.1、SELECT3.2、poll3.3、epoll 4、信…

北大领衔:多智能体研究登上Nature子刊

这篇笔记可以作为接EoT那篇笔记内容中某种思想内涵的延伸和实践&#xff0c;即均是将智能体之间的关系描述为一种拓扑连接结构下的网络化关系进行研究&#xff08;贴近物理世界更加真实、自然、客观的拓扑结构&#xff09;&#xff0c;在这项研究中&#xff0c;更多的扩展到大规…

SpringCloud-04 OpenFeign服务调用与负载均衡

OpenFeign是一个声明式、模板化的HTTP客户端&#xff0c;它简化了在Java应用程序中调用RESTful API的过程。OpenFeign是Netflix开发的一个开源项目&#xff0c;它构建在Feign的基础上&#xff0c;为开发者提供了更加简单、灵活的方式来实现HTTP请求。OpenFeign的特点包括&#…

蓝桥杯真题——约翰的牛奶

输入样例&#xff1a; 8 9 10 输出样例&#xff1a; 1 2 8 9 10 本题是宽搜的模版题&#xff0c;不论怎么倒牛奶&#xff0c;A,B,C 桶里的牛奶可以看做一个三元点集 我们只要找到A桶是空的&#xff0c;B,C桶中的状态即可 #include <iostream> #include <cstring…

四、滑动窗口-算法总结

文章目录 四、滑动窗口4.1 模板4.2 示例4.2.1 最小覆盖子串4.2.2 字符串的排列4.2.3 找到字符串中所有字母异位词4.2.4 无重复字符的最长子串 四、滑动窗口 4.1 模板 /* 滑动窗口算法框架 */ void slidingWindow(string s, string t) {unordered_map<char, int> need, …

【C++题解】1398. 奇偶统计

欢迎关注本专栏《C从零基础到信奥赛入门级&#xff08;CSP-J&#xff09;》 问题&#xff1a;1398. 奇偶统计 类型&#xff1a;二维数组 题目描述&#xff1a; 在一个n行m列的二维数组中&#xff0c;有若干奇数和偶数&#xff0c;请编程统计出这个二维数组中&#xff0c;奇数…

使用canal.deployer-1.1.7和canal.adapter-1.1.7实现mysql数据同步

1、下载地址 --查看是否开启bin_log日志&#xff0c;value on表示开启 SHOW VARIABLES LIKE log_bin; -- 查看bin_log日志文件 SHOW BINARY LOGS; --查看bin_log写入状态 SHOW MASTER STATUS; --查看bin_log存储格式 row SHOW VARIABLES LIKE binlog_format; --查看数据库服…

actuator字符绕过漏洞在Nginx上的配置

最近遇到了安全部门派发的actuator泄漏漏洞&#xff0c;领导希望不暴露到外网上&#xff0c;对于内网需要认证才可以访问。 要想不暴露到外网上&#xff0c;就需要在网络层面做拦截&#xff0c;比如nginx和apisix上做代理配置。 URI字符绕过的风险背景知识: URI字符绕过是一种安…

【笔记】第二节 熔炼、轧制、热处理和焊接工艺

文章目录 2.1 钢轨冶炼工艺2.1.1 冶炼工艺(1)铁水预处理(2)转炉合金化冶炼(3)钢包精炼工艺&#xff08;LF&#xff08;Ladle Furnace&#xff09;炉&#xff09; 2.1.2 技术要点(1) LF精炼(2) 夹杂物及有害元素控制非金属夹杂物P和S杂质气体 (3) 铸造组织控制钢轨材质的特点铸造…