Prometheus监控Java-JMX

news2024/10/6 2:22:57

一、什么是 JMX Exporter ?

JMX Exporter 利用 Java 的 JMX 机制来读取 JVM 运行时的一些监控数据,然后将其转换为 Prometheus 所认知的 metrics 格式,以便让 Prometheus 对其进行监控采集。

那么,JMX 又是什么呢?它的全称是:Java Management Extensions。 顾名思义,是管理 Java 的一种扩展框架,JMX Exporter 正是基于此框架来读取 JVM 的运行时状态的。

二、如何使用 JMX Exporter 暴露 JVM 监控指标 ?

下面介绍如何通过 JMX Exporter 来暴露 Java 应用的 JVM 监控指标。

JMX Exporter 的两种用法

JMX-Exporter 提供了两种用法:

  1. 启动独立进程。JVM 启动时指定参数,暴露 JMX 的 RMI 接口,JMX-Exporter 调用 RMI 获取 JVM 运行时状态数据,转换为 Prometheus metrics 格式,并暴露端口让 Prometheus 采集。
  2. JVM 进程内启动(in-process)。JVM 启动时指定参数,通过 javaagent 的形式运行 JMX-Exporter 的 jar 包,进程内读取 JVM 运行时状态数据,转换为 Prometheus metrics 格式,并暴露端口让 Prometheus 采集。

官方不推荐使用第一种方式,一方面配置复杂,另一方面因为它需要一个单独的进程,而这个进程本身的监控又成了新的问题,所以本文重点围绕第二种用法讲如何使用 JMX Exporter 暴露 JVM 监控指标给Prometheus并展示在Grafana上。

三、部署

1、下载jmx javaagent

mkdir /usr/local/jmx_exporter
cd /usr/local/jmx_exporter
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.17.2/jmx_prometheus_javaagent-0.17.2.jar

2、配置

#配置 
cd /usr/local/jmx_exporter

cat > /usr/local/jmx_exporter/jmx_config.yaml << EOF
---
rules:
  - pattern: ".*"
EOF

#完整配置参考:https://github.com/prometheus/jmx_exporter/
---
startDelaySeconds: 0
hostPort: 127.0.0.1:1234
username: 
password: 
jmxUrl: service:jmx:rmi:///jndi/rmi://127.0.0.1:1234/jmxrmi
ssl: false
lowercaseOutputName: false
lowercaseOutputLabelNames: false
whitelistObjectNames: ["org.apache.cassandra.metrics:*"]
blacklistObjectNames: ["org.apache.cassandra.metrics:type=ColumnFamily,*"]
rules:
  - pattern: 'org.apache.cassandra.metrics<type=(\w+), name=(\w+)><>Value: (\d+)'
    name: cassandra_$1_$2
    value: $3
    valueFactor: 0.001
    labels: {}
    help: "Cassandra metric $1 $2"
    cache: false
    type: GAUGE
    attrNameSnakeCase: false

3、启动jar包

nohup java  -javaagent:/jmx/jmx_prometheus_javaagent-0.17.2.jar=8899:/jmx/jmx_config.yaml -jar /jmx/datamigration-0.0.1-SNAPSHOT.jar --server.port=8090 --spring.config.location=/jmx/config/application.properties >> /jmx/local.log 2>&1 &

3.1、验证

在这里插入图片描述

配置prometheus

scrape_configs:
  - job_name: 'java_jmx'
  static_configs:
    - targets: ['yourIP:javagent端口']

4、重启或热加载配置并验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gomVpNGR-1675931002752)(/Users/hanwang/Library/Application Support/typora-user-images/image-20230209154000523.png)]

5、配置grafana

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GlowINwq-1675931002752)(/Users/hanwang/Library/Application Support/typora-user-images/image-20230209154341372.png)]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【Redis场景4】单机环境下秒杀问题

