简介

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. HDU5461 Largest Point 思维 2015沈阳icpc

    Largest Point Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  2. 【Offer】[54] 【二叉搜索树的第k小节点】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 给定一棵二叉搜索树,请找出其中第k小的节点.例如,在下图的二叉搜索树里,按节点数值大小顺序,第三小节点的值是4.  牛客网刷题地址 思 ...

  3. Python中流程控制语句之IF语句

    生活中经常遇到的各种选择和判断在程序中也会遇到,比如玩色子,猜大小,比如选择哪条路回家?Python程序中同样也会遇到.IF语句就是用作条件判断的控制语句. 语法一: if 条件: # 引号是将条件与 ...

  4. .NET Core 微信小程序退款——(统一退款)

    继上一篇".NET Core 微信小程序支付——(统一下单)后",本文将实现统一退款功能,能支付就应该能退款嘛,一般涉及到钱的东西都会比较敏感,所以在设计退款流程时一定要严谨,不能 ...

  5. 如何完美激活pycharm2019.2.2

    本号持续关注pycharm的更新,这不本月11号迎来新版本,为防走丢,请关注公众号,让我们携手并行!有道是"予人玫瑰手留余香",分享的确是件令人愉快的事,这也是我创建公众号的初心. ...

  6. android EditText实现圆弧背景

    一.给EditText添加背景,并且4角圆弧 对应的xml 以及样式如下: <EditText android:id="@+id/o_item_num" style=&quo ...

  7. day 3 总结

  8. Java中创建对象的5种方法

    将会列举5种方法去创建 Java 对象,以及他们如何与构造函数交互,并且会有介绍如何去使用这些方法的示例. 作为一个 Java 开发人员,我们每天都会创建大量的 Java 对象,但是我们通常会使用依赖 ...

  9. 【带着canvas去流浪(14)】Three.js中凹浮雕模型的生成方式

    目录 一. 方案1:ThreeBSP.js或ThreeCSG.js扩展库 二. 方案2:平面镂空模型拉伸 三. 方案3:Cinema 4D建模后输出模型文件 示例代码托管在:http://www.gi ...

  10. [C++] 重载运算符与类型转换(2)——函数调用运算符和类型转换运算符

    1.这两个应该是C++中比较高级的用法了. 一.函数调用运算符   1.重载函数调用运算符(),必须是成员函数,一个类可以定义多个不同版本的调用运算符,相互之间应该在参数数量或者类型上有所区别.   ...