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

  • 本示例是通过java的代理运行java应用,同时将java虚拟机运行的数据以及应用对应的方法耗时信息数据存储到influxdb中。
  • 本示例使用到的Java应用需要读者自行创建,通过influxdb的客户端收集java应用的虚拟机、方法耗时则由github上提供的开源jar完成。
  • 本示例使用的grafana模板同样由grafana对应的开源模板提供。
  • 本示例分为四个部分,即部署influxdb、创建java应用及配置、部署grafana和集成。
  • 本示例的influxdb和grafana都部署在server2上,实际上你的环境可能不是这样部署的,同时java应用的部署服务器则可随意指定的,故没有说明。

该文章太长,故分成2个部分
【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况(1)【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况(2)【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况(完整版)

一、部署influxdb

1、下载

下载地址:https://docs.influxdata.com/influxdb/v2/install/?t=Linux#manually-download-and-install-the-influxd-binary
下载版本:influxdb2-2.7.10_linux_amd64.tar.gz

2、解压

[alanchan@server2 influxdb2-2.7.10]$ tar -zxvf ./influxdb2-2.7.10_linux_amd64.tar.gz
[alanchan@server2 influxdb2-2.7.10]$ cd /usr/local/bigdata/influxdb2-2.7.10
[alanchan@server2 influxdb2-2.7.10]$ ll
total 8
drwxr-xr-x 3 alanchan root 4096 Aug 16 20:25 etc
drwxr-xr-x 5 alanchan root 4096 Aug 16 20:25 usr
[alanchan@server2 local]$ cd /usr/local/bigdata/influxdb2-2.7.10/usr/bin
[alanchan@server2 bin]$ ll
total 117040
-rwxr-xr-x 1 alanchan root 119847176 Aug 16 20:26 influxd

3、启动

[alanchan@server2 bin]$ nohup ./influxd

4、验证

验证方式可以查看进程也可以通过浏览器进行,本示例介绍的是浏览器,也即通过web UI的方式。

在浏览器输入地址:http://server2:8086/

展示出如下图,则说明部署及启动成功。

【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况(1)_运维监控

5、配置influxdb

在上面启动成功后,则接下来需要进行influxdb的初始化配置,包含用户名、密码、org name、bucket。根据自己的需要填写相应的内容即可,该处的内容后在后面集成grafana的时候有用。

【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况(1)_运维监控_02


作者填写后的内容如下图所示。

【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况(1)_java_03


填写完成后点击continue按钮,则进入下图所示页面。

  • 特别提醒,下图中所示的token非常有用,在与grafana集成的时候要用到。当然,后面也可以进行二次生成,但意义已经不同,建议此处将其保存下来。

【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况(1)_运维监控_04

auaiRUmK30GknpatPFig0TM2i7-8jvsQ_kqIBLF2nNOnmza-nFt2w9XIbOHbfAxaWA13kRefqfAxL2rmivRt7w==

然后点击快速开始,进入下面页面,可以看到数据探索,已经可以看到我们初始化的bucket了。

【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况(1)_java应用_05

6、简单试用

选择init_bucket,选择相应的字段,然后提交查看数据即可。

【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况(1)_java_06


选择Dashboard,查看influxdb默认的dashboard,图示如下。

【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况(1)_运维监控_07


至此,已经完成了influxdb的部署及简单验证。

二、创建java应用及配置

本处使用的是一个简单java应用(为了验证其监控情况,建议使用较为复杂一点的应用以便观察效果,作者使用的是一个网络爬虫应用),然后通过github上的一个开源监控程序进行收集java虚拟机以及方法耗时信息。

1、创建java应用

此处使用的是非spring boot,一般普通的java应用即可。此处略。
通过maven打包成jar包,本示例的名称是spider-baidu.jar 。

2、下载MyPerf4J

下载地址:https://github.com/LinShunKang/MyPerf4J
下载版本:MyPerf4J-ASM-3.4.0-SNAPSHOT.jar

3、修改监控配置

修改配置前,需要先在influxdb中创建名称为MyPerf4J的bucket。由于本示例展示的是将收集的信息直接存储influxdb,所以日志相关的内容可以不配置。

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

# 配置监控应用的名称
app_name = spider-baidu-jar-with-dependencies

debug = false

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

# 配置 MetricsExporter 类型,任选其一
#	log.stdout: 	以标准格式化结构输出到 stdout.log
#	log.standard: 	以标准格式化结构输出到磁盘
#	log.influxdb: 	以 InfluxDB LineProtocol 格式输出到磁盘
#	http.influxdb: 	以 InfluxDB LineProtocol 格式发送至 InfluxDB server,需要另行增加 influxdb 的配置

metrics.exporter = http.influxdb

