美文网首页
pinpoint微服务全链路监控安装和使用

pinpoint微服务全链路监控安装和使用

作者: 芬达味橘猫 | 来源:发表于2021-12-03 11:18 被阅读0次

    pinpoint使用详情,参考:https://blog.csdn.net/weixin_43931358/article/details/107671436

    pinpoint介绍

    现在服务通常由许多不同的组件组成,它们之间进行通信,以及对外部服务进行API调用。如何执行每一个事务通常被当作黑箱。Pinpoint跟踪这些组件之间的事务流,并提供清晰的视图来识别问题区域和潜在的瓶颈。

    image.png

    ServerMap:

    通过可视化它们的组件是如何互连的,了解任何分布式系统的拓扑结构。单击一个节点将显示关于组件的详细信息,例如其当前状态和事务计数

    Realtime Active Thread Chart(实时活动线程图)

    实时监控应用程序内部的活动线程

    Request/Response Scatter Chart(请求/响应散点图)

    随时间可视化请求计数和响应模式以识别潜在问题。可以通过拖动图表来选择其他细节

    CallStack(调用堆栈)

    对分布式环境中的每个事务增加代码级可见性,在单个视图中识别瓶颈和故障点

    image.png

    Inspector(检查工具)

    查看应用程序的其他细节,如CPU使用、内存/垃圾收集、TPS和JVM参数。

    image.png

    Architecture(架构)

    image.png

    准备工作

    准备两台机器,ip地址:

    服务端:192.168.1.189

    客户端:192.168.1.193

    服务端需要安装hbase、pinpoint控制器和pinpointWeb端

    客户端这边需要启动的tomcat服务,同时部署客户端组件

    服务端部署(服务端服务器上部署)

    安装jdk环境

    yum install java -y

    在/etc/profile中添加java环境变量

    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64/jre
    
    export CLASSPATH=.:${JAVA_HOME}/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
    
    export PATH=$PATH:${JAVA_HOME}/bin
    

    安装hbase

    wget [http://archive.apache.org/dist/hbase/hbase-1.2.12/hbase-1.2.12-bin.tar.gz](http://archive.apache.org/dist/hbase/hbase-1.2.12/hbase-1.2.12-bin.tar.gz)
    
    tar -xvf hbase-1.2.12-bin.tar.gz
    
    mv hbase-1.2.12-bin.tar.gz /usr/local/hbase
    
    进入/usr/local/hbase/conf目录编辑hbase-env.sh文件添加内容:
    
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64/jre
    

    编辑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>
    

    启动hbase执行启动脚本

    ../bin/start-hbase.sh
    

    启动后查看日志有没有异常

    less ../logs/hbase-root-master-pinpoint-master.out
    

    导入初始化脚本

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

    执行导入命令

    ./bin/hbase shell hbase-create.hbase
    

    导入成功后访问hbase主页

    image.png

    查看User Tables数据表有没有导入

    image.png

    进入hbase,输入”status ‘detailed’”可以查看刚才初始化的表,是否存在

    image.png

    服务端安装pinpoint-collector

    下载pinpoint客户端、控制器和web端

    https://github.com/pinpoint-apm/pinpoint/releases/tag/1.8.5

    image.png

    下载tomcat,将tomcat解压到/usr/local/并改名pp-col

    image.png

    先到pp-col/webapp/执行

    rm -rf * && mkdir ROOT
    

    将pinpoint-collector-1.8.5.war包unzip解压到pp-col/webapps/ROOT中

    unzip pinpoint-collector-1.8.5.war -d /data/service/pp-col/webapps/ROOT
    
    image.png

    更改tomcat的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
    
    sed -i 's/redirectPort="8443"/redirectPort="18443"/g' server.xml
    

    启动tomcat

     bin/startup.sh
    

    查看日志是否启动成功

    tail -f ../logs/catalina.out
    

    服务端部署pinpoint-web

    将tomcat解压到/usr/local/并改名pp-web

    将pinpoint-web-1.8.5.war解压到pp-web/webapps/ROOT中

    进入tomcat的conf文件夹中,修改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
    

    启动web

    bin/startuyp.sh
    

    查看web启动情况

    tail -f ../logs/catalina.out
    

    现在可以访问pinpoint,当前没有内容,需要安装pinpoint监控端

    image.png

    客户端部署监控端

    转到客户端服务器

    我这里将客户端运行的程序和pinpoint客户端放在同一个文件夹中,mkdir /root/pinpoint_agent

    将pinpoint-agent-1.8.5.tar.gz监控端解压到/root/pinpoint_agent,我这边为了方便取名agent_2

    image.png

    更改配置文件pinpoint.config,将监控段主机IP填写如下

    image.png

    将后端服务包部署在webapp中

    image.png

    更改catalina启动文件指定agent的jar包

    [root@localhost pinpoint_agent]# vim tomcat/bin/catalina.sh
    
    CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/local/agent_2/pinpoint-bootstrap-1.8.5.jar"
    
    CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=pp20211202_2"
    
    CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=PP-Agent-2"
    
    image.png

    第一行是pp-agent的jar包位置

    第二行是agent的ID,这个ID是唯一的,我是用pp + 今天的日期命名的,只要与其他的项目的ID不重复就好了

    第三行是采集项目的名字,这个名字可以随便取,只要各个项目不重复就好了

    启动服务

    我这边是以docker部署的程序,将webapp、agent和启动脚本挂载上去,也可以直接部署tomcat,将agent部署到/usr/local中,更改tomcat/bin/catalina.sh增加配置,直接启动

    image.png

    docker ps命令查看程序启动状态

    image.png

    启动没有问题,访问刚刚设置好的pinpoint监控主页http://192.168.1.189:28080/

    菜单中选择已经配置好的服务

    image.png

    此时访问后端接口,能够自动输出数据流向图以及用户请求次数、请求的响应时长,同时可以选择时间区间,可以开启实时模式(REALTIME)进行监控

    image.png

    左边点开划出窗口,可以看到选中框内的详细信息

    image.png

    弹出选择框的详细信息

    image.png

    点击相应的信息

    image.png

    点击右边的Timeline能看到详细响应时间,可点击进去查看哪个步骤

    image.png

    进入主页右键能进行筛选,请求的路径,成功和失败还有响应时间

    image.png image.png

    点开右上角inspector选项可以看到微服务细节信息,能看到堆内存,JVM的CPU使用频率,响应时长等监控信息

    image.png image.png image.png

    总结一下,pinpoint可以给我们带来以下好处:

    1. 掌握系统的整体响应速度情况,对系统运行情况心里有底;
    2. 掌握各节点的响应速度情况,比如第三方服务接口,redis,mysql等;
    3. 单次请求的具体服务链路耗时情况,定位性能瓶颈;
    4. 单次请求的具体服务链路请求信息,对于排查问题能提供帮助;
    5. 监控各服务的JVM、线程池、数据库连接池使用情况,想象一下,如果分布式服务系统中有几十甚至几百个服务节点,要如何来监控每个节点的JVM呢?

    总体来说,在pinpoint这类APM监控工具逐渐发展成熟的当下,引入这类工具,对我们日常的开发测试运维工作,是能起到不错的辅助作用的,尤其是在分布式服务系统中,如果没有这类工具,遇到问题时难免慌手慌脚无从下手。

    关于是否要在生产环境上部署这类APM监控工具,这里说几点供参考:

    1. APM监控一定不可以影响业务系统的运行成败,换句话说就是即使APM监控挂了,业务系统也应该能够照常运行着。不要因为引入APM监控,而给整套系统引入了一颗不定时炸弹,这样就得不偿失了。在这一点上,pinpoint应该是OK的,我测试过pinpoint服务端即使挂了,业务系统照样能跑得好好的;
    2. APM监控是会消耗服务器的资源的,监控粒度越细,消耗越多。在其他文章里人做了各种APM监控工具的性能损耗对比,pinpoint相对是损耗较多的,因为它的监控粒度算是比较细的。我也做过测试,开启pinpoint监控后,性能确实会有8%左右的损耗。但是换个角度来说,目前各种系统的线上环境,CPU等各类资源,经常都是在30%使用率以下运行的,这种情况下,即使再多个损耗10%也是在能接受范围内的;
    3. 开源APM监控工具还要考虑安全问题,像pinpoint、skywalking这类工具目前好像还没有访问权限之类的控制,要注意不要被乱灌数据,或者被有不良企图的用户访问到各种请求链路详细信息。当然,这类安全问题也是有解决方案的,比如可以IP访问权限控制,或者通过web服务器加上权限验证再进行转发等;

    补充

    jar包启动指定pinpoint方式:

    java -javaagent:D:\Software\pinpoint-agent-1.8.3\pinpoint-bootstrap-1.8.3.jar -Dpinpoint.applicationName=user -Dpinpoint.agentId=user01 -jar User-0.0.1-SNAPSHOT.jar

    相关文章

      网友评论

          本文标题:pinpoint微服务全链路监控安装和使用

          本文链接:https://www.haomeiwen.com/subject/hjvpxrtx.html