单机环境下的秒杀问题 秒杀下单功能及并发测试 完整代码GitHub&#xff1a;https://github.com/xbhog/hm-dianping/tree/20230130-xbhog-redisSpike 秒杀条件分析&#xff1a; 秒杀是否开始或结束&#xff0c;如果尚未开始或已经结束则无法下单库存是否充足&#xff0c;不足…

【体验测评】ChatGDP

前言 今天在去打针之前测试了下比较火的ChatGPT,总得来说还是比较好用的&#xff0c;尤其是跟浏览器搭配可以当摘要看&#xff0c;然后再进行细化查阅。 ​针对可以写论文跟交作业&#xff0c;我觉得查重率这一关比较麻烦&#xff0c;不现实&#xff0c;尤其是参与人增多的时…

php宝塔搭建部署实战易优养殖基地网站源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套php开发的易优养殖基地网站源码&#xff0c;感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&#xff0c;宝…

选择游戏开发工具的原则

本文首发于微信公众号&#xff1a; 小蚂蚁教你做游戏。欢迎关注领取更多学习做游戏的原创教程资料&#xff0c;每天学点儿游戏开发知识。嗨&#xff01;大家好&#xff0c;我是小蚂蚁。昨天为了给我的精致1010游戏方便的增加更多关卡&#xff0c;我用 Unity 做了个关卡编辑器&a…

pycharm的terminal与Project interpreter 配置环境不一致的问题

考虑自己的项目名中是否出现了中文&#xff0c;我是因为这个原因导致Terminal 前面出现了PS&#xff0c;用第2条解决切换终端环境后还是安装包不一致。终端出现PS&#xff0c;考虑在settings中搜索找到Terminal&#xff0c;修改其Shell path为cmd.exe&#xff0c;关闭重新打开T…

SpringCloud保姆级搭建教程三---Feign

1、第一点就是要明白服务与服务之间在怎么样的情况下&#xff0c;如何使用feign答&#xff1a;服务A要调用服务B的某个controller方法的时候&#xff0c;服务A就需要使用feign ,和服务B是没关系的所以&#xff0c;首先&#xff0c;在服务A中添加feign的依赖&#xff0c;我这里就…

nodejs基于vue高校图书馆座位预约系统

目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究内容 2 2 系统开发环境 4 2.1 使用工具简介 4 2.2 环境配置 4 2.3 B/S结构简介 4 2.4 MySQL数据库 5 2.5 框架介绍 5 3 系统分析 63.1系统可行性分析 6 3.1.1经济可行性 6 3.1.2技术可行…

软件测试电商项目实战(写进简历没问题)

前言 说实话&#xff0c;在找项目的过程中&#xff0c;我下载过&#xff08;甚至付费下载过&#xff09;N多个项目、联系过很多项目的作者&#xff0c;但是绝大部分项目&#xff0c;在我看来&#xff0c;并不适合你拿来练习&#xff0c;它们或多或少都存在着“问题”&#xff…

【i2c协议介绍】

文章目录协议简单介绍五种速度模式master/slave和transmitter/receiver关系第一种情况&#xff1a;master作为transmitter&#xff0c;slave作为receiver第二种情况&#xff1a;当master作为receiver&#xff0c;slave作为transmitteri2c基本信号start产生stop信号数据传输有效…

OpenAI ChatGPT 注册使用全攻略,以及常见问题解决办法

前言 这个时代&#xff0c;利用好 AI 完成自己的工作&#xff0c;放大自己的效率&#xff0c;已是一种必不可少的技能。 文章目录前言一、注册和登录二、常见问题和解决办法三、参考链接一、注册和登录 1&#xff09;注册网址&#xff1a;https://chat.openai.com/auth/login …

8.数据库编程

梳理 名词解释 简答题 1.游标的使用步骤 ① 声明游标。 用DECLARE语句为一条SELECT语句定义游标 EXEC SQL DECLARE<游标名> CURSOR FOR <SELECT语句>;使用T-SQL语句生成一个结果集&#xff0c;并且定义游标的特征&#xff0c;如游标中的记录是否可以修改。 定…

