Pinpoint简介

Pinpoint是一款对Java编写的大规模分布式系统的APM工具,有些人也喜欢称呼这类工具为调用链系统、分布式跟踪系统。我们知道,前端向后台发起一个查询请求,后台服务可能要调用多个服务,每个服务可能又会调用其它服务,最终将结果返回,汇总到页面上。如果某个环节发生异常,工程师很难准确定位这个问题到底是由哪个服务调用造成的,Pinpoint等相关工具的作用就是追踪每个请求的完整调用链路,收集调用链路上每个服务的性能数据,方便工程师能够快速定位问题。

其架构图如下:

架构说明:

  • Pinpoint-Collector:收集各种性能数据
  • Pinpoint-Agent:和自己运行的应用关联起来的探针
  • Pinpoint-Web:将收集到的数据显示成WEB网页形式
  • HBase Storage:收集到的数据存到HBase中

Pinpoint搭建

我们这里直接将数据存储到HDFS中,所以整体规划如下:

IP 主机名 用途
10.2.42.59 collector Pinpoint-collector
10.2.42.60 web Pinpoint-web
10.2.42.61 hbase-master Hadoop/Hbase/zookeeper
10.2.42.62 hbase-slave01 Hadoop/Hbase/zookeeper
10.2.42.63 hbase-slave02 Hadoop/Hbase/zookeeper

软件版本:

软件名 版本 下载地址
pinpoint-collector 1.7.1 https://github.com/naver/pinpoint/releases
pinpoint-web 1.7.1 https://github.com/naver/pinpoint/releases
pinpoint-agent 1.7.1 https://github.com/naver/pinpoint/releases
java 1.8.0_131 http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html
zookeeper 3.4.10 https://archive.apache.org/dist/zookeeper/stable/
hbase 1.2.6 http://apache.mirror.cdnetworks.com/hbase/
hadoop 2.8.4 https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.4/
tomcat 8.0.47 https://tomcat.apache.org/download-80.cgi

安装JDK

解压JDK到opt目录下,配置环境变量

tar xf jdk-8u131-linux-x64.tar.gz -C /opt

vim /etc/profile

export JAVA_HOME=/opt/jdk1.8.0_131
export PATH=$JAVA_HOME/bin:$PATH

加载环境变量

source /etc/profile

配置免密

配置10.2.42.61,10.2.42.62,10.2.42.63节点之间互信,可以三台同时操作。

ssh-keygen
ssh-copy-id 10.2.42.61
ssh-copy-id 10.2.42.62
ssh-copy-id 10.2.42.63

如果没有ssh-copy-id,则使用下面命令安装即可

yum -y install openssh-clients

配置Hosts映射

五台都需要配置hosts映射。
vim /etc/hosts

10.2.42.61	DCA-APP-COM-pinpoint-HBaseMaster
10.2.42.62 DCA-APP-COM-pinpoint-HBaseSlave01
10.2.42.63 DCA-APP-COM-pinpoint-HBaseSlave02

安装zookeeper集群

解压安装包到opt目录下,三台可以同时操作。

tar xf zookeeper-3.4.10.tar.gz -C /opt/
cd /opt/zookeeper-3.4.10/conf
cp zoo_sample.cfg zoo.cfg

vim zoo.cfg

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/data/zookeeper/data
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=10.2.42.61:12888:13888
server.2=10.2.42.62:12888:13888
server.3=10.2.42.63:12888:13888

创建数据目录

mkdir /data/zookeeper/data -p

在10.2.42.61上添加竞选ID

echo 1 > /data/zookeeper/data/myid

在10.2.42.62上添加竞选ID

echo 2 > /data/zookeeper/data/myid

在10.2.42.63上添加竞选ID

echo 3 > /data/zookeeper/data/myid

启动服务

/opt/zookeeper-3.4.10/bin/zkServer.sh start

查看集群状态

[root@DCA-APP-COM-pinpoint-HBaseMaster data]# /opt/zookeeper-3.4.10/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower

安装Hadoop集群

namenode 10.2.42.61
datanode01 10.2.42.62
datanode02 10.2.42.63

解压安装文件到opt目录下,注:没做特别说明,下面操作均在三台机器上同时操作。

tar xf hadoop-2.8.3.tar.gz -C /opt/

进入hadoop配置文件目录,进行配置

cd /opt/hadoop-2.8.3/etc/hadoop

