暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

实践应用性能管理工具使用系列一:Pinpoint代码编译安装

IT那活儿 2022-07-21
2337
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


01

近期因客户现场需求,需要利用Pinpoint对应用的性能及jvm指标进行监测。
Pinpoint 是一款开源的 APM(Application Performance Management/应用性能管理)工具,通过跟踪分布式应用之间的调用来提供解决方案,以帮助分析系统的总体结构和内部模块之间如何相互联系。
  • Pinpoint Collector: 接收pinpoint agent 采集过来性能数据,如tracing数据 ,jvm数据等,接收数据协议支持grpc/thrift;
  • Pinpoint Web :web管理界面;
  • Pinpoint Agent :在jvm 上加入agent 代理方式对应用性能数据做采样监测,并将数据上传给collector;
  • HBase : 存储采集上来的性能数据。


02

以安装pinpoint 最新稳定版本2.3.3 为例,主要是分为如下几种方式
  • 方式一:快速安装

    通过下载官方稳定版本自带编译包进行下载安装,适用于不对pinpoint进行二次开发使用的场景,参考文档https://github.com/pinpoint-apm/pinpoint/blob/v2.3.3/doc/quickstart.md

  • 方式二:编译部署
    基于pinpoint 源代码进行编译部署,适用于对pinpoint  进行二次开发,

    https://github.com/pinpoint-apm/pinpoint/blob/v2.3.3/doc/installation.md

  • 方式三:容器部署
    利用docker-compose命令实现一键部署运行pinpoint 环境,无需单独部署相关组件,参考文档 https://github.com/pinpoint-apm/pinpoint-docker


03

本文介绍的是通过编译方式实现pinpoint 最新稳定 v2.3.3 版本安装
3.1 下载源代码
git clone -b v2.3.3 https://github.com/pinpoint-apm/pinpoint.git
3.2 安装maven(可选)
https://maven.apache.org/download.cgi
下载解压:tar -xzvf  apache-maven-3.8.4.tar.gz
新增仓库地址:
apache-maven-3.8.4/conf/settings.xml
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

修改.bash_profile环境变量:
export M2_HOME=/Users/Documents/apache-maven-3.8.4
export PATH=$PATH:$M2_HOME/bin

生效环境变量:
source .bash_profile

3.3 安装jdk

编译pinpoint 需要安装jdk 7/8/9 三个版本,并设置对应的环境变量:
  • JAVA_HOME

    JAVA_HOME 环境变量设置为 JDK 8 主目录,jdk8 小版本无特别要求,尽量使用最新版本。

    jdk下载地址:https://www.oracle.com/java/technologies/downloads/#java8
  • JAVA_8_HOME

    JAVA_8_HOME 环境变量设置为 JDK 8 主目录,JAVA_HOME 与JAVA_8_HOME

    设置成同一个路径。
  • JAVA_7_HOME

    JAVA_7_HOME 环境变量设置为 JDK 7 主目录,版本要求1.7.0_80。

    jdk下载地址:

    https://www.oracle.com/java/technologies/javase/javase7-archive-downloads.html
  • JAVA_9_HOME

    JAVA_9_HOME 环境变量设置为 JDK 9 主目录,版本要求jdk-9.0.4。

    jdk下载地址:

    https://www.oracle.com/java/technologies/javase/javase9-archive-downloads.html

3.4 代码编译
./mvnw install -DskipTests=true
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for pinpoint 2.3.3:
[INFO]
[INFO] pinpoint ........................................... SUCCESS [ 3.692 s]
[INFO] pinpoint-annotations ............................... SUCCESS [ 2.553 s]
[INFO] pinpoint-commons ................................... SUCCESS [ 4.639 s]
。。。。。
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18:09 min
[INFO] Finished at: 2022-05-07T20:37:30+08:00
[INFO] ------------------------------------------------------------------------

如果在编译过程出现 BUILD FAILURE 根据编译过程报错提示找到对应的解决办法, 编译成后会在子模块的target目录下下找到对应的编译包。
错误: 找不到或无法加载主类 org.apache.maven.wrapper.MavenWrapperMain
解决办法:mvn -N io.takari:maven:wrapper
子模块
编译目录
web
web/target/pinpoint-web-2.3.3.jar
collector
collector/pinpoint-collector-2.3.3.jar
agent
agent/target/pinpoint-agent-2.3.3


3.5 hbase部署

