MyPerf4J结合Grafana和InfluxDB采集JVM以及QPS指标

news2024/9/24 17:17:40

MyPerf4J结合Grafana和InfluxDB采集JVM以及QPS指标

背景

​ 需要采集现场java程序运行的状态数据(包括JVM指标以及QPS,RPS指标等)。需要采集的方式尽可能轻量化

​ 结合实际情况采用MyPerf4J作为Java探针,InfluxDB作为数据存储端,Grafana作为数据展示端

展示

​ 先看结果:
在这里插入图片描述

安装文件下载地址

https://github.com/q920447939/java-study/releases/tag/MyPerf4J_influxDB_Grafana

安装

  1. JDK = 1.8 ,如果采用JDK17程序会起不来(起不来指的是采用MyPerf4J作为Java探针的情况下)

  2. 系统 = CentOS7

  3. InfluxDB = 1.7.8 ,此处采用离线安装方式(注意InfluxDB 不能是2.X的版本,MyPerf4J不适配)

    1. 上传influxdb-1.7.8_linux_amd64.tar.gz tar包到服务器

    2. 解压tar xf influxdb-1.7.8_linux_amd64.tar.gz

    3. 启动

      1. 我们到安装软件的usr/bin目录下,执行命令./influxd 前台启动 ;如图所示就代表启动成功
        在这里插入图片描述
  4. 安装grafana

    1. 上传grafana-enterprise-9.3.2.linux-amd64.tar.gz包到服务器

    2. 解压tar -zxf grafana-enterprise-9.3.2.linux-amd64.tar.gz

    3. 进入grafana-9.3.2/bin目录

    4. 执行命令./grafana-server &,启动成功如图所示

    在这里插入图片描述

  5. MyPerf4J-ASM(原项目地址https://github.com/LinShunKang/MyPerf4J)

    1. 上传至CentOS7服务器并解压MyPerf4J-ASM-3.2.0-SNAPSHOT.jar,MyPerf4j.properties

    2. 修改解压后的MyPerf4j.properties文件,主要注意配置文件中的配置项metrics.exporter ;filter.packages.include;influxdb,我修改的文件如下:

# MyPerf4J 所有配置请参考:https://github.com/LinShunKang/MyPerf4J/wiki/%E9%85%8D%E7%BD%AE

# 配置监控应用的名称
app_name = MyApp

debug = true

###############################################################################
#                           Metrics Configuration                             #
###############################################################################

# 配置 MetricsExporter 类型
#       log.stdout:     以标准格式化结构输出到 stdout.log
#       http.influxdb:  以 InfluxDB LineProtocol 格式发送至 InfluxDB server,需要另行增加 influxdb 的配置
metrics.exporter = http.influxdb

#MetricsProcessor类型,0:以标准格式化结构输出到stdout.log 1:以标准格式化结构输出到磁盘  2:以InfluxDB LineProtocol格式输出到磁盘
MetricsProcessorType=2

# 配置各项监控指标日志的文件路径
# 如果 metrics.exporter 配置为 log.influxdb,建议把所有的 metrics.log.* 路径配置成一样以方便 Telegraf 收集
# 这里我发现如果 metrics.exporter 采用 http.influxdb方式,这块的配置可以不需要配置
metrics.log.method = /home/influxdb/application/MyPerf4j/metrics.log
metrics.log.class_loading = /home/influxdb/application/MyPerf4j/metrics.log
metrics.log.gc = /home/influxdb/application/MyPerf4j/metrics.log
metrics.log.memory = /home/influxdb/application/MyPerf4j/metrics.log
metrics.log.buff_pool = /home/influxdb/application/MyPerf4j/metrics.log
metrics.log.thread = /home/influxdb/application/MyPerf4j/metrics.log
metrics.log.file_desc = /home/influxdb/application/MyPerf4j/metrics.log
metrics.log.compilation = /home/influxdb/application/MyPerf4j/metrics.log


###############################################################################
#                           Filter Configuration                              #
###############################################################################

# 配置需要监控的package,可配置多个,用英文';'分隔
#   com.demo.p1 代表包含以 com.demo.p1 为前缀的所有包和类
#   [] 表示集合的概念:例如,com.demo.[p1,p2,p3] 代表包含以 com.demo.p1、com.demo.p2 和 com.demo.p3 为前缀的所
有包和类,等价于 com.demo.p1;com.demo.p2;com.demo.p3
#   * 表示通配符:可以指代零个或多个字符,例如,com.*.demo.*
filter.packages.include = com.*;

# 配置不需要监控的package,可配置多个,用英文';'分隔
#filter.packages.exclude = cn.perf4j.demo.dao.DemoDAOImpl

# 注意这里要修改influxDB对应的信息
influxdb.host=127.0.0.1
influxdb.port=8086
influxdb.database=MyPerf4J
influxdb.username=admin
influxdb.password=admin
influxdb.conn_timeout=3000
influxdb.read_timeout=5000

编写SpringBoot项目

  1. 代码部分

    1. 代码比较简单,只有一个功能:每隔一秒钟打印一下时间。
@SpringBootApplication
@EnableScheduling
public class SpringBootDemoApplication {

    public static void main(String[] args) throws InterruptedException {
        ConfigurableApplicationContext configurableApplicationContext = SpringApplication.run(SpringBootDemoApplication.class, args);
        System.out.println("程序启动....");
        Thread.sleep(Integer.MAX_VALUE);

    }


    @Scheduled(fixedDelay = 1,timeUnit = TimeUnit.SECONDS)
    public void  aa () {
        System.out.println("当前时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    }

}
  1. 启动应用

    2.1. 在启动的时候增加命令

JVM 启动参数里加上以下两个参数
-javaagent:/path/to/MyPerf4J-ASM.jar
-DMyPerf4JPropFile=/path/to/MyPerf4J.properties
形如:java -javaagent:/path/to/MyPerf4J-ASM.jar -DMyPerf4JPropFile=/path/to/MyPerf4J.properties -jar yourApp.jar

2.2. 启动成功后会在控制台打印,注意控制台打印了status=HttpRespStatus{code=200, phrase='OK',如果打印xxx 401,那么就是influxDB的配置信息错误或者influxDB版本是2.x的版本

2022-12-30 09:39:32.838 [MyPerf4J] INFO [main] Thanks sincerely for using MyPerf4J.
2022-12-30 09:39:32.868 [MyPerf4J] INFO [main] http.server.port is not configured, so use '2048,2000,2040' as default.
2022-12-30 09:39:32.870 [MyPerf4J] INFO [main] ClassLevelMapping is blank, so use default mappings.
2022-12-30 09:39:32.951 [MyPerf4J] INFO [main] InfluxDbClient create database 'MyPerf4J' response.status=HttpRespStatus{code=200, phrase='OK'}
2022-12-30 09:39:32.973 [MyPerf4J] INFO [main] Use 2048 as HttpServer port.
2022-12-30 09:39:33.102 [MyPerf4J] INFO [main] 
    __  ___      ____            ______ __      __
   /  |/  /_  __/ __ \___  _____/ __/ // /     / /
  / /|_/ / / / / /_/ / _ \/ ___/ /_/ // /___  / / 
 / /  / / /_/ / ____/  __/ /  / __/__  __/ /_/ /  
/_/  /_/\__, /_/    \___/_/  /_/    /_/  \____/   
       /____/                                     v3.2.0-SNAPSHOT

grafana配置InfluxDB数据库信息

  1. 登录grafana网页地址,地址是部署的grafana服务IP:3000端口 ;例如:http://192.168.200.166:3000/

  2. 默认登录账号密码是:admin/admin

  3. 打开grafanaDB配置,点击Add data source

在这里插入图片描述

  1. 选择InfluxDB
    在这里插入图片描述

  2. 填写Http URL(只需要把IP改成InfluxDB部署的IP即可)
    在这里插入图片描述

  3. 填写InfluxDB对应的配置信息,然后点击Save & test,连接成功会提示绿色的信息
    在这里插入图片描述

  4. 点击Dashboards,点击Import
    在这里插入图片描述

  5. 点击Upload JSON file ,分别上传myperf4j-influxdb-jvm_rev6.json、和myperf4j-influxdb-method_rev6.json

  6. 点击Dashboards,就能看到上传的MyPerf4J-InfluxDBv1.x-JVM、和MyPerf4J-InfluxDBv1.x-Method

在这里插入图片描述

  1. 随意点击一个图表就能查看监控指标信息,图在展示目录。

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

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

相关文章

15---整合Echarts和完善头像上传

1、完善头像上传功能 上次写的头像上传功能&#xff0c;不能实现上传保存后立刻刷新右上角头像&#xff0c;这里做一个完善。首先是在Manage.vue中&#xff08;父&#xff09;&#xff0c;写刷新User的方法 //传一个user过去到header <Header :collapseBtnClass"col…

【信息论与编码 沈连丰】第三章:离散信源

【信息论与编码 沈连丰】第三章&#xff1a;离散信源第三章 离散信源3.1 离散信源的分类及其描述3.2 离散信源的熵3.3 信源的冗余度3.4 信源符号序列分组定理3.5 平稳离散信源及其性质第三章 离散信源 3.1 离散信源的分类及其描述 信源分类&#xff1a;本质上主要基于两方面来…

fastai教程学习笔记

这几天对着fastai教程读了下&#xff0c;大部分写得已经很不错。这里做点知识精炼的笔记。 安装fastai 推荐在conda环境内执行以下命令。它 pip install fastaifastai架构 fastai的编程架构如下图所示&#xff1a; fastai提供了高、中、低三层的API&#xff0c;用户可以根…

73、【哈希表】leetcode——15. 三数之和(C++版本)

题目描述 原题链接&#xff1a;15. 三数之和 解题思路 本题的难点在于去重&#xff0c;针对两种不同的方式&#xff1a;双指针和Hash采用不同的去重判定条件。 1、去重的目标 要明确&#xff0c;去重的是重复三元组&#xff0c;而不是三元组里重复的数。 2、去重初步思路 …

商业与数据生态议题解读,Doris Summit 2022 分论坛议程介绍|即刻报名

Doris Summit 2022 将于1 月 6 -7 日在线上正式举办&#xff0c;本次峰会共分2 天进行&#xff0c;首日上午为主论坛&#xff1a;核心技术解析&#xff0c;下午为商业与数据生态分论坛&#xff0c;7 日全天为行业用户最佳实践案例。大会汇聚了来自全球顶尖云厂商、一线互联网企…

CoMER论文翻译

文章目录Abstract1、Introduction2、Related Work2.1 HMER Methods2.2 Coverage Mechanism3、Methodology3.1、Background3.2、CNN Encoder3.3、Positional Encoding3.4、Attention Refinement Module3.5、Coverage4 Experiments论文链接&#xff1a;https://arxiv.org/abs/220…

数字图像处理 图像对比度增强算法概览

一、图像对比度增强 图像对比度增强又叫作图像对比度拉伸或者直接称为点运算。图像亮度和对比度调整的目的之一是在合适的亮度上提供最大的细节信息&#xff0c;细节纹理的沟纹越深&#xff0c;图像越清晰。在图像处理中&#xff0c;图像对比度增强是最基本的、原理比较简单却很…

【前端】Vuex模块化和持久化应用示例

概述 Vuex作为VUE状态管理组件&#xff0c;能够将项目公共数据进行统一管理。而且可以按照不同的业务功能将数据状态分模块管理。另外&#xff0c;对于网页刷新导致Vuex状态丢失的问题可以使用vuex-persistedstate插件配置将数据保存在localStorage或者sessionStorage中。 本…

「Python|场景案例」如何给图片添加水印

本文主要介绍如何使用python的PIL库给图片增加水印 文章目录背景说明工具准备处理步骤源代码处理效果展示背景说明 当我们想给一些图片添加水印的时候&#xff0c;尤其是图片数量较多的时候&#xff0c;就可以使用python进行自动化处理。包括但不限于在自媒体上发布自己的各种…

如何使用自助式商业智能 (BI) 避免组织中的数据孤岛

许多组织都存在数据问题。当许多员工远程工作&#xff08;或在混合环境中&#xff09;并在多个位置使用多个设备访问公司数据时&#xff0c;他们正在处理信息过载问题。这只会加剧数据孤岛的问题。 数据孤岛正是它听起来的样子&#xff1a;孤立在一个孤立的用户/环境中的数据&…

jdk版本和Class编译版本对应关系

JDK version和class file version(Class编译版本号)对应关系 JDK 17 61, JDK 16 60, JDK 15 59, JDK 14 58, JDK 13 57, JDK 12 56, JDK 11 55, JDK 10 54, JDK 9 53, JDK 8 52, JDK 7 51, JDK 6.0 50, JDK 5.0 …

数据结构-归并排序

一、概念及其介绍 归并排序&#xff08;Merge sort&#xff09;是建立在归并操作上的一种有效、稳定的排序算法&#xff0c;该算法是采用分治法(Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每…

三年“云改”,移动云这份答卷有多“硬”?

作者 | 曾响铃 文 | 响铃说 云计算是推动数字经济与实体经济深度融合的催化剂&#xff0c;是重点领域数字产业发展的助推器。近年来我国云计算产业发展提速&#xff0c;加快推动实体企业转型升级和创新发展。 2022年是移动云实施“云改”战略的第3年&#xff0c;也是移动云全…

【人工智能】基于五笔字型规范和人工神经网络的简中汉字识别【二】

环境搭建 一、NVIDIA驱动安装与更新二、Anaconda安装三、Pytorch安装四、验证CUDA和cudnn版本一、NVIDIA驱动安装与更新 显卡驱动就是用来驱动显卡的程序,它是硬件所对应的软件。 正常情况下,配有显卡的电脑都是安装有驱动程序的,但是有的时候驱动可能版本较低,所支持的 …

爬虫内容学习-工具类---Selenium

一、爬虫学习建议&#xff1a; 在编写python爬虫程序时&#xff0c;只需要做以下两件事&#xff1a; 发送GET请求&#xff0c;获取HTML [第一类] 解析HTML&#xff0c;获取数据 [第二类] 这两件事&#xff0c;python都有相应的库帮你去做&#xff0c;你只需要知道…

关乎你我,2022年都经历了哪些安全事件?|上云那些事

2022年&#xff0c;网络安全跟人们的工作生活关联愈发紧密。腾讯安全联合南方日报、南方&#xff0c;携手共建《上云那些事》栏目&#xff0c;为企业提供网络安全建设新思路&#xff0c;帮助大家及时发现身边的网络安全陷阱&#xff0c;提升安全意识和防范能力&#xff0c;减少…

论文阅读-虚假信息检测综述 - Fake News Detection on Social Media: A Data Mining Perspective

论文链接&#xff1a;https://arxiv.org/pdf/1708.01967.pdf 目录 摘要 1 引言 2. 假新闻定义 2.1 假新闻的定义 2.2 传统新闻媒体上的假新闻 2.3社交媒体上的假新闻 3.假新闻检测 3.1问题定义 3.2 特征提取 3.2.1 新闻内容特征 3.2.2 社会语境特征 3.3 模型构建 …

浅谈DNS域名解析的过程

用户在浏览器输入www.baidu.com时&#xff0c;DNS域名解析大致分为以下几个过程: 浏览器客户端检查自身有没有该域名的缓存&#xff1a; 如果浏览器有命中&#xff0c;直接返回该域名对应的IP地址&#xff0c;解析结束; (这个缓存可以设置TTL来控制有效时间&#xff0c;有点像A…

用C++求两个数的最大公约数和最小公倍数。(数论的基础思想)

目录原理最大公约数最小公倍数代码运行结果原理 最大公约数 有两个数字n和m。现在要求两个数字的最大公约数。 例如&#xff1a;n为18&#xff0c;m为4. 正常我们的思路求解最大公约数是暴力破解&#xff0c;遍历一遍公约数&#xff0c;取最大的那个&#xff0c;但是这样有一…

关闭Mac的Microsoft AutoUpdate弹框提示

macOS安装Microsoft Office for Mac之后&#xff0c;有时候会弹出Microsoft Auto Update微软应用自动更新工具。就像下面这样&#xff1a;&#xff08;我不知道您会不会烦&#xff0c;我是烦了&#xff09; 如果您也和我一样&#xff0c;不喜欢这样不经过允许就自动弹框的提示&…