• PinPoint 全链路监控部署


    Pinpoint是一个开源的 APM (Application Performance Management/应用性能管理)工具,用于基于java的大规模分布式系统,基于Google Dapper论文。

    架构组成
    Pinpoint主要由四部分组成:

    Pinpoint-Collector:数据收集模块,接收Agent发送过来的监控数据,并存储到HBase数据库

    Pinpoint-Agent:用于收集应用端监控数据,无侵入式,只需要在启动命令中加入部分参数即可

    Pinpoint-Web:UI,展示性能数据

    HBase Storage:监控展示模块,展示系统调用关系、调用详情、应用状态等,并支持报警等功能

    优点:
    1、分布式事务跟踪,跟踪跨分布式应用的消息
    2、自动检测应用拓扑,帮助你搞清楚应用的架构
    3、水平扩展以便支持大规模服务器集群
    4、提供代码级别的可见性以便轻松定位失败点和瓶颈
    5、使用字节码增强技术,添加新功能而无需修改代码

    功能:
    1、故障快速定位
    2、各个调用环节的性能分析
    3、数据分析等
    4、生成服务调用拓扑图

    软件下载地址:

    Pinpoint GitHub 地址:
    https://github.com/naver/pinpoint
    https://github.com/pinpoint-apm/pinpoint/releases/tag/1.8.5

    hbbase下载地址:
    http://archive.apache.org/dist/hbase/

    初始化pinpoint库
    下载脚本:https://github.com/naver/pinpoint/blob/master/hbase/scripts/hbase-create.hbase

           https://raw.githubusercontent.com/pinpoint-apm/pinpoint/master/hbase/scripts/hbase-create.hbase

    部署软件版本信息:

    jdk1.8.0_172
    pinpoint-agent-1.8.5
    pinpoint-collector-1.8.5
    pinpoint-web-1.8.5
    hbase-1.2.12

    部署主机信息:

    ip地址 角色 操作系统 部署服务
    10.0.10.201 服务端 CentOS 7.8 jdk collector web hbase tomcat8 
    10.0.10.46 agent端 CentOS 7.8 jdk agent spring-cloud service
    10.0.10.87 agent端 CentOS 7.8 jdk tomcat java service 

    环境安装:

    1、安装JDK

    解压自行安装,环境变量配置如下:

    # java config
    export JAVA_HOME=/usr/local/jdk1.8.0_172
    export PATH=${JAVA_HOME}/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

     2、安装HBase

    1. 将Hbase放到指定目录,我这里下载的是1.2.12版本的。
    # tar -zxvf hbase-1.2.12-bin.tar.gz -C /usr/local/
    # # ln -s hbase-1.2.12 hbase

      2.修改配置信息
       修改hbase-env.sh文件,#加入JAVA_HOME

    export JAVA_HOME=/usr/local/jdk1.8.0_172

      注释掉如下两行,去除告警信息:

    #export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m"
    #export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m -XX:ReservedCodeCacheSize=256m"

      3.修改hbase-site.xml文件.

    # vi hbase-site.xml
    <configuration>
            <property>
                <name>hbase.rootdir</name>
                <value>file:///usr/local/hbase/data</value>
            </property>
            <property>
                <name>hbase.zookeeper.property.dataDir</name>
                <value>/usr/local/hbase/zookeper</value>
            </property>
            <property>
             <name>hbase.zookeeper.property.clientPort</name>
             <value>2181</value>
            </property>
            <!-- false是单机模式,true是分布式模式  -->
            <property>
             <name>hbase.cluster.distributed</name>
             <value>false</value>
            </property>
    </configuration>

      4.启动HBase,并查看服务及关联端口

     bin]# ./start-hbase.sh
     # jps 
    15482 HMaster
    
    ]# netstat -anpt |grep 15482
    tcp6       0      0 :::2181                 :::*                    LISTEN      15482/java          
    tcp6       0      0 :::16010                :::*                    LISTEN      15482/java          
    tcp6       0      0 :::40012                :::*                    LISTEN      15482/java          
    tcp6       0      0 10.0.10.201:44621       :::*                    LISTEN      15482/java          
    tcp6       0      0 10.0.10.201:43408       :::*                    LISTEN      15482/java          
    tcp6       0      0 127.0.0.1:36292         127.0.0.1:2181          ESTABLISHED 15482/java          
    tcp6       0      0 ::1:35938               ::1:2181                ESTABLISHED 15482/java          
    tcp6       0      0 127.0.0.1:36296         127.0.0.1:2181          ESTABLISHED 15482/java          
    tcp6       0      0 10.0.10.201:45708       10.0.10.201:43408       ESTABLISHED 15482/java          
    tcp6       0      0 10.0.10.201:43408       10.0.10.201:45706       ESTABLISHED 15482/java          
    tcp6       0      0 10.0.10.201:44621       10.0.10.201:41087       ESTABLISHED 15482/java          
    tcp6       0      0 10.0.10.201:43408       10.0.10.201:45708       ESTABLISHED 15482/java          
    tcp6       0      0 127.0.0.1:2181          127.0.0.1:36292         ESTABLISHED 15482/java          
    tcp6       0      0 ::1:2181                ::1:35938               ESTABLISHED 15482/java          
    tcp6       0      0 127.0.0.1:2181          127.0.0.1:36300         ESTABLISHED 15482/java          
    tcp6       0      0 127.0.0.1:2181          127.0.0.1:36290         ESTABLISHED 15482/java          
    tcp6       0      0 ::1:2181                ::1:35934               ESTABLISHED 15482/java          
    tcp6       0      0 127.0.0.1:2181          127.0.0.1:36296         ESTABLISHED 15482/java          
    tcp6       0      0 10.0.10.201:41087       10.0.10.201:44621       ESTABLISHED 15482/java

      5.初始化pinpoint库,并导入数据脚本

    hbase]#     wget https://raw.githubusercontent.com/pinpoint-apm/pinpoint/master/hbase/scripts/hbase-create.hbase 
    #执行数据脚本
    hbase]# ./bin/hbase shell hbase-create.hbase 
    
    # 执行完了以后,进入Hbase
    ./hbase shell
    
    #进入后可以看到Hbase的版本,还有一些相关的信息
    [root@hztestdb01 bin]# ./hbase shell
    2021-02-26 10:55:55,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
    hbase(main):003:0> list 

     登录Hbase web,来查看HBase的数据是否初始化成功.

     3、部署pinpoint-collector服务

    部署war包(将war包放到tomcat webapps目录),修改server.xml配置.

    #替换端口号
    sed -i 's/port="8005"/port="18005"/g' server.xml
    sed -i 's/port="8080"/port="18080"/g' server.xml
    sed -i 's/port="8443"/port="18443"/g' server.xml
    sed -i 's/port="8009"/port="18009"/g' server.xml
    
    #启动tomcat服务,并检查日志是否正常
    # ./startup.sh

    4、部署pinpoint-web

    部署war包(以webapps目录部署),修改server.xml配置

    部署pinpoint-web
    部署war包(以webapps目录部署),修改server.xml配置
    
    sed -i 's/port="8005"/port="28005"/g' server.xml
    sed -i 's/port="8080"/port="28080"/g' server.xml
    sed -i 's/port="8443"/port="28443"/g' server.xml
    sed -i 's/port="8009"/port="28009"/g' server.xml
    sed -i 's/redirectPort="8443"/redirectPort="28443"/g' server.xml
    
    启动tomcat服务,并检查日志是否正常
    # ./startup.sh

    然后可以在浏览器中:http://10.0.10.201:28080/pp-web/

     5、部署pinpoint-agent采集监控数据

    首先将pinpoint-agent-1.8.5.tar.gz传入到客户端服务器10.0.10.46/87并解压至/usr/local/pinpoint-agent目录中
    配置pinpoint-agent采集器

    pinpoint-agent]# vi pinpoint.config
    
    #主要修改IP,只需要指定到安装pinpoint-collector的IP就行了,安装pp-col启动后,自动就开启了9994,9995,9996的端口了.
    profiler.collector.ip=10.0.10.201

    6、tomcat方式部署的java应用的监控,只需要在配置文件添加如下几行重启服务即可.

    # 修改测试项目下的tomcat启动文件"catalina.sh",修改这个只要是为了监控测试环境的Tomcat,增加探针
    bin]# vim catalina.sh
    
    CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/pinpoint-agent/pinpoint-bootstrap-1.8.5.jar"
    CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=AP-TOMCAT"
    CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=AP-TEST"
    
    # 第一行是pp-agent的jar包位置
    # 第二行是agent的ID,这个ID是唯一的,我是用pp + 日期命名的,只要与其他的项目的ID不重复就好了
    # 第三行是采集项目的名字,这个名字可以随便取,只要各个项目不重复就好了

    7、springboot 包部署 如果是jar包部署,直接在启动命令加启动参数:

    nohup $jdk_path/bin/java $jvm -Duser.timezone=GMT+08 
        -javaagent:/usr/local/pinpoint-agent/pinpoint-bootstrap-1.8.5.jar -Dpinpoint.agentId=应用唯一ID 
        -Dpinpoint.applicationName=应用名称  
        -jar app-boot.jar > app-boot.log 2>&1 &

    在启动jar服务时,添加如下两行即可.

     刷新页面并展示信息如下:

    微服务展示

     tomcat展示:

    调用链路展示:

     weblogic 部署的java应用监控:

    链接文档:https://github.com/pinpoint-apm/pinpoint/tree/master/plugins/weblogic

    SAVE_JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:/usr/local/pinpoint-agent/pinpoint-bootstrap-1.8.5.jar -Dpinpoint.agentId=weblogic-112 -Dpinpoint.applicationName=test-weblogic"

    参考文档:

        https://blog.csdn.net/zdshare/article/details/90640676

        https://cloud.tencent.com/developer/article/1521571

        https://www.jb51.net/article/171795.htm

  • 相关阅读:
    时间那点儿事儿 -- 时间戳,时区,冬令时,夏令时
    iOS: 并发编程的几个知识点
    iOS: 聊聊 Designated Initializer(指定初始化函数)
    iOS 滑动性能优化
    iPad 多任务 Spilt View & Size Class
    iOS: 如何正确的绘制1像素的线
    iOS: Crash文件解析(一)
    iOS:使用MVC模式帮ViewController瘦身
    iOS:项目中疑难Crash问题集锦
    最近面试人的一点儿感受
  • 原文地址:https://www.cnblogs.com/saneri/p/14450970.html
Copyright © 2020-2023  润新知