查看原文
其他

Pinpoint 大型分布式请求跟踪系统的搭建与使用

点击上方“搜云库技术团队”,选择“设为星标

回复“1024”获取独家整理的学习资料


Pinpoint 是用 Java 编写的大规模分布式系统性能管理工具, 可以跟踪请求, 硬件信息收集, 请求时间统计等等

项目主页:https://github.com/naver/pinpoint

前提

1、有分布式部署的项目可供测试 2、至少一台服务器 3、Java、Hbase、Zookeeper、Tomcat 环境

说明

1、个人不喜欢 hbase 自带的 zk ,如无癖好, 可随意 2、本文不讲解基础环境的搭建, 如不会,请自行搜索或者参考博客的其他文章 3、为避免部分端口不通等可疑问题, 建议关闭防火墙

下载

  1. wget https://github.com/naver/pinpoint/releases/download/1.6.2/pinpoint-agent-1.6.2.tar.gz

  2. wget https://github.com/naver/pinpoint/releases/download/1.6.2/pinpoint-collector-1.6.2.war

  3. wget https://github.com/naver/pinpoint/releases/download/1.6.2/pinpoint-web-1.6.2.war


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

准备环境

1、配置 JDK 环境 (笔者使用 Oracle 1.8, openJdk 可以) 2、搭建 Zookeeper 环境 (单机即可) 3、搭建 Hbase (单节点即可) 4、在 Hbase/bin 下执行 ./hbase shell hbase-create.hbase 创建相关存储结构 5、准备 Tomcat 环境

说明:Zookeeper 是为了给 Pinpoint 集群部署准备的, 如果乐意, 也可和 Hbase 共用

部署说明

Pinpoint 分为三个模块 ( agent、collector、web )

agent: tar 包, 解压运行, 负载修改项目字节码、采集信息, 部署项目的服务器上都要部署 agent

collector:war 包, 负责收集汇总 agent 上传的信息并持久化到 hbase , 只部署单台即可, 可水平拓展

web: war 包, 负责数据的可视化形式展示, 只部署单台即可, 可水平拓展

注意:web 和 collector 可分开部署, 也可部署一块, 本文将会把他们两个部署到同一个 Tomcat 容器中

修改 Pinpoint

pinpoint-collector-1.6.2.war

  1. 修改 WEB-INF\classes\hbase.properties 文件

  2. hbase.client.host 设置为 hbase 所用的 zk 地址


  3. 修改 WEB-INF\classes\pinpoint-collector.properties 文件

  4. cluster.zookeeper.address 修改为给 Pinpoint 准备的 zk 地址

pinpoint-web-1.6.2.war

  1. 修改 WEB-INF\classes\hbase.properties 文件

  2. hbase.client.host 设置为 hbase 所用的 zk 地址


  3. 修改 WEB-INF\classes\hbase.properties\pinpoint-web.properties 文件

  4. cluster.zookeeper.address 修改为给 Pinpoint 准备的 zk 地址

部署 collector 和 web

1、将准备好的 tomcat 中 webapps 目录清空

2、将上一步修好的两个 war 包放置到 webapps

3、将 pinpoint-web-1.6.2.war 修改为 ROOT.war

4、将 pinpoint-collector-1.6.2.war 修改为 collector.war

5、启动 Tomcat

查看 tomcat/logs 下的日志, 注意观察有没有连接不到 2181 端口的日志, 如果有, 可能是 war 中的配置没有修改正确, 建议清空 tomcat 下 work、temp 文件夹后重试

部署 agent

1、将 pinpoint-agent-1.6.2.tar.gz 解压, 2、把 pinpoint.config 文件中 profiler.collector.ip 属性值修改为部署 collector 机器的主机名或 IP

注意:每个项目所在的服务器都需要部署 agent

修改自己项目的启动参数

需要添加三个启动参数

  1. -javaagent: 指向 agent 目录下的 pinpoint-bootstrap-1.6.2.jar

  2. -Dpinpoint.agentId:设置全局唯一标示 ID

  3. -Dpinpoint.applicationName: 设置项目的名称(如果同一项目部署两台实例,这两台的参数应该一致)

Tomcat 和 Jar 项目有不同的添加方式,可参考如下方式修改

Tomcat

找到 bin/catalina.sh 添加下面的代码

  1. CATALINA_OPTS="$CATALINA_OPTS -javaagent:$AGENT_PATH/pinpoint-bootstrap-1.6.2.jar"

  2. CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=tomcat1"

  3. CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=webcontroller"

SpringBoot

java-javaagent:/home/junbaor/pinpoint-agent/pinpoint-bootstrap-1.6.2.jar-Dpinpoint.agentId=bbs-web-1-Dpinpoint.applicationName=bbs-web-jar bbs-web-0.0.1-SNAPSHOT.jar

在自己的项目添加完毕启动后,即可登录 web 后台查看集群的状态, 跟踪请求

截图预览

右上角的绿点表示请求, 用鼠标框选后可以查看详情

敬请关注「搜云库技术团队」微信公众号,获取最新文章

作者:junbaor

源:segmentfault.com/a/1190000011290541

整编:搜云库技术团队,欢迎广大技术人员投稿

投稿邮箱:admin@souyunku.com

如果对本文的内容有疑问,请在文章留言区留言,谢谢。

》》》福利 + 程序员工作内推群《《《

更多技术干货

推荐:近300篇:历史技术文章,20大分类整理 

1、推荐一款 MyBatis 开发神器,为简化而生! 
2、
枚举很好用啊,为啥阿里不建议返回值用枚举? 
3、
项目用了消息队列,不知道为啥用,有点尴尬 
4、
面试官:Maven 的这 7 个问题你思考过没有? 
5、
别在 Java 代码里乱打日志了,这才是正确的打日志姿势! 
6、
该死的 if else,到底该如何重构? 
7、
单点登录系统原理与实现,图文并茂,附源码 
8、
跳来跳去,到底去大公司还是小公司? 
9、
这样配置,让你的IDEA好用到飞起来 
10、
面试官:你们的MySQL是如何支撑日均7亿交易量的?

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存