《趣学算法》读书笔记

内容摘要 主要介绍我对本书的一些自我感觉比较亮点地方的总结。 第一章 算法 算法有两条线索&#xff0c;数据结构、算法策略。 算法特性 时间复杂度 常见算法时间复杂度 时间复杂度的渐进上界 渐进精确界 用渐进上界和渐进下界逼近&#xff0c; 空间复杂度 递归 递归包…

浅谈监控易运维系统在金融信创国产化中的使用

自2019年&#xff0c;国家明确信创产业将成为拉动经济发展的重要途径和崭新动能以来&#xff0c;全行业进入一个高速发展新阶段。此前倡导的“28”安全可控体系&#xff0c;其中在8大基础行业中,金融行业信创产品推广成为重中之重。金融行业信创&#xff0c;是为解决行业本质安…

ENVE5.3安装与汉化(一次性安装成功附安装包)

目录 1.安装包下载 2. 软件安装 3. ENVI5安装目录说明 1.安装包下载 链接&#xff1a;https://pan.baidu.com/s/1dp2ucQa3DMHLYpw239-_vA?pwd6944 提取码&#xff1a;6944 2. 软件安装 安装前注意事项&#xff1a; 安装全程断网&#xff1b;下载、解压和安装都应该在英文…

【电商】订单信息与状态流转

前言订单产生后&#xff0c;接下来会继续进行一系列流转&#xff0c;最后送到用户手里。在每个环节都有对应的操作&#xff0c;数据信息也要求其完成性&#xff0c;可以根据订单的每个状态变化&#xff0c;来计算分析&#xff0c;进而进行优化供应链路径&#xff0c;以提升订单…

三勾商城JAVA多商户配置发布

admin、shop、supplier端测试&#xff1a; 账号/密码均为admin/123456 后端vue目录 1、jjj_shop_multi_admin> 对应saas端&#xff0c;后台访问地址/admin。2、jjj_shop_multi_shop> 对应商城管理端&#xff0c;后台访问地址/shop。2、jjj_shop_multi_supplier> 对应供…

Linux---Kernal与Shell讲解

目录 Shell简介 什么是Shell Shell分类 内核Kernal Shell简介 什么是Shell 我们首先需要知道一台完整的计算机是由硬件组成的&#xff0c;而人不可以直接与硬件交互&#xff0c;为了完成交互&#xff0c;进行了以下的操作 将硬件设备交由内核管理&#xff0c;给硬件套个内…

【golang】1797. 设计一个验证系统

你需要设计一个包含验证码的验证系统。每一次验证中&#xff0c;用户会收到一个新的验证码&#xff0c;这个验证码在 currentTime 时刻之后 timeToLive 秒过期。如果验证码被更新了&#xff0c;那么它会在 currentTime &#xff08;可能与之前的 currentTime 不同&#xff09;时…

微信小程序开发你可能不知道的开发技巧

1. 页面级data&#xff0c;组件data的查看 页面级data的查看&#xff0c;很多开发者应该都知道&#xff1b;组件级的数据查看我是开发了大半年才发现的&#xff1b; 页面级的data查看&#xff1a; 组件的data查看&#xff1a; 2. 放大模拟器【调整一些UI细节】 效果&#x…

2023.2.9学习记录 Doker 三大组成 镜像 容器 仓库(包 镜像是类 容器是对象)

内核级虚拟化技术 同一份Redis镜像可以生成几个不同的容器 Doker学习 基于go语言 一次配置好镜像文件 换到别的机器上就能正常运行 Doker是什么&#xff1f; 解决了运行环境配置问题的软件容器&#xff0c;方便做持续集成并有助于整体发布的容器虚拟化技术 Doker没有出现…