Step 1.背景
随着公司业务发展,我们迫切需要一个APM工具帮我们监控各个服务的状态以及性能,而通过调研多个开源APM工具后,最终我们选择了pintpoint。
Step 2.简介
Pinpoint是一个开源的 APM (Application Performance Management/应用性能管理)工具,用于基于java的大规模分布式系统。在使用上力图简单高效,通过在启动时安装agent,不需要修改哪怕一行代码,最小化性能损失(3%).
Step 3.Pinpoint 的优点
- pinpoint是基于java开发的,利于项目后期对源代码的修改
- pinpoint有非常直观的UI,符合项目的当前需求
Step 4.准备工作
说明:为了构建Pinpoint,必须满足以下要求:
1.下载maven http://maven.apache.org/download.cgi
2.下载jkd 1.8 https://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html
3.下载jdk 1.7 https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u80-oth-JPR
4.下载jdk 1.6 https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR
5.下载jdk 1.9 https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase9-3934878.html
#安装maven
$ tar -xvf apache-maven-3.6.0-bin.tar.gz
$ mv apache-maven-3.6.0 /usr/local/maven
# 安装jdk1.9
$ tar -xvf jdk-9.0.4.tar.gz
$ ln -s /usr/local/src/jdk-9.0.4 /usr/local/jdk1.9
#安装jdk1.8
$ tar -xvf jdk-8u131-linux-x64.tar.gz
$ mv jdk1.8.0_131 /usr/local/jdk1.8
#安装jdk1.7
$ tar -xvf jdk-7u80-linux-x64.tar.gz
$ mv jdk1.7.0_80 /usr/local/jdk1.7
#安装jdk1.6
$ chmod +x jdk-6u45-linux-x64.bin?AuthParam=1546418770_7fec21fb5bcf8b920eec485f4293a447
$ ./jdk-6u45-linux-x64.bin?AuthParam=1546418770_7fec21fb5bcf8b920eec485f4293a447
$ ln -s /usr/local/src/jdk1.6.0_45 /usr/local/jdk1.6
#设置jdk环境变量
$ vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
export JAVA_6_HOME=/usr/local/jdk1.6
export JAVA_7_HOME=/usr/local/jdk1.7
export JAVA_8_HOME=/usr/local/jdk1.8
export JAVA_9_HOME=/usr/local/jdk1.9
#将其jdk环境变量生效
$ source /etc/profile
# 检查jdk 是否安装成功
$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
Step 5.手动方式安装Pinpoint
$ git clone https://github.com/naver/pinpoint.git
$ ./mvnw clean install -Dmaven.test.skip=true
Step 6.安装Hbase
#下载 & 安装hbase
$ http://ftp.cuhk.edu.hk/pub/packages/apache.org/hbase/1.4.9/hbase-1.4.9-bin.tar.gz
$ tar -xvf hbase-1.4.9-bin.tar.gz
$ ln -s hbase-1.4.9 hbase
$ cp -r /usr/local/hbase-1.4.9 /usr/local/pinpoint/quickstart/hbase
#启动hbase
$ /usr/local/pinpoint/quickstart/bin/start-hbase.sh
#初始化hbase
$ /usr/local/pinpoint/quickstart/bin/init-hbase.sh
$ jps
12299 Jps
3420 MavenWrapperMain
5246 HMaster
Step 7.启动Collector
Step 5.docker方式安装Pinpoint
#安装docker
$ yum update -y
$ yum install docker epel-release python-pip -y
$ pip install --upgrade pip
$ pip install docker-compose
#启动docker
$ systemctl enable docker
$ systemctl start docker
#下载Pinpoint
$ git clone https://github.com/naver/pinpoint-docker.git
#start Pinpoint
$ cd pinpoint-docker
$ docker-compose pull && docker-compose up -d
#stop pinpoint
$ docker-compose stop
#如有报错,修改为绝对路径
$ vim /usr/local/pinpoint-docker/docker-compose.yml
************
volumes:
- /home/pinpoint/hbase
- /home/pinpoint/zookeeper
************
至此Pinpoint-web 已安装完成!
Pinpoint-Flink 端口:8081
说明:http://192.168.82.130:8081/#/overview
Pinpoint-web 端口:8079
说明:访问 http://192.168.82.130:8079/#/main
Step 6. 安装 Pinpoint-agent 依赖
$ yum install automake libtool flex bison pkgconfig gcc-c++ openssl-devel -y
#下载 & 安装 boost
$ wget https://jaist.dl.sourceforge.net/project/boost/boost/1.63.0/boost_1_63_0.tar.gz
$ tar -zxvf boost_1_63_0.tar.gz && cd boost_1_63_0
$ ./bootstrap.sh
$ ./b2 install --prefix=/usr/local/boost
#安装boost 报错
************
./boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory
***********
#解决
$ yum install python-devel.x86_64
#下载 & 安装 thrift
$ wget http://apache.fayea.com/thrift/0.11.0/thrift-0.11.0.tar.gz
$ tar zxvf thrift-0.11.0.tar.gz
$ cd thrift-0.11.0
$ ./configure CXXFLAGS="-DFORCE_BOOST_SMART_PTR" --with-cpp --with-php=no --with-python=no --with-ruby=no --with-nodejs=no --with-qt4=no --with-java=no --with-boost=/usr/local/boost
$ make && make install
Step 7.安装 Pinpoint-agent
#下载pinpoint-agent
$ git clone https://github.com/naver/pinpoint-c-agent.git
#构建
$ cd pinpoint-c-agent/pinpoint_php
$ /usr/local/php/bin/phpize
$ ./Build.sh
#构建报错
configure: error: Cannot find php-config. Please use --with-php-config=PATH
#解决
说明:需要把php-config 路径加入Build.sh configure 后面
$ vim Build.sh
找到configure 加入:
--with-php-config=/usr/local/php/bin/php-config
#安装
$ make install
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
#可能会碰到未安装 python 的问题,安装下可以解决问题
$ yum install python-devel.x86_64
至此pinpoint-agent 已经安装成功!
Step 8.pinpoint-agent 代理配置
1.在php-fpm 配置文件目录添加pinpoint_agent.conf 配置文件,pinpoint_agent.conf 可以参考/usr/local/pinpoint-c-agent/quickstart/config/pinpoint_agent.conf.example
2.配置php.ini 亦可以参考/usr/local/pinpoint-c-agent/quickstart/config/pphp.ini.example
vim /usr/local/php/etc/pinpoint_agent.conf
[common]
AgentID=php_test
ApplicationName=PHPApplication
CollectorSpanIp=157.231.42.167
CollectorSpanPort=9996
CollectorStatIp=157.231.42.167
CollectorStatPort=9996
CollectorTcpIp=157.231.42.167
CollectorTcpPort=9994
TraceLimit = -1
SkipTraceTime = -1
PPLogLevel = DEBUG
LogFileRootPath = /var/log/
AgentType="PHP"
PluginExclude = ExcludePlugin
PluginInclude = PhpRequestPlugin;QuickStartPlugin ; PhpInternalFunctionsPlugin ;ExcludePlugin ;PDOPlugin;CurlPlugin;
[PHP]
PluginEntryFile=plugins_create.php
PluginRootDir=/home/wwwroot/default/php/plugins/
$ vim /usr/local/php/etc/php.ini
#加入:
[pinpoint]
extension= pinpoint.so
pinpoint_agent.trace_exception=true
pinpoint_agent.config_full_name=/usr/local/php/etc/pinpoint_agent.conf
#重启php
$ /etc/ini.t/php-fpm restart
Step 9.刷新pinpoint web 页面
说明:现在可以看到PHPApplication
安装Pinpoint 插件
Step 1.下载安装Fink
#下载
$ wget https://archive.apache.org/dist/flink/flink-1.7.1/flink-1.7.1-bin-scala_2.11.tgz
$ tar -xvf flink-1.7.1-bin-scala_2.11.tgz
$ mv flink-1.7.1 /usr/local/
$ ln -s flink-1.7.1 flink