简介

pinpoint是开源在github上的一款APM监控工具,它是用Java编写的,用于大规模分布式系统监控。它对性能的影响最小(只增加约3%资源利用率),安装agent是无侵入式的。

各大APM工具,几乎都是根据google这篇经典的Dapper论文而来,一定要读一读。这里是它的源文地址:https://research.google.com/pubs/pub36356.html,感谢这位同学的翻译:http://bigbully.github.io/Dapper-translation/

pinpoint提供了一些功能:

  • 服务映射:通过可视化其组件如何互连来了解任何分布式系统的关联关系。单击节点可显示有关组件的详细信息,例如其当前状态和事务计数。
  • 实时的活跃线程数
  • 请求/响应散点图
  • 调用栈
  • 查看有关应用程序的其他详细信息,例如CPU使用率,内存/垃圾收集,TPS和JVM参数

整个pinpoint架构分为3部分:pinpoint-collector、pinpoint-agent、pinpoint-webUI。

pinpoint-agent:用来收集单个应用的信息,并将收集好的应用信息发送到pinpoint-collector中

pinpoint-collector:用来处理pinpoint-agent发送过来的信息,并将信息收集好之后存储到HBase中

pinpoint-webUI:查找出HBase中的数据并展示

所以我这里需要准备两台机器:

10.200.201.xxx:用于安装pinpoint-collector、pinpoint-webUI、HBase

10.200.201.yyy:用于安装pinpoint-agent,负责收集应用的信息

环境安装

安装jdk

我这里用的是rpm包直接安装的:rpm -ivh jdk-8u171-linux-x64.rpm

安装好后配置一下JAVA_HOME:

使用vim配置一下环境变量:

vim /etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_45
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

然后加载一些profile文件:

source /etc/profile

安装HBase

这里有个对照图:

由上面我们可以看到HBase我们需要安装1.2.x版本的

下载地址:

http://archive.apache.org/dist/hbase/

我这里下载的是1.2.12版本的。

  1. 将Hbse放到指定目录
cd /app/install
tar -zxvf hbase-1.2.12-bin.tar.gz
  1. 修改配置信息

    修改hbase-env.sh
vim /app/install/hbase-1.2.12/conf/hbase-env.sh

#加入JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_45

修改hbase-site.xml

vim /app/install/hbase-1.2.12/conf/hbase-site.xml

<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///app/data/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/app/data/zookeeper</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
<description>Property from ZooKeeper'sconfig zoo.cfg. The port at which the clients will connect.
</description>
</property>
<!-- false是单机模式,true是分布式模式 -->
<property>
<name>hbase.cluster.distributed</name>
<value>false</value>
</property>
</configuration>
  1. 启动HBase
cd /app/install/hbase-1.2.12/bin
./start-hbase.sh # 查看Hbase是否启动成功,如果启动成功的会看到"HMaster"的进程
[root@localhost bin]# jps
12075 Jps
11784 HMaster
  1. 初始化pinpoint库

    下载脚本:https://github.com/naver/pinpoint/blob/master/hbase/scripts/hbase-create.hbase
#进入到hbase的bin目录中
cd /app/install/hbase-1.2.12/bin
#执行脚本
./bin/hbase shell /app/install/pinpoint/hbase/scripts/hbase-create.hbase # 执行完了以后,进入Hbase
./hbase shell #进入后可以看到Hbase的版本,还有一些相关的信息
2019-10-12 16:18:28,074 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.2.12, r91d5ec4c4dcd10ceec984c6e663ea82acf353995, Sat Apr 6 15:27:28 CDT 2019 # 输入"status 'detailed'"可以查看刚才初始化的表,是否存在
hbase(main):002:0> status 'detailed'

也可以登录web,来查看HBase的数据是否初始化成功

http://10.200.201.xxx:16010/master-status

安装pinpoint-collector

制作一个tomcat容器,端口号为8081

