pinpoint-v1.8.3系列(一)之pinpoint部署安装②

3. 部署webUI

在我们的《Step2. 编译》中,我们已经完成了所有组件的编译。其中webUI是以war包的格式,发布在pinpoint/web/target中,例如:pinpoint-web-1.8.3-SNAPSHOT.war。 当然,根据官方QuickStart教程,可以直接运行pinpoint/quickstart/bin/start-web.sh启动。但是通过阅读start-web.shfunc_start_pinpoint_web方法你会发现,每次webUI的启动都需要编译一遍,然后部署在pinpoint/quickstart/web/target下, 实在是麻烦,而且后续的调优也不方便。因此我推荐直接部署到tomcat。
tomcat部署很简单,其实就是war包的部署过程,说说简单的方法吧。

① 初步启动

下载tomcat

wget https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.93/bin/apache-tomcat-7.0.93.zip

解压tomcat

unzip apache-tomcat-7.0.94.zip

进入ROOT目录,删掉ROOT下所有之前的文件

cd apache-tomcat-7.0.93/webapps/ROOT

解压war包到ROOT目录下,效果如下:

[root@im-test-cpr-1 ROOT]# pwd
/opt/pinpoint/apache-tomcat-7.0.93/webapps/ROOT
[root@im-test-cpr-1 ROOT]# ls
common        favicon.ico  fonts       lib       scripts    v2
components    favicon.png  images      META-INF  stat.html  WEB-INF
_danger.html  features     index.html  pages     styles

编辑conf/server.xml以配置服务端口,我配置的是28080端口。

 71     

运行bin/startup.sh以启动应用:

image.png

② 配置webUI后重启

但是只是这样配置,webUI是无法正常工作的,因为他并不知道应该去哪里查询数据,换句话讲,我们应该修改webUI中关于HBase的配置。webUI的所有配置都位于apache-tomcat-7.0.93/webapps/ROOT/WEB-INF/classes中:

[root@im-test-cpr-1 classes]# pwd
/opt/pinpoint/apache-tomcat-7.0.93/webapps/ROOT/WEB-INF/classes
[root@im-test-cpr-1 classes]# ls
applicationContext-cache.xml          ehcache.xml
applicationContext-dao-config.xml     hbase.properties
applicationContext-datasource.xml     jdbc.properties
applicationContext-hbase.xml          log4j.xml
applicationContext-web-namespace.xml  mapper
applicationContext-websocket.xml      mybatis-config.xml
applicationContext-web.xml            pinpoint-web.properties
batch                                 project.properties
batch.properties                      servlet-context.xml
com                                   sql
  • 修改hbase配置
    编辑hbase.properties,其中host和port就是hbase对外提供服务的ip&port。在前文hbase的配置中已经提到过了,这里不多解释。其余的配置就保持默认就行。
hbase.client.host=180.**.***.189
hbase.client.port=2181
  • 修改jdbc.properties
    pinpoint自带功能足够强大的报警功能,可以在异常情况发生时,将异常发送给特定的用户组。在不同的场景,可以通过配置来灵活满足。这些配置是持久化到数据库中的,而这个jdbc.properties就是配置数据库连接的地方。
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://devtest.******.rds.bj.***.com:3306/pinpoint?autoReconnect=true&useUnicode=true&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
jdbc.username=***
jdbc.password=*****
image.png

现在你的Application中没有东西,因为agent没有配置,collector没有工作,hbase没有数据....

当然,如果不配置jdbc.properties的话,不会报错,一切看起来很正常。但是在报警配置的所有信息都是存储在运行webUI的jvm内存中,重启一下就没了。

  • 修改pinpoint-web.properties
    这里有两个要修改的地方。其一:config.sendUsage设置为false,因为它是Flag to send usage information (button click counts/order) to Google Analytics,众所周知,大家的PC连接google要科学上网,开着这东西半天打不开网页。其二:config.show.applicationStat设置为true。是为了一会能看到jvm指标。例如:
    image.png
 32 config.sendUsage=false
 33 config.editUserInfo=true
 34 config.openSource=true
 35 config.show.activeThread=true
 36 config.show.activeThreadDump=true
 37 config.enable.activeThreadDump=true
 38 config.show.applicationStat=true
 39 config.show.stackTraceOnError=true
  • 因为我搭建的webUI不是集群,集群部分我就不说了...

  • 修改完成后,重启tomcat

