前面的铺垫工作我们已经完成了,因此这里的话,我们需要配置MyPerf4J了,详细的步骤如下:
1)下载MyPerf4J
这里我们去github上下载MyPerf4J,下载地址是:MyPerf4J下载。
这里下载完成之后是一个zip的包,然后我们解压一下可以看到有3个文件,分别是:
MyPerf4J.properties MyPerf4J-ASM-3.3.0.jar README
2)配置MyPerf4J.properties
接下来我们配置这个MyPerf4J.properties文件,这个文件默认是把日志打印到文件中,但是我们由于需要可视化的监控,因此需要修改下配置,把数据存储到前面的influxdb里面去,所以这里我们修改后的配置文件示例如下:
# MyPerf4J 所有配置请参考:https://github.com/LinShunKang/MyPerf4J/wiki/%E9%85%8D%E7%BD%AE # 配置监控应用的名称 app_name = MybatisDemo # 是否开启 debug 模式,可配置为 true/false debug = true ############################################################################### # HTTP Server Configuration # ############################################################################### # 配置 HTTP Server 端口号 # 格式为:首选端口,备选最小端口,备选最大端口 http.server.port = 2048,2000,2040 # 配置 HTTP Server 最小工作线程数 http.server.min_workers = 1 # 配置 HTTP Server 最大工作线程数 http.server.max_workers = 2 # 配置 HTTP Server 排队数, worker 线程数达到最大时,接受排队的请求个数 http.server.accept_count = 1024 ############################################################################### # Metrics Configuration # ############################################################################### # 配置 MetricsExporter 类型 # log.stdout: 以标准格式化结构输出到 stdout.log # log.standard: 以标准格式化结构输出到磁盘 # log.influxdb: 以 InfluxDB LineProtocol 格式输出到磁盘 # http.influxdb: 以 InfluxDB LineProtocol 格式发送至 InfluxDB server metrics.exporter = http.influxdb # 配置各项监控指标日志的文件路径 # 如果 metrics.exporter 配置为 log.influxdb,建议把所有的 metrics.log.* 路径配置成一样以方便 Telegraf 收集 metrics.log.method = /mdt/demo1/4jlog/metrics.log metrics.log.class_loading = /mdt/demo1/4jlog/metrics.log metrics.log.gc = /mdt/demo1/4jlog/metrics.log metrics.log.memory = /mdt/demo1/4jlog/metrics.log metrics.log.buff_pool = /mdt/demo1/4jlog/metrics.log metrics.log.thread = /mdt/demo1/4jlog/metrics.log metrics.log.file_desc = /mdt/demo1/4jlog/metrics.log metrics.log.compilation = /mdt/demo1/4jlog/metrics.log # 配置日志文件滚动时间间隔,分别有 MINUTELY、HOURLY 和 DAILY 三个值 metrics.log.rolling.time_unit = DAILY # 配置历史日志文件保留个数 metrics.log.reserve.count = 7 # 配置方法指标采集的时间片,单位为 ms,最小 1s,最大 600s metrics.time_slice.method = 10000 # 配置 JVM 指标采集的时间片,单位为ms,最小1s,最大600s metrics.time_slice.jvm = 10000 # 是否展示方法参数类型 metrics.method.show_params = true # 配置 Java 类的层级映射关系 # 规则为:LevelA:[classNameExpA1,classNameExpA2];LevelB:[classNameExpB1,classNameExpB2]; metrics.method.class_level_mapping = Filter:[*Filter];Handler:[*Handler]; ############################################################################### # InfluxDB Configuration # ############################################################################### influxdb.version = 2.7.1 influxdb.orgName = demo influxdb.host = 192.168.31.218 influxdb.port = 8086 influxdb.database = MyPerf4J influxdb.username = admin influxdb.password = admin123 # 配置超时时间,单位:ms influxdb.conn_timeout = 3000 influxdb.read_timeout = 5000 ############################################################################### # 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 # 配置不需要进行监控的方法名,每个方法名用英文 ';' 分隔 #filter.methods.exclude = getId1 代表排除所有方法名为 getId1 的方法 #filter.methods.exclude = DemoServiceImpl.getId1 代表排除类 DemoServiceImpl 中所有方法名为 getId1 的方法 #filter.methods.exclude = DemoServiceImpl.getId1(long) 代表排除类 DemoServiceImpl 中方法签名为 getId1(long) 的方法 filter.methods.exclude = equals;toString;hashCode;wait # 配置是否排除私有方法,true/false filter.methods.exclude_private = true # 配置需要排除的 ClassLoader,可配置多个ClassLoader,用英文';'分隔 filter.class_loaders.exclude = ############################################################################### # Recorder Configuration # ############################################################################### # 配置 Recorder 模式,可配置为 accurate/rough recorder.mode = ACCURATE # 配置 Recorders 转盘的数量 recorders.backup_count = 3 # 指定通用的方法执行时间阈值,单位为 ms recorder.size.timing_arr = 1500 # 指定一个时间片内,超过方法执行时间阈值的次数,仅在 recorder.mode = accurate 时有效 recorder.size.timing_map = 128
这里的核心主要是修改metrics.exporter为http.influxdb,然后配置influxdb相关的信息。
这里我们还要修改下appname,主要是监控的名称,例如我们这里的java包是mybatisdemo:
3)启动java项目,并搭配MyPerf4J
这里我们把解压的MyPerf4J的包的文件放到和准备启动的jar包同级目录,然后配置文件为最新的,接着我们就开始启动这个jar包,启动的命令在readme里面可以看到,这里我们的启动命令是:
nohup java -javaagent:/mdt/demo1/MyPerf4J-ASM-3.3.0.jar -DMyPerf4JPropFile=/mdt/demo1/MyPerf4J.properties -jar MyBatisDemo-1.0.jar --server.port=37788 &
然后我们就可以看到这里的java项目已经启动起来了。
备注:
1、这里由于grafana在influxdb上查询的库是MyPerf4j,所以这里我们需要去influxdb上创建一个bucket,名称为Myperf4j,如下图:
还没有评论,来说两句吧...