#将pinpoint-collector的war包丢到Tomcat的webapps目录下
cp pinpoint-collector-1.8.5.war ../apache-tomcat-8081/webapps/ #将war包名字改一下
mv pinpoint-web-1.8.5.war pp-collector.war #启动tomcat
./bin/startup.sh # 查看日志,是否成功启动
tail -f ../logs/catalina.out #如果hbase安装在别的机器下需要修改一下配置
cd /app/install/apache-tomcat-8081
vim webapps/pp-collector/WEB-INF/classes/hbase.properties
#修改hbase的ip和hbase所对应的端口号
hbase.client.host=10.200.201.xxx
hbase.client.port=2181

安装pinpoint-web

解压一个tomcat容器,端口号为8080

#将pinpoint-web放到tomcat的webapps容器中
cp pinpoint-web-1.8.5.war ../apache-tomcat-8080/webapps/ #修改一下war包名
mv pinpoint-web-1.8.5.war pp-web.war #启动tomcat
./bin/startup.sh # 查看日志,是否成功启动
tail -f ../logs/catalina.out #如果hbase安装在别的机器下需要修改一下配置
cd /app/install/apache-tomcat-8080
vim webapps/pp-web/WEB-INF/classes/hbase.properties #修改hbase的ip和hbase所对应的端口号
hbase.client.host=10.200.201.xxx
hbase.client.port=2181

然后可以在浏览器中:http://10.200.201.xxx:8080/pp-web/

部署pinpoint-agent采集监控数据

  1. 传入pinpoint-agent包

    首先将pinpoint-agent-1.8.5.tar.gz传入到服务器10.200.201.yyy的/app/install/pinpoint-agent/中

然后执行tar -zxvf pinpoint-agent-1.8.5.tar.gz解压

  1. 配置pp-agent采集器
cd /app/install/pinpoint-agent
vim pinpoint.config # 主要修改IP,只需要指定到安装pp-col的IP就行了,安装pp-col启动后,自动就开启了9994,9995,9996的端口了。这里就不需要操心了,如果有端口需求,要去pp-col的配置文件("pp-collector/webapps/ROOT/WEB-INF/classes/pinpoint-collector.properties")中,修改这些端口
profiler.collector.ip=10.200.201.xxx
  1. 如果监控的是tomcat
# 修改测试项目下的tomcat启动文件"catalina.sh",修改这个只要是为了监控测试环境的Tomcat,增加探针
vi catalina.sh # 第一行是pp-agent的jar包位置
# 第二行是agent的ID,这个ID是唯一的,我是用pp + 今天的日期命名的,只要与其他的项目的ID不重复就好了
# 第三行是采集项目的名字,这个名字可以随便取,只要各个项目不重复就好了
CATALINA_OPTS="$CATALINA_OPTS -javaagent:$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=$AGENT_ID"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=$APPLICATION_NAME" # 配置好了。就可以开始监控了,我们启动测试用的Tomcat的服务器
cd /data/pp-test/bin/
./startup.sh # 查看启动日志,确实Tomcat启动
tail -f ../logs/catalina.out
  1. springboot包部署

    如果是jar包部署,直接在启动命令加启动参数:
nohup java -javaagent:/app/install/pinpoint-agent/pinpoint-bootstrap-1.8.5.jar -Dpinpoint.agentId=$AGENT_ID -Dpinpoint.applicationName=$APPLICATION_NAME

功能设置

设置监控

如果按照上面的方法安装完了之后在进行监控设置的或者用户设置的时候会报错的:

所以需要配置一下mysql:

首先需要跑两个sql脚本:

https://github.com/naver/pinpoint/blob/master/web/src/main/resources/sql/CreateTableStatement-mysql.sql

https://github.com/naver/pinpoint/blob/master/web/src/main/resources/sql/SpringBatchJobRepositorySchema-mysql.sql

然后进入到pinpoint-web的war所在的tomcat的容器中,修改配置文件:WEB-INF/classes/jdbc.properties

并设值mysql的账号密码

jdbc.url=jdbc:mysql://localhost:13306/pinpoint?characterEncoding=UTF-8
jdbc.username=admin
jdbc.password=admin

