首页 > 其他分享 >Prometheus+Grafana监控JVM实战

Prometheus+Grafana监控JVM实战

时间:2022-11-28 19:12:24浏览次数:32  
标签:JMX exporter jmx Grafana Prometheus Exporter JVM

1.什么是 JMX Exporter ?

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

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

 

2.如何使用 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上。

 

3.准备

要通过Prometheus来收集JVM,除安装JMX-Exporter外还需要配置jmx_prometheus_javaagent的Jar包,用于将收集到的JVM运行时状态数据转换为Prometheus metrics 格式。

JMX-Exporter下载地址:https://github.com/prometheus/jmx_exporter/releases,Linux服务器上可以使用wget命令来获取安装包,命令如下,也可以通过windows把包下载下来然后通过FTP软件上传到Linux服务器上。

cd /usr/local
mkdir jmx_exporter #创建jmx_exporter目录
cd jmx_exporter
wget https://github.com/prometheus/jmx_exporter/archive/refs/tags/parent-0.13.0.tar.gz #这里选择的是0.13版本,版本可自由选择适合的

 

jmx_prometheus_javaagent下载地址:

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

 

4. 配置

4.1 新增jmx_exporter配置文件

cd /usr/local/jmx_exporter
vim jmx_exporter_config.yaml

  vim中内容如下:

---   
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_bytes
    type: GAUGE
    attrNameSnakeCase: true
  - pattern: 'java.lang<type=OperatingSystem><>((?!process_cpu_time)\w+):'
    name: os_$1
    type: GAUGE
    attrNameSnakeCase: true

  4.2 修改Prometheus.yml,增加JMX Exporter节点

连接安装了Prometheus的机器,定位到Prometheus.yml目录下,执行

vim prometheus.yml

  新增内容如下:

5.启动

-javaagent:/usr/local/jmx_exporter/jmx_prometheus_javaagent-0.14.0.jar=8585:/usr/local/jmx_exporter/jmx_exporter-parent-0.13.0/jmx_exporter_config.yaml

  在java的启动参数中加上如上参数,就会自动jmx_exporter,同时开放8585端口

 

6.配置Grafana模板

因Grafana上已经配置了Prometheus数据库,这里就省去配置数据库配置,直接下载Grafana模板展示数据

Grafana官方模板下载地址:https://grafana.com/grafana/dashboards/

先在官方网站搜索JVM,在结果中找到合适的模板,比如这里找到的是ID为8878的模板,,PS:最好是将模板的json文件下载下来

 

 然后在Grafana上添加模板,如果下图

 

 

该模板Json文件:

链接:https://pan.baidu.com/s/11LLF60LdcASrpnBxORtwPA
提取码:aqrs

可以通过ID来加载json文件,也可以自己将JSON文件内容复制到下面输入框中,点击Load

 

 

 因为我这里已经添加了这个模板,所以会有这些提示,当然这些标红提示项都可以自己改的,改好之后点击Import按钮即可,会显示如下图的监控图

 

标签:JMX,exporter,jmx,Grafana,Prometheus,Exporter,JVM
From: https://www.cnblogs.com/wx170119/p/16927890.html

相关文章

  • Python获取prometheus监控和告警数据
    请参考https://www.cuiliangblog.cn/detail/article/17python使用requests模块获取API信息prometheus的API接口/api/v1/targets/api/v1/query?query=<expr>/api/v1......
  • Prometheus 监测 RocketMQ 最佳实践
    本文作者:郭雨杰,阿里云智能技术专家。Prometheus集成的50多款云产品中,RocketMQ在可观测方面实现了非常完善的功能,是一个特别具有代表性的云产品。RocketMQ如何接入......
  • k8s容器中通过Prometheus Operator部署Kafka Exporter监控Kafka集群
    写在前面在按照下面步骤操作之前,请先确保服务器已经部署k8s,prometheus,prometheusoperator以及kafka集群,关于这些环境的部署,可以自行查找相关资料安装部署,本文档便不在此......
  • centos7 部署Prometheus
    前言:一、前置环境说明1、关闭firewallsystemctlstopfirewalld.servicesystemctldisablefirewalld.service2、关闭selinuxvim/etc/selinux/configSELINUX=disa......
  • JVM
    本篇仅仅是JVM的简介,关于更多的JVM细节,请参见参见:  ​​ 关于类加载子系统详述​​参见:  ​​关于程序计数器详述​​参见  ​​关于Java虚拟机栈的详述​​参见: ......
  • 不背锅运维:Grafana的自动登入(Go和Python分别实现)
    1.实现目标想要达到的目标是:当在浏览器向http://192.168.11.254:3090/auto_login这个地址发起GET请求后能够自动登入Grafana2.实现思路需要额外开发一个API处理来自......
  • Prometheus监控应用
    一、PrometheusPromQL语法PromQL(PrometheusQueryLanguage)是prometheus专有的数据查询语言(DSL),其提供了简洁且贴近自然语言的语法实现了时序数据的分析计算能力。Pro......
  • JVM 指令02__算术指令
    一、概述1.1、作用算术指令用于对操作数栈栈顶的元素(如果运算只包含一个操作数,那么该元素就是栈顶的元素,如果有两个操作数,那么就是栈顶和次栈顶的元素)进行某种特定......
  • Grafana+OpenSearch+Spring Boot集成(三) 【Grafana警报】
    上一篇:Grafana+OpenSearch+SpringBoot集成(二)【Grafana使用】在数据可视化中,可能会存在监测某项数据是否会超过一定数值的需求。Grafana提供了自动告警功能,可以通过配......
  • Prometheus监控之login 登录认证界面(nginx + flask 实现)
    一、说明git地址https://github.com/Rainbowhhy/prometheus_login_webUI1、实现思路主要是通过nginx代理转发进行实现,我们可以在nginx转发到prometheus之前添加一层认证的过......