zoukankan      html  css  js  c++  java
  • PinPoint APM搭建全过程

    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
    

    如下表示格式化成功。
    image.png

    启动集群

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

    输出日志如下:
    image.png

    启动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历史运行情况)
    

    image.png

    配置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
    

    image.png

    查看集群状态
    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
    

    image.png

    配置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
    image.png

    配置探针

    复制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端查看如下:
    image.png

  • 相关阅读:
    BZOJ 1977: [BeiJing2010组队]次小生成树 Tree( MST + 树链剖分 + RMQ )
    BZOJ 2134: 单选错位( 期望 )
    BZOJ 1030: [JSOI2007]文本生成器( AC自动机 + dp )
    BZOJ 2599: [IOI2011]Race( 点分治 )
    BZOJ 3238: [Ahoi2013]差异( 后缀数组 + 单调栈 )
    ZOJ3732 Graph Reconstruction Havel-Hakimi定理
    HDU5653 Bomber Man wants to bomb an Array 简单DP
    HDU 5651 xiaoxin juju needs help 水题一发
    HDU 5652 India and China Origins 并查集
    HDU4725 The Shortest Path in Nya Graph dij
  • 原文地址:https://www.cnblogs.com/coolops/p/12793826.html
Copyright © 2011-2022 走看看