我们可以在application里面给不同的应用设置不同的提醒规则,具体的提醒规则如下:

SLOW COUNT:发送到应用程序的慢速请求数超过配置的阈值时触发

SLOW RATE
发送到应用程序的慢速请求的百分比(%)超过配置的阈值时触发 ERROR COUNT
发送到应用程序的失败请求数超过配置的阈值时触发。 ERROR RATE
发送到应用程序的失败请求的百分比(%)超过配置的阈值时触发。 TOTAL COUNT
发送到应用程序的所有请求数超过配置的阈值时触发。 SLOW COUNT TO CALLEE
当应用程序发送的慢速请求数超过配置的阈值时触发。 您必须在配置UI的“注释...”框中指定域或地址(IP,端口)
例如)www.naver.com,127.0.0.1:8080 SLOW RATE TO CALLEE
当应用程序发送的慢速请求的百分比(%)超过配置的阈值时触发。 您必须在配置UI的“注释...”框中指定域或地址(IP,端口)
ex) www.naver.com, 127.0.0.1:8080 ERROR COUNT TO CALLEE
当应用程序发送的失败请求数超过配置的阈值时触发。 您必须在配置UI的“注释...”框中指定域或地址(IP,端口)
ex) www.naver.com, 127.0.0.1:8080 ERROR RATE TO CALLEE
当应用程序发送的失败请求的百分比(%)超过配置的阈值时触发。 您必须在配置UI的“注释...”框中指定域或地址(IP,端口)
ex) www.naver.com, 127.0.0.1:8080 TOTAL COUNT TO CALLEE
当应用程序发送的所有请求数超过配置的阈值时触发。 您必须在配置UI的“注释...”框中指定域或地址(IP,端口)
ex) www.naver.com, 127.0.0.1:8080 HEAP USAGE RATE
当应用程序的堆使用率(%)超过配置的阈值时触发。 JVM CPU USAGE RATE
当应用程序的CPU使用率(%)超过配置的阈值时触发。 SYSTEM CPU USAGE RATE
当应用程序的CPU使用率(%)超过配置的阈值时发送警报。 DATASOURCE CONNECTION USAGE RATE
当应用程序的数据源连接使用率(%)超过配置的阈值时触发。 FILE DESCRIPTOR COUNT
当打开的文件描述符的数量超过配置的阈值时,发送警报。

然后需要在webapps/pp-web/WEB-INF/classes/batch.properties里面配置一下邮件服务器的信息:

pinpoint.url= #pinpoint-web server url
alarm.mail.server.url= #smtp server address
alarm.mail.server.port= #smtp server port
alarm.mail.server.username= #username for smtp server authentication
alarm.mail.server.password= #password for smtp server authentication
alarm.mail.sender.address= #sender's email address #例如
pinpoint.url=http://pinpoint.com
alarm.mail.server.url=stmp.server.com
alarm.mail.server.port=583
alarm.mail.server.username=pinpoint
alarm.mail.server.password=pinpoint
alarm.mail.sender.address=pinpoint_operator@pinpoint.com