4. 部署collector

collector在编译之后也是一个war包,部署过程和webUI相同,在这里只说一下几个配置文件。
首先是collector中的hbase.properties。因为collector扮演的是接收agent上传的性能数据并持久化到hbase的角色,所以需要知道hbase服务的位置。配置和webUI一样即可。

hbase.client.host=****
hbase.client.port=2181

然后比较重要的是pinpoint-collector.properties。在配置之前首先说一下,agent和collector之间的数据交互,既可以走TCP协议也可以走UDP协议。TCP和UDP的区别就在于性能损耗和数据可靠性,具体请自行百度。但是一定要保证agent和collector保持一致。
例如我的配置:
agent(jvm-stat数据) --tcp--> collector 9995
agent(tx-span数据) --udp--> collector 9996
agent(基础数据) --tcp--> collector 9994

以下是collector配置文件截取:

  2 collector.receiver.base.ip=0.0.0.0
  3 collector.receiver.base.port=9994
 19 # stat receiver config  --------------------------------------------------    -------------------
 20 collector.receiver.stat.udp=false
 21 collector.receiver.stat.udp.ip=0.0.0.0
 22 collector.receiver.stat.udp.port=9995
 23 collector.receiver.stat.udp.receiveBufferSize=4194304
 25 # Should keep in mind that TCP transport load balancing is per connection.    (UDP transport loadbalancing is per packet)
 26 collector.receiver.stat.tcp=true
 27 collector.receiver.stat.tcp.ip=0.0.0.0
 28 collector.receiver.stat.tcp.port=9995
 45 # span receiver config  --------------------------------------------------    -------------------
 46 collector.receiver.span.udp=true
 47 collector.receiver.span.udp.ip=0.0.0.0
 48 collector.receiver.span.udp.port=9996
 49 collector.receiver.span.udp.receiveBufferSize=4194304
 51 # Should keep in mind that TCP transport load balancing is per connection.    (UDP transport loadbalancing is per packet)
 52 collector.receiver.span.tcp=false
 53 collector.receiver.span.tcp.ip=0.0.0.0
 54 collector.receiver.span.tcp.port=9996

配置完成后,启动collector的tomcat。

5. flink提交任务

首先要说明的是,flink的存在是为了在查看Application inspector时,通过flink的预统计,从而在显示JVM指标时,达到快速查询的目的。为了开启Application inspector,请先进入这个链接阅读相关文档。
阅读时需要根据文档进行pinpoint配置文件以及flink配置文件进行相关的配置。flink的相关内容文档中未提及,做一下简单介绍。

  • 下载flink
wget http://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.7.2/flink-1.7.2-bin-scala_2.11.tgz
  • 解压并配置环境变量
#flink
export FLNK_HOME=/opt/pinpoint/flink-1.7.2
export PATH=$FLINK_HOME/bin:$PATH
  • 启动flink
[root@im-test-cpr-1 bin]# pwd
/opt/pinpoint/flink-1.7.2/bin
[root@im-test-cpr-1 bin]# ls
config.sh               mesos-appmaster.sh    start-cluster.sh
flink                   mesos-taskmanager.sh  start-scala-shell.sh
flink.bat               pyflink.bat           start-zookeeper-quorum.sh
flink-console.sh        pyflink.sh            stop-cluster.sh
flink-daemon.sh         pyflink-stream.sh     stop-zookeeper-quorum.sh
historyserver.sh        sql-client.sh         taskmanager.sh
jobmanager.sh           standalone-job.sh     yarn-session.sh
mesos-appmaster-job.sh  start-cluster.bat     zookeeper.sh
[root@im-test-cpr-1 bin]# ./start-cluster.sh
  • 提交任务
    flink要提交的任务是一个jar包,在编译成功后,该jar包位于:pinpoint/flink/target/pinpoint-flink-job-1.8.3-SNAPSHOT.jar,提交时只需要执行:
