文档章节

Centos7 MyPerf4J安装配置及可视化页面

lwenhao
 lwenhao
发布于 03/01 15:49
字数 1404
阅读 59
收藏 1

Centos7 MyPerf4J安装配置及可视化页面

一个针对高并发、低延迟应用设计的高性能 Java 性能监控和统计工具。 MyPerf4J 采用 JavaAgent 配置方式,透明化接入应用,对应用代码完全没有侵入。

参考:MyPerf4J

一、特性

  • 高性能: 单线程支持每秒 1000 万次 响应时间的记录,每次记录只花费 73 纳秒
  • 无侵入: 采用 JavaAgent 方式,对应用程序完全无侵入,无需修改应用代码
  • 低内存: 采用内存复用的方式,整个生命周期只产生极少的临时对象,不影响应用程序的 GC
  • 高精度: 采用纳秒来计算响应时间
  • 高实时: 支持秒级监控,最低 1 秒

二、使用场景

  • 在开发环境中快速定位 Java 应用程序的性能瓶颈
  • 在生产环境中长期监控 Java 应用程序的性能指标

三、安装

1. 打包

如果你使用的是JDK7或者更高版本,可以尝试直接下载MyPerf4J-ASM.jar 可以忽略打包步骤

git clone git@github.com:LinShunKang/MyPerf4J.git
mvn clean package
把 /MyPerf4J-develop/MyPerf4J-ASM/target/MyPerf4J-ASM-${MyPerf4J-version}.jar 重命名为 MyPerf4J-ASM.jar

2. 配置

FlowProcessAgent配置文件:

#应用名称
AppName=FlowProcessAgent

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

#配置各个Metrics日志的文件路径,可不配置
MethodMetricsFile=/home/lwenhao/MyPerf4J/FlowProcessAgent/logs/method_metrics.log
ClassMetricsFile=/home/lwenhao/MyPerf4J/FlowProcessAgent/logs/class_metrics.log
GCMetricsFile=/home/lwenhao/MyPerf4J/FlowProcessAgent/logs/gc_metrics.log
MemMetricsFile=/home/lwenhao/MyPerf4J/FlowProcessAgent/logs/memory_metrics.log
BufPoolMetricsFile=/home/lwenhao/MyPerf4J/FlowProcessAgent/logs/buf_pool_metrics
ThreadMetricsFile=/home/lwenhao/MyPerf4J/FlowProcessAgent/logs/thread_metrics.log

#配置Record模式,可配置为accurate/rough
RecorderMode=accurate

#配置时间片,单位为ms,最小1s,最大600s
MilliTimeSlice=1000

#需要监控的package,可配置多个,用英文';'分隔
IncludePackages=quaqu.*

#是否展示方法参数类型
ShowMethodParams=true
#配置通用的方法响应时间阈值,单位为 ms
ProfilingTimeThreshold = 1

配置说明

注意:使用Windows系统的,请修改路径格式。

在 JVM 启动参数里加上以下两个参数:

  • -javaagent:/your/path/to/MyPerf4J-ASM.jar
  • -DMyPerf4JPropFile=/your/path/to/myPerf4J.properties

例如:

java -javaagent:/home/lwenhao/MyPerf4J/FlowProcessAgent/MyPerf4J-ASM.jar -DMyPerf4JPropFile=/home/lwenhao/MyPerf4J/FlowProcessAgent/FlowProcessAgent -jar FlowProcessAgent.jar

四、安装配置InfluxDB

MyPerf4J 默认支持使用 InfluxDB 进行数据存储

  • MyPerf4J 向用户指定的日志文件中写入 LineProtocol 格式的性能统计数据
  • 通过日志收集器 Telegraf 从日志文件中读取数据并导入 InfluxDB 中。 具体步骤如下:
  • 配置 MetricsProcessorType=2
  • InfluxDB

1.安装 InfluxDB

注意:安装InfluxDB软件包,需要root或具有管理员权限才能成功完成

新建/etc/yum.repos.d/influxdb.repo