pinpoint1.8.5安装及使用指南的更多相关文章

  1. 在 Windows 上安装Rabbit MQ 指南

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...

  2. P6 EPPM 安装与配置指南 16 R1 2016.4

       关于安装和 配置P6 EPPM 本指南告诉你如何自动 安装和配置您的应用程序. 在您开始之前,阅读 先决条件 P6 EPPM配置 (7页). 安装P6 EPPM 您将使用 安装程序 (窗口) . ...

  3. P6 EPPM 16.1 安装和配置指南 1

    安装和配置指南下一topiccontents这些指南解释如何安装和配置数据库服务器,和P6 EPPM,模块:他们还提供在P6 EPPM能够解决所有模块的概述.标准指南帮助您配置和部署应用程序向导P6 ...

  4. P6 EPPM R16.1安装与配置指南(三)

    P6 EPPM R16.1安装与配置指南(三) 解压:V137390-01.zip 修改 D:\P6_R161\p6suite\database\dbsetup.bat   的行 SET JAR_FI ...

  5. P6 EPPM R16.1安装与配置指南(二)

    P6 EPPM R16.1安装与配置指南(一) http://www.cnblogs.com/endv/p/5634620.html P6 EPPM R16.1安装与配置指南(二) 环境变量配置 新建 ...

  6. P6 EPPM R16.1安装与配置指南(一)

    标题 http://www.cnblogs.com/endv/p/5634620.html 安装与配置指南安装与配置指南(数据库)说明哪些How to set up the P6专业数据库和服务器.a ...

  7. Cadence仿真利器,Cadence SI / PI Analysis – Sigrity安装及破解指南

    Sigrity提供了丰富的千兆比特信号与电源网络分析技术,包括面向系统.印刷电路板(PCB)和IC封装设计的独特的考虑电源影响的信号完整性分析功能. Sigrity分析技术与Cadence Alleg ...

  8. (转)在 Windows 上安装Rabbit MQ 指南

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...

  9. Mentor PADS 9.5下载安装及破解指南

    Pads,是一款用于设计.模拟电子线路及设计电路板的电脑软件,原由Innoveda公司开发,其后改名为PowerPCB,在2002年4月Innoveda被Mentor Graphics收购,近年再次改 ...

随机推荐

  1. iOS组件化实践

    参考资料: http://wereadteam.github.io/2016/03/19/iOS-Component/#more https://casatwy.com/iOS-Modulizatio ...

  2. instanceof运算符与引用变量的强制类型转换

    一.instanceof运算符 instanceof是Java语言中的一个二元运算符,它的作用是判断一个引用类型的变量所指向的对象是否是一个类(或接口.抽象类.父类)的实例,即它左边的对象是否是它右边 ...

  3. 理解Yarn的执行流程和组件作用

    Yarn引入案例 1.学生找院长报到,院长给学生一个学号 2.院长比较忙,继续找主任处理学生事务 3.系主任找院办给学生分配资源(书本) 4.主任找张老师教授java 5.张老师给学生安排座位 6.学 ...

  4. 聚焦Python分布式爬虫必学框架Scrapy 打造搜索引擎视频教程

    下载链接:https://www.yinxiangit.com/595.html 目录: 第1章 课程介绍介绍课程目标.通过课程能学习到的内容.和系统开发前需要具备的知识 第2章 windows下搭建 ...

  5. Go语言基础之单元测试

    不写测试的开发不是好程序员.我个人非常崇尚TDD(Test Driven Development)的,然而可惜的是国内的程序员都不太关注测试这一部分. 这篇文章主要介绍下在Go语言中如何做单元测试和基 ...

  6. Go语言标准库之fmt

    fmt标准库是我们在学习Go语言过程中接触最早最频繁的一个了,本文介绍了fmtb包的一些常用函数. fmt fmt包实现了类似C语言printf和scanf的格式化I/O.主要分为向外输出内容和获取输 ...

  7. ubuntu下安装rtl8811cu/rtl8821cu网卡 Tplink WDN5200H网卡

    博客园第一篇博客,CSDN现在让人眼花缭乱了 @_@ 由于需要wifi调试,笔记本内置的网卡有点不太灵光,买了个TPLINK的WDN5200H AC网卡,给虚拟机用,折腾一下成功了github上有rt ...

  8. 致初学者(二): HDU 2014~ 2032题解

    下面继续给出HDU 2014~2032的AC程序,供大家参考.2014~2032这19道题就被归结为“C语言程序设计练习(三) ”~“C语言程序设计练习(五) ”. HDU 2014:青年歌手大奖赛_ ...

  9. Python3实战Spark大数据分析及调度 (网盘分享)

    Python3实战Spark大数据分析及调度 搜索QQ号直接加群获取其它学习资料:715301384 部分课程截图: 链接:https://pan.baidu.com/s/12VDmdhN4hr7yp ...

  10. 动态设置 view 在布局中位置

    一.概述 有时项目需要动态设置一个 底部列表,比如 popupwindow ,listview 底部显示 ,所以记录一下 此处, android.support.v7.widget.CardView ...