###############################################################################
#                           InfluxDB Configuration                            #
###############################################################################
# 需要提前在influxdb 2.0中创建好database(bucket),该应用程序会直接将metrics的数据写入influxdb2.0中,不需要额外的telegraf
# 启动应用,具体启动参考readme中的说明

influxdb.version = 2.7.10
influxdb.host  = server2
influxdb.port = 8086
influxdb.orgName = alanchan_win
influxdb.database = MyPerf4J
influxdb.username = alanchanchn
influxdb.password = xxxxx

# 1、如果需要在grafana中展示dashboard,需要提前在grafana中创建好influx的数据源。可以验证是否将数据写入了influxdb中
# 2、先在grafana中导入dashboard,其中对应的id分别是15672(method)和15671(jvm)
# 

# 配置各项监控指标日志的文件路径
# 如果 metrics.exporter 配置为 log.influxdb,建议把所有的 metrics.log.* 路径配置成一样以方便 Telegraf 收集
metrics.log.method = D:/app//logs/metrics.log
metrics.log.class_loading = D:/app//logs/metrics.log
metrics.log.gc = D:/app//logs/metrics.log
metrics.log.memory = D:/app//logs/metrics.log
metrics.log.buff_pool = D:/app//logs/metrics.log
metrics.log.thread = D:/app//logs/metrics.log
metrics.log.file_desc = D:/app//logs/metrics.log
metrics.log.compilation = D:/app//logs/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 = org.spider;

# 配置不需要监控的package,可配置多个,用英文';'分隔
filter.packages.exclude = com;bsh;dev;io;javax;junit;junit3.8.1;net;netscape;

4、运行应用

运行环境不管是windows还是linux都可以,本示例的运行环境JDK是17,所以需要增加–add-opens java.base/java.lang=ALL-UNNAMED,完整的运行命令如下。

java -javaagent:MyPerf4J-ASM-3.4.0-SNAPSHOT.jar -DMyPerf4JPropFile=MyPerf4J.properties --add-opens java.base/java.lang=ALL-UNNAMED -jar spider-baidu.jar

5、验证

验证方式有2个方面,一个是验证应用的功能 是否正确;一个是验证是否将java虚拟机和方法耗时是否写入了influxdb中。此处仅仅验证是否将数据写入了influxdb中。

【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况(1)_运维监控_08


通过上图可以看到,influxdb已经可以正常的收集到应用的运行数据了。

三、部署grafana

1、部署

1)、下载

下载地址:https://grafana.com/grafana/dashboards/?search=influx&page=6
下载版本:https://dl.grafana.com/oss/release/grafana-11.1.4.linux-amd64.tar.gz

2)、解压

tar -zxvf grafana-11.1.4.linux-amd64.tar.gz
cd /usr/local/bigdata/grafana-v11.1.4/bin

3)、启动

启动命令可以是下面2种。

grafana-server start
或,推荐如下
grafana server start

[alanchan@server2 bin]$ grafana-server status
Deprecation warning: The standalone 'grafana-server' program is deprecated and will be removed in the future. Please update all uses of 'grafana-server' to 'grafana server'
INFO [08-28|00:55:36] Starting Grafana                         logger=settings version=11.1.4 commit=2355de00c61fdd6609a67f35ab506fae87f09a84 branch=HEAD compiled=2024-08-28T00:55:36Z
INFO [08-28|00:55:36] Config loaded from                       logger=settings file=/usr/local/bigdata/grafana-v11.1.4/conf/defaults.ini
INFO [08-28|00:55:36] Target                                   logger=settings target=[all]
INFO [08-28|00:55:36] Path Home                                logger=settings path=/usr/local/bigdata/grafana-v11.1.4
INFO [08-28|00:55:36] Path Data                                logger=settings path=/usr/local/bigdata/grafana-v11.1.4/data
INFO [08-28|00:55:36] Path Logs                                logger=settings path=/usr/local/bigdata/grafana-v11.1.4/data/log
INFO [08-28|00:55:36] Path Plugins                             logger=settings path=/usr/local/bigdata/grafana-v11.1.4/data/plugins
INFO [08-28|00:55:36] Path Provisioning                        logger=settings path=/usr/local/bigdata/grafana-v11.1.4/conf/provisioning
INFO [08-28|00:55:36] App mode production                      logger=settings

2、验证

验证方式可以查看进程也可以通过浏览器进行,本示例介绍的是浏览器,也即通过web UI的方式。
在浏览器输入地址:http://server2:3000/login
展示出如下图,则说明部署及启动成功。

默认密码admin/admin,修改后admin/xxxxxx

【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况(1)_grafana_09


登录进去后,如下图所示。

【运维监控】influxdb 2.0+grafana 监控java 虚拟机以及方法耗时情况(1)_java应用_10


以上,则完成了grafana的部署。