[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key

安装

yum install influxdb

配置环境变量

vim /etc/profile

添加:export INFLUXDB_CONFIG_PATH=/etc/influxdb/influxdb.conf

source .bash_profile

[root[@lwh](https://my.oschina.net/bnulwh) ~]# echo $INFLUXDB_CONFIG_PATH
/etc/influxdb/influxdb.conf

编辑/etc/influxdb/influxdb.conf

主要修改一下:

[http]
  # Determines whether HTTP endpoint is enabled.
  enabled = true

  # Determines whether the Flux query endpoint is enabled.
  # flux-enabled = false

  # Determines whether the Flux query logging is enabled.
  # flux-log-enabled = false

  # The bind address used by the HTTP service.
  bind-address = ":8086"

  # Determines whether user authentication is enabled over HTTP/HTTPS.
  auth-enabled = false

  # The default realm sent back when issuing a basic auth challenge.
  realm = "InfluxDB"

  # Determines whether HTTP request logging is enabled.
  log-enabled = true

确保存储数据和预写日志(WAL)的目录对于运行该influxd服务的用户是可写的。 注意:当前是没有密码验证的

启动

systemctl start influxdb

检查是否启动

[root[@lwh](https://my.oschina.net/bnulwh) /]# influx
Connected to http://localhost:8086 version 1.7.4
InfluxDB shell version: 1.7.4
Enter an InfluxQL query
> show databases
name: databases
name
----
_internal
> 

五、安装配置Telegraf

telegrafv1.9

MyPerf4J 本身不访问 InfluxDB,而是通过把统计数据写入日志文件中,通过 Telegraf 把统计数据导入 InfluxDB 中。

安装

如果上面/etc/yum.repos.d/influxdb.repo文件已创建,则直接执行:

yum install telegraf

编辑/etc/telegraf/telegraf.conf

# Global tags can be specified here in key="value" format.
[global_tags]
  dc = ""

# Configuration for telegraf agent
[agent]
  ## Default data collection interval for all inputs
  interval = "1s"
  ## Rounds collection interval to 'interval'
  ## ie, if interval="10s" then always collect on :00, :10, :20, etc.
  round_interval = true
  metric_batch_size = 1000
  metric_buffer_limit = 10000
  collection_jitter = "0s"
  ## Default flushing interval for all outputs. You shouldn't set this below
  ## interval. Maximum flush_interval will be flush_interval + flush_jitter
  flush_interval = "1s"
  flush_jitter = "0s"
  precision = "ms"
  debug = false
  quiet = false
  logfile = "/var/log/telegraf/telegraf.log"
  ## Override default hostname, if empty use os.Hostname()
  hostname = ""
  ## If set to true, do no set the "host" tag in the telegraf agent.
  omit_hostname = false

[[outputs.influxdb]]
  urls = ["http://127.0.0.1:8086"]
  database = "FlowProcessAgent"
  retention_policy = ""
  write_consistency = "any"
  timeout = "5s"

[[inputs.tail]]
  files = ["/home/lwenhao/MyPerf4J/FlowProcessAgent/logs/gc_metrics.log","/home/lwenhao/MyPerf4J/FlowProcessAgent/logs/class_metrics.log","/home/lwenhao/MyPerf4J/FlowProcessAgent/logs/memory_metrics.log","/home/lwenhao/MyPerf4J/FlowProcessAgent/logs/method_metrics.log","/home/lwenhao/MyPerf4J/FlowProcessAgent/logs/thread_metrics.log","/home/lwenhao/MyPerf4J/FlowProcessAgent/logs/buf_pool_metrics"]
  from_beginning = false
  pipe = false
  ## Method used to watch for file updates.  Can be either "inotify" or "poll".
  watch_method = "inotify"
  data_format = "influx"

注意:database、files的配置

启动

systemctl start telegraf

/var/log/telegraf/telegraf.log

2019-03-01T08:36:14Z I! Loaded inputs: inputs.tail
2019-03-01T08:36:14Z I! Loaded aggregators: 
2019-03-01T08:36:14Z I! Loaded processors: 
2019-03-01T08:36:14Z I! Loaded outputs: influxdb
2019-03-01T08:36:14Z I! Tags enabled: dc= host=sinorail
2019-03-01T08:36:14Z I! [agent] Config: Interval:1s, Quiet:false, Hostname:"sinorail", Flush Interval:1s

启动成功

六、安装Grafana(可视化界面)

Grafana

新建/etc/yum.repos.d/grafana.repo

[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

安装

yum install grafana

启动

systemctl daemon-reload
service grafana-server start

访问

http://192.168.1.222:3000/
  • 用户名:admin
  • 密码:admin

添加DB

添加JVM Dashboard

MyPerf4J-InfluxDB-JVM

输入ID:8787

添加Method Dashboard

MyPerf4J-InfluxDB-Method

输入ID:7766

注意:/home/lwenhao/MyPerf4J/FlowProcessAgent/logs/method_metrics.log没有内容,所以这里没有数据

© 著作权归作者所有

lwenhao
粉丝 4
博文 115
码字总数 63080
作品 0
海淀
程序员
私信 提问
MyPerf4J 一个简单、快速且无侵入的Java方法监控工具

MyPerf4J: GitHub地址 一个极快的Java接口性能监控和统计工具。受perf4j和TProfiler启发而来。 致力于成为可在生产环境长时间使用的性能监控和统计工具! 如果觉得写得还行,请给个star :)...

怪盗_7003
2018/04/30
0
0
Java 方法性能监控和统计工具 - MyPerf4J

MyPerf4J是什么? 一个极快、无侵入的Java方法性能监控和统计工具。受 perf4j 和 TProfiler启发而来。 致力于成为一个可在生产环境长时间运行的性能监控和统计工具。 MyPerf4J利用ASM在JVM启...

ThinkHigher
2018/07/19
1K
1
CentOS7环境安装Kubernetes四部曲之二:配置模板和安装master

本文是《CentOS7环境安装Kubernetes四部曲》系列的第二篇,前一篇《CentOS7环境安装Kubernetes三部曲:标准化机器准备》我们把机器准备好了,并且做了必要的设置,现在我们用这些机器来接着安...

boling_cavalry
2018/03/20
0
0
快速构建ceph可视化监控系统

前言 ceph的可视化方案很多,本篇介绍的是比较简单的一种方式,并且对包都进行了二次封装,所以能够在极短的时间内构建出一个可视化的监控系统 本系统组件如下: ceph-jewel版本 ceph_expor...

万建宁
2018/07/19
171
0
CentOS7环境安装Kubernetes四部曲之三:添加节点

本文是《CentOS7环境安装Kubernetes四部曲》的第三篇,在前面两篇我们先将实战用的机器做统一处理,再完成rancher的安装,并且将Kubernetes的master节点准备完毕,本章我们将一台机器作为nod...

boling_cavalry
2018/03/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SSH安全加强两步走

从 OpenSSH 6.2 开始已经支持 SSH 多因素认证,本文就来讲讲如何在 OpenSSH 下启用该特性。 OpenSSH 6.2 以后的版本多了一个配置项 AuthenticationMethods。该配置项可以让 OpenSSH 同时指定...

xiangyunyan
24分钟前
2
0
C或C++不是C/C++

http://www.voidcn.com/article/p-mucdruqa-ws.html

shzwork
今天
6
0
OSChina 周六乱弹 —— 如何将梳子卖给和尚

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @for_ :划水五分钟,专注两小时。分享Various Artists的单曲《贝多芬第8号钢琴奏鸣曲悲伤的第三乐章》: 《贝多芬第8号钢琴奏鸣曲悲伤的第三乐...

小小编辑
今天
175
8
ES5

什么是ES5:比普通js运行要求更加严格的模式 为什么:js语言本身有很多广受诟病的缺陷 如何:在当前作用域的顶部添加:"use strict" 要求: 1、禁止给未声明的变量赋值 2、静默失败升级为错误...

wytao1995
今天
7
0
c++ 内联函数调用快的原因

见图片分析

天王盖地虎626
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部