配置hadoop-env.sh,指定hadoop的java运行环境
vim hadoop-env.sh

#export JAVA_HOME=${JAVA_HOME}     # 默认就是这个,所以实际上这一步可以跳过
export JAVA_HOME=/opt/jdk1.8.0_131

配置core-site.xml,指定访问hadoop web界面访问
vim core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://10.2.42.61:9000</value>
</property>
<property>
  <name>io.file.buffer.size</name>
  <value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp</value>
</property>
</configuration>

配置hdfs-site.xml
vim hdfs-site.xml

<configuration>
<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>10.2.42.61:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 指定namenode数据存放临时目录,自行创建 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/data/hadoop/dfs/name</value>
</property>
<!-- 指定datanode数据存放临时目录,自行创建 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/data/hadoop/dfs/data</value>
</property>
</configuration>

配置mapred-site.xml,这是mapreduce的任务配置,可以查看以运行完的作业情况。
vim mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>0.0.0.0:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>0.0.0.0:19888</value>
</property>
</configuration>

配置yarn-site.xml,datanode不需要修改这个配置文件。
vim yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>
<property>
  <name>yarn.resourcemanager.address</name>
  <value>10.2.42.61:8032</value>
</property>
<property>
  <name>yarn.resourcemanager.scheduler.address</name>
  <value>10.2.42.61:8030</value>
</property>
<property>
  <name>yarn.resourcemanager.resource-tracker.address</name>
  <value>10.2.42.61:8031</value>
</property>
<property>
  <name>yarn.resourcemanager.admin.address</name>
  <value>10.2.42.61:8033</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address</name>
  <value>10.2.42.61:8088</value>
</property>
</configuration>

配置datanode,方便namenode调用
vim slaves

10.2.42.62
10.2.42.63

创建数据目录

mkdir /data/hadoop/tmp -p
mkdir /data/hadoop/dfs/name -p
mkdir /data/hadoop/dfs/data -p

格式化namenode,由于namenode

上的文件系统是 HDFS 的,所以要格式化。

/opt/hadoop-2.8.3/bin/hdfs namenode -format

如下表示格式化成功。

启动集群

/opt/hadoop-2.8.3/sbin/start-all.sh

输出日志如下:

启动jobhistory 服务,查看 mapreduce 运行状态

/opt/hadoop-2.8.3/sbin/mr-jobhistory-daemon.sh start historyserver

通过URL访问的地址

http://10.2.42.61:50070  #整个hadoop 集群
http://10.2.42.61:50090 #SecondaryNameNode的情况
http://10.2.42.61:8088 #resourcemanager的情况
http://10.2.42.61:19888 #historyserver(MapReduce历史运行情况)

配置HBase集群

注:未做特别声明,一下操作在三个节点同时进行。
**
解压安装包到opt目录下

tar xf hbase-1.2.6-bin.tar.gz -C /opt/

复制hdfs配置文件,这是为了保障hbase和hdfs两边的配置文件一致

cp /opt/hadoop-2.8.3/etc/hadoop/hdfs-site.xml /opt/hbase-1.2.6/conf/

配置HBase配置文件
vim hbase-site.xml

<configuration>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>10.2.42.61,10.2.42.62,10.2.42.63</value>
<description>The directory shared by RegionServers.</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/data/zookeeper/zkdata</value>
<description>
注意这里的zookeeper数据目录与hadoop ha的共用,也即要与 zoo.cfg 中配置的一致
Property from ZooKeeper config zoo.cfg.
The directory where the snapshot is stored.
</description>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://10.2.42.61:9000/hbase</value>
<description>The directory shared by RegionServers.
官网多次强调这个目录不要预先创建,hbase会自行创建,否则会做迁移操作,引发错误
至于端口,有些是8020,有些是9000,看 $HADOOP_HOME/etc/hadoop/hdfs-site.xml 里面的配置,本实验配置的是
dfs.namenode.rpc-address.hdcluster.nn1 , dfs.namenode.rpc-address.hdcluster.nn2
</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>tre</value>
<description>分布式集群配置,这里要设置为true,如果是单节点的,则设置为false
The mode the cluster will be in. Possible values are
false: standalone and pseudo-distributed setups with managed ZooKeeper
true: fully-distributed with unmanaged ZooKeeper Quorum (see hbase-env.sh)
</description>
</property>
</configuration>