生产环境建议采用分布式部署方式,测试环境可以采用单机部署方式,本次以单机方式进行部署
版本要求:v2.3.3 官方支持hbase 版本 1.2.x/ 1.4.x/ 2.0.x ,pinpoint 默认使用hbase 1.x版本,如果想使用hbase 2.0.x 版本需要使用hbase2-module模块。
下载地址
https://archive.apache.org/dist/hbase/
https://archive.apache.org/dist/hbase/1.4.14/hbase-1.4.14-bin.tar.gz
1)安装
tar xvf hbase-1.4.14-bin.tar.gz
cd hbase-1.4.14
mkdir   zookeeperdata
mkdir    tmp
mkdir   data

2)修改配置
cd conf
cp hbase-site.xml hbase-site.bak

在hbase-site.xml 里面新增如下内容:

<configuration>
<property>
<name>hbase.rootdir</name>
<value>/home/hbase-1.4.14/data</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/home/hbase-1.4.14/tmp</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.xxx.xxx:2181</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hbase-1.4.14/zookeeperdata</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>false</value>
</property>
</configuration>

3)启动
cd  bin
sh  start-hbase.sh

查看进程:jps (存在HMaster)或者ps -ef|grep hbase;

日志查看: . logs/.
4)导入pinpoint表模型
cd bin
./hbase shell hbase-create.hbase

表模型:

https://github.com/pinpoint-apm/pinpoint/blob/v2.3.3/hbase/scripts/hbase-create.hbase
表模型说明:https://github.com/pinpoint-apm/pinpoint/tree/v2.3.3/hbase/scripts
检查表模型是否导入成功:
./hbase shell
hbase(main):003:0> list
TABLE
AgentEvent
AgentInfo
AgentLifeCycle
AgentStatV2
ApiMetaData
ApplicationIndex
ApplicationMapStatisticsCallee_Ver2
ApplicationMapStatisticsCaller_Ver2
ApplicationMapStatisticsSelf_Ver2
ApplicationStatAggre
ApplicationTraceIndex
HostApplicationMap_Ver2
SqlMetaData_Ver2
StringMetaData
TraceV2
15 row(s) in 0.0310 seconds

=> ["AgentEvent", "AgentInfo", "AgentLifeCycle",
"AgentStatV2", "ApiMetaData", "ApplicationIndex",
"ApplicationMapStatisticsCallee_Ver2",
"ApplicationMapStatisticsCaller_Ver2",
"ApplicationMapStatisticsSelf_Ver2", "ApplicationStatAggre",
"ApplicationTraceIndex", "HostApplicationMap_Ver2",
"SqlMetaData_Ver2", "StringMetaData", "TraceV2"]

3.6 启动pinpoint-web
java -Xms1g -Xmx1g -jar -
Dpinpoint.zookeeper.address=192.168.xxx.xxx -
Dhbase.client.port=2181 pinpoint-web-boot-2.3.3.jar --
server.port=8080

说明:

  • pinpoint.zookeeper.address  zk 地址;
  • hbase.client.port  hbase客户端端口;
  • server.port  web 端口,默认为 8080;
  • 日志查看 logs/.
3.7 安装pinpoint-collector
java -Xms1g -Xmx1g -jar -
Dpinpoint.zookeeper.address=192.168.xxx.xxx -
Dhbase.client.port=2181 pinpoint-collector-boot-2.3.3.jar

说明:

  • pinpoint.zookeeper.address  zk 地址;
  • hbase.client.port  hbase客户端端口;
  • 日志查看 logs/.
3.8 配置pinpoint-agent
  • 修改pinpoint-agent配置文件:
pinpoint-agent-2.3.3/profiles/release/pinpoint.config
    将collector 指向对应的ip地址:
profiler.transport.grpc.collector.ip=192.168.xxx.xxx
profiler.collector.ip=192.168.xxx.xxx

  • 选择一个需要监测的应用,在jvm参数里面新增pinpoint-agent 配置信息:
JAVA_OPTS="-javaagent:/xx/pinpoint-agent-2.3.3/pinpoint-
bootstrap-2.3.3.jar -Dpinpoint.agentId=192.168.xxx.xxx-8081 -Dpinpoint.app
licationName=snc-datacollection ... "

    重启应用,并且操作一下所监测的应用业务模板,同时查看agent 生成的日志:
/xx/pinpoint-agent-2.3.3/logs/
3.9 查看agent采集性能数据
http://xx.xx.xx.xx:8080  (pinpoint web 端口来源于--server.port 参数指定,默认为 8080)
  • 主页,能看到所监测pinpoint.applicationName名称,说明应用已成功监测
  • 调用链数据,查看代码调用过程,包含调用了哪一些sql:
  • 点击主机Inspector按钮查看jvm监测指标:

本文作者:暨景书(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论