flink run /opt/pinpoint/pinpoint/flink/target/pinpoint-flink-job-1.8.3-SNAPSHOT.jar

访问 http://{flink所在服务器ip}:8081 查看任务执行情况,如果有正在运行的task,说明任务提交成功。


image.png
image.png

6. 部署agent

pinpoint的性能数据收集是通过无埋点的javaagent的方式,其工作原理会在后续文章中说明。

  • 修改配置文件
    agent的配置文件是/pinpoint-agent-1.8.3-SNAPSHOT/pinpoint.config。与collector对应,需要设置agent发送不同数据时所对应的端口。
    例如我的配置:
    agent(jvm-stat数据) --tcp--> collector 9995
    agent(tx-span数据) --udp--> collector 9996
    agent(基础数据) --tcp--> collector 9994
profiler.collector.ip=180.**.***.***

# placeHolder support "${key}"
profiler.collector.span.ip=${profiler.collector.ip}
profiler.collector.span.port=9996

# placeHolder support "${key}"
profiler.collector.stat.ip=${profiler.collector.ip}
profiler.collector.stat.port=9995

# placeHolder support "${key}"
profiler.collector.tcp.ip=${profiler.collector.ip}
profiler.collector.tcp.port=9994

如果应用于生产环境,考虑到性能影响,需要设置采样率等配置项,可比对文件pinpoint-real-env-lowoverhead-sample.config 参考相关配置。

  • 添加jvm启动参数
    需要添加的参数分为三部分。
    -javaagent:{agent Jar包路径}:编译成功后位于pinpoint/agent/target/pinpoint-agent-1.8.3-SNAPSHOT/pinpoint-bootstrap-1.8.3-SNAPSHOT.jar但是需要注意的是,部署时pinpoint-agent-1.8.3-SNAPSHOT这整个文件夹都需要部署到被监控的宿主应用所在的服务器上,因为下面除了javaagent入口类所在的jar包,还有agent运行所需要的lib和配置文件。
    -Dpinpoint.agentId:需要保证每个被监控的jvm都有不同的agentId。不能超过24个字符
    -Dpinpoint.applicationName: 被监控的jvm所属的应用名称。不能超过24个字符

部署很简单,只需要在服务启动时添加jvm参数。jvm参数的添加方法不同的web服务不一样。具体请自行百度各自web应用的参数的添加方法。我的测试应用是springboot,启动时是java -jar ***.jar,因此将javaagent参数添加在java-jar前即可。

java -javaagent:/home/appplat/runnable/pinpoint-agent-1.8.3-SNAPSHOT/pinpoint-bootstrap-1.8.3-SNAPSHOT.jar -Dpinpoint.agentId=test_java_business -Dpinpoint.applicationName=appplat_business_test -jar appplat-business-0.0.2-SNAPSHOT.jar

6、日志检查
列一下每种服务对应的日志文件的位置,用于排查是否有错误。

  • agent: pinpoint-agent-1.8.3-SNAPSHOT/log
  • collector: tomcat-apache-tomcat-7.0.93/logs/catalina.out QuickStart-pinpoint/quickstart/logs/quickstart.collector.log
  • webUI: tomcat-apache-tomcat-7.0.93/logs/catalina.out QuickStart-pinpoint/quickstart/logs/quickstart.web.log
  • hbase: hbase/hbase-1.0.3/logs
  • flink: flink-1.7.2/log

7、效果展示


image.png

image.png

image.png

image.png

image.png

image.png

你可能感兴趣的:(pinpoint-v1.8.3系列(一)之pinpoint部署安装②)