配置regionservers文件
vim regionservers

10.2.42.62
10.2.42.63

配置hbase-env.sh,由于我们是自己搭建的zookeeper,所以需要加入下面一段代码。

export HBASE_MANAGES_ZK=false

启动集群

/opt/hbase-1.2.6/bin/start-hbase.sh

查看集群状态
1、通过URL查看:http://10.2.42.61:16010/master-status
2、通过命令行查看

/opt/hbase-1.2.6/bin/hbase shell
hbase(main):002:0> status
1 active master, 0 backup masters, 1 servers, 0 dead, 2.0000 average load

如果报错:ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
1、先停止HBase:/opt/hbase-1.2.6/bin/stop-hbase.sh
2、启动regionserver:/opt/hbase-1.2.6/bin/hbase-daemon.sh start regionserver
3、启动master:/opt/hbase-1.2.6/bin/hbase-daemon.sh start master

初始化HBase的PinPoint库,hbase-create.hbase是需要下载的。
地址是:https://github.com/naver/pinpoint/tree/master/hbase/scripts

/opt/hbase-1.2.6/bin/hbase shell /root/install/hbase-create.hbase

配置PinPoint-Collecter

解压war包到tomcat的webapps目录下

unzip pinpoint-collector-1.7.1.war -d /home/tomcat/apache-tomcat-8.0.47/webapps/ROOT

配置文件目录/home/tomcat/apache-tomcat-8.0.47/webapps/ROOT/WEB-INF/classes
修改配置文件hbase.properties

hbase.client.host=10.2.42.61,10.2.42.62,10.2.42.63
hbase.client.port=2181 ......

修改配置文件pinpoint-collector.properties

cluster.enable=true
cluster.zookeeper.address=10.2.42.61,10.2.42.62,10.2.42.63
......
flink.cluster.zookeeper.address=10.2.42.61,10.2.42.62,10.2.42.63
flink.cluster.zookeeper.sessiontimeout=3000

启动tomcat

/home/tomcat/apache-tomcat-8.0.47/bin/startup.sh

配置PinPoint-WEB

解压对应的war包到tomcat的webapps目录

unzip pinpoint-web-1.7.1.war -d /home/tomcat/apache-tomcat-8.0.47/webapps/ROOT

配置文件目录/home/tomcat/apache-tomcat-8.0.47/webapps/ROOT/WEB-INF/classes
vim hbase.properties

hbase.client.host=10.2.42.61,10.2.42.62,10.2.42.63
hbase.client.port=2181
......

vim pinpoint-web.properties

cluster.enable=true
cluster.web.tcp.port=9997
cluster.zookeeper.address=10.2.42.61,10.2.42.62,10.2.42.63
cluster.zookeeper.sessiontimeout=30000
cluster.zookeeper.retry.interval=60000
.......

启动tomcat

/home/tomcat/apache-tomcat-8.0.47/bin/startup.sh

访问URL:http://10.2.42.60:8080/#/main

配置探针

复制pinpoint-agent-1.7.1.tar.gz到应用服务器上,解压到tomcat目录

tar xf pinpoint-agent-1.7.1.tar.gz -C /home/tomcat

修改配置文件:
vim /home/tomcat/ppagent/pinpoint.config

# ip为pinpoint-collecter的服务器ip
profiler.collector.ip=10.2.42.59

配置tomcat的Catalina.sh启动脚本,在脚本中加入如下代码

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"

如果是jar包,直接用Java启动,需要跟下面参数

java -javaagent:/home/tomcat/tmp/ppagent/pinpoint-bootstrap-1.7.1.jar -Dpinpoint.agentId=jss-spring-boot-app11201 -Dpinpoint.applicationName=jss-spring-boot-app -jar jssSpringBootDemo-0.0.1-SNAPSHOT.jar

配置完后重启tomcat,然后在WEB端查看如下:

PinPoint APM搭建全过程的更多相关文章

  1. linux环境(CentOS-6.7)下redis集群的搭建全过程

    linux环境下redis集群的搭建全过程: 使用mount命令将光盘挂载到/mnt/cdrom目录下: [root@hadoop03 ~]# mount -t iso9660 -o ro /dev/ ...

  2. Gerrit代码审核服务器搭建全过程

    Gerrit代码审核服务器搭建全过程 转载请标明出处:http://blog.csdn.net/ganshuyu/article/details/8978614 环境:Ubuntu12.xx 1.建立 ...

  3. Ubuntu16+pinpoint环境搭建

    最近研究了pinpoint,稍后放上环境搭建教程,建议想学习搭建的同学记得参考pinpointGitHub

  4. Git服务器搭建全过程分步详解【转】

    转自:http://developer.51cto.com/art/201507/483448.htm GitHub是一个免费托管开源代码的Git服务器,如果我们不想公开项目的源代码,又不想付费使用, ...

  5. 完整版的OpenLDAP搭建全过程

    总结:          先写总结,再写正文,嘿嘿嘿.这还是第一次认真的写个文档,写个总结,哈哈.大概在一个月前,第一次听说这个东西,完全没有概念,刚开始的时候看理论的知识,看了几次之后就没看了,看不 ...

  6. Git服务器搭建全过程

    GitHub是一个免费托管开源代码的Git服务器,如果我们不想公开项目的源代码,又不想付费使用,那么我们可以自己搭建一台Git服务器. 下面我们就看看,如何在Ubuntu上搭建Git服务器.我们使用V ...

  7. 微信小程序语音识别服务搭建全过程解析(项目开源在github)

    silk v3录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) ## 重要的写在前面 重要事项一: 目前本文中提到的API已支持微信小程序录音文件格式:silk v ...

  8. 微信小程序语音识别服务搭建全过程解析(https api开放,支持新接口mp3录音、老接口silk录音)

    silk v3(或新录音接口mp3)录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) 重要的写在前面 重要事项一: 所有相关更新,我优先更新到我个人博客中,其它地方 ...

  9. Hadoop2.7.3+Spark2.1.0 完全分布式环境 搭建全过程

    一.修改hosts文件 在主节点,就是第一台主机的命令行下; vim /etc/hosts 我的是三台云主机: 在原文件的基础上加上; ip1 master worker0 namenode ip2 ...

随机推荐

  1. G++编译链接的那些事

    语言 CPP 前言   虽然 VSCodeC++ 编辑器非常受大家的欢迎,无论是大佬还是小白都说对其爱不释手...   我...用了一段时间后发现实在是麻烦,配置往往花费我大量时间.可以说真的是吃力不 ...

  2. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十二)之Error Handling with Exceptions

    The ideal time to catch an error is at compile time, before you even try to run the program. However ...

  3. python从零开始基础入门——开发环境搭建:Visual Studio Code

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:山海皆可平z PS:如有需要Python学习资料的小伙伴可以加点击下方 ...

  4. 后端code review finished 12-28

    今天只有天赋和士杰有相应的后端代码的code review工作,因为并没有召开daily scrum.只是天赋和士杰对后端所有的代码进行了review,对代码进行了整理并删除了一些残留的0 refre ...

  5. 实验一 熟悉IDLE和在线编程平台

    实验目的 1.掌握python IDLE集成开发环境的安装与使用 2.熟悉在线编程平台 3.掌握基本的python程序编写.编译与运行程序的方法 实验内容 1.按照实验指导安装IDLE,尝试交互式运行 ...

  6. reactnavigation 5.x简单例子

    随着RN和reactnavigation的版本更新,网上很多老版的例子都不能用了. 自己摸索着跑通了一些简单的功能. 使用的是最新的    "react-native": &quo ...

  7. Django系列操作

    每次用到都去百度找....找的还不行~~得自己改~~耗时耗力虽然不难~~~直接贴代码记录下方便自己用~~~~ Django之分页 定义成一个块,直接引用到对应的位置即可... <div clas ...

  8. 常用ElasticSearch 查询语句

    为了演示不同类型的 ElasticSearch 的查询,我们将使用书文档信息的集合(有以下字段:title(标题), authors(作者), summary(摘要), publish_date(发布 ...

  9. 在Thinkphp中微信公众号JsApi支付

    由于网站使用的微信Native扫码支付,现在公众号需要接入功能,怎么办呢,看这官方文档,参考着demo进行写吧.直接进入正题 进入公众号(服务号)设置--->功能设置--->网页授权域名配 ...

  10. mac OS 搭建PHP项目开发环境

    系统 macOS Mojave 版本10.14.6 mac OS 自带Apache和PHP 非常便利 sudo apachectl -v //查看apache版本 php -v //查看php版本 启 ...