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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容