qq群装x代码复制(群装x代码复制下载)
在APP爆炸的今天,app之间、app内部的耦合越来越多也越来越复杂,如何监控管理这些APP实际情况成了越来越热门的话题。本文介绍开源APM(Application Performance Management)工具pinpoint的部署和简单的使用方法。
在APP爆炸的今天,app之间、app内部的耦合越来越多也越来越复杂,如何监控管理这些APP实际情况成了越来越热门的话题。本文介绍开源APM(Application Performance Management)工具pinpoint的部署和简单的使用方法。
基本介绍
1
现在的服务(Services )通常包括许多不同的组件(components),这些组件内部使用API调用,与外部服务之间也有API调用关系。每个事务如何在服务内部被执行通常是一个黑盒(blackbox)。Pinpoint精确跟踪这些组件之间的事务流,并提供一个清晰的视图,以便识别问题点和潜在的瓶颈。
Pinpoint提供以下五种视图:
服务器图(ServerMap) - 通过可视化其组件的互连方式来了解任何分布式系统的拓扑。单击节点将显示有关组件的详细信息,例如其当前状态和事务计数。
实时活动线程图(Realtime Active Thread Chart) - 实时监视应用程序内的活动线程。
请求/响应散布图(Request/Response Scatter Chart) - 可视化请求计数和响应模式,以确定潜在问题。可以通过在图表上拖动来选择事务以获取更多详细信息。
调用栈信息(CallStack) - 增强分布式环境中每个事务的代码级可见性,识别单个视图中的瓶颈和故障点。
检查器(Inspector) - 查看应用程序的其他详细信息,如CPU使用率,内存/垃圾收集,TPS和JVM参数。
Pinpoint内部实现架构
2
展开全文
从pinpoint 1.5.0开始,Pinpoint可以直接通过Collector将请求从Web发送到Agents(反之亦然)。为了实现这一点,Pinpoint使用Zookeeper来协调Agents和Collector之间的通信,以及Collector和Web实例之间的通信。通过添加zookeeper,现在可以进行实时通信(例如活动线程计数监视),因为HBase自带zookeeper,通常使用HBase后端提供的Zookeeper实例。
Pinpoint支持的模块
3
Tomcat 6/7/8, Jetty 8/9,JBoss EAP 6
Spring, Spring Boot
Apache HTTP Client 3.x/4.x,JDK HttpConnector, GoogleHttpClient, OkHttpClient, NingAsyncHttpClient
Thrift Client, ThriftService, DUBBO PROVIDER, DUBBO CONSUMER
MySQL, Oracle, MSSQL,CUBRID, DBCP, POSTGRESQL, MARIA
Arcus, Memcached, Redis,CASSANDRA
iBATIS, MyBatis
gson, Jackson, Json Lib
log4j, Logback
Tomcat 6/7/8, Jetty 8/9,JBoss EAP 6
Spring, Spring Boot
Apache HTTP Client 3.x/4.x,JDK HttpConnector, GoogleHttpClient, OkHttpClient, NingAsyncHttpClient
Thrift Client, ThriftService, DUBBO PROVIDER, DUBBO CONSUMER
MySQL, Oracle, MSSQL,CUBRID, DBCP, POSTGRESQL, MARIA
Arcus, Memcached, Redis,CASSANDRA
iBATIS, MyBatis
gson, Jackson, Json Lib
log4j, Logback
Pinpoint代码编译
4
Pinpoint代码是java编写的,使用maven进行编译,准备如下安装包:
jdk-8u101-linux-x64.rpm
apache-maven-3.3.9-bin.tar.gz
jdk-8u101-linux-x64.rpm
apache-maven-3.3.9-bin.tar.gz
1、上传到服务器/home/lkx/目录下:
[root@server ~]# cd /home/lkx/[root@server lkx]# rpm -ivh jdk-8u101-linux-x64.rpm[root@server lkx]# cd /opt/[root@server opt]# tar zxf /home/lkx/apache-maven-3.3.9-bin.tar.gz[root@server opt]# mv apache-maven-3.3.9/ maven/[root@server opt]# vim /etc/profile
2、增加如下内容:
export JAVA_HOME=/usr/java/defaultexport MAVEN_HOME=/opt/mavenexport JRE_HOME=/usr/java/default/jreexport PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$MAVEN_HOME/bin
3、检查jdk,maven安装情况
[root@server opt]# java –versionjava version "1.8.0_101"Java(TM) SE Runtime Environment (build 1.8.0_101-b13)Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)[root@server opt]# mvn –versionApache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)Maven home: /opt/mavenJava version: 1.8.0_101, vendor: Oracle CorporationJava home: /usr/java/jdk1.8.0_101/jreDefault locale: en_US, platform encoding: UTF-8OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"[root@server opt]#
4、克隆pinpoint代码:
[root@server opt]# git clone https://github.com/naver/pinpoint[root@server opt]# cd pinpoint[root@server pinpoint]# git branch –a* master remotes/origin/1.0.x remotes/origin/1.1.x remotes/origin/1.5.x remotes/origin/HEAD -> origin/master remotes/origin/master[root@server pinpoint]# git checkout 1.5.xSwitched to branch '1.5.x'[root@server pinpoint]# [root@server pinpoint]#
5、设置环境变量
[root@server pinpoint]# export JAVA_6_HOME=/usr/java/default[root@server pinpoint]# export JAVA_7_HOME=/usr/java/default[root@server pinpoint]# export JAVA_8_HOME=/usr/java/default
6、开始编译pinpoint
[root@server pinpoint]# mvn -f ./pom.xml install -Dmaven.test.skip=true此处省略一万字。。。。。。
7、编译成功后,获取到的war包为:
[root@server pinpoint]# ls ./collector/target/pinpoint-collector-1.5.3-SNAPSHOT.war./collector/target/pinpoint-collector-1.5.3-SNAPSHOT.war[root@server pinpoint]# [root@server pinpoint]# ls ./web/target/pinpoint-web-1.5.3-SNAPSHOT.war./web/target/pinpoint-web-1.5.3-SNAPSHOT.war[root@server pinpoint]# [root@server pinpoint]# ls ./agent/target/pinpoint-agent-1.5.3-SNAPSHOT.tar.gz ./agent/target/pinpoint-agent-1.5.3-SNAPSHOT.tar.gz[root@server pinpoint]# [root@server pinpoint]#
pinpoint部署
5
准备如下:
apache-tomcat-9.0.0.M11.tar.gz(tomcat 8也支持)、
hbase-1.2.4-bin.tar.gz
hbase-create.hbase(在pinpoint源码中pinpoint/hbase/s/hbase-create.hbase)
apache-tomcat-9.0.0.M11.tar.gz(tomcat 8也支持)、
hbase-1.2.4-bin.tar.gz
hbase-create.hbase(在pinpoint源码中pinpoint/hbase/s/hbase-create.hbase)
部署时为了方便起见,使用hbase自带的zookeeper,将hbase、collector、web都部署在同一台机器上,ip为192.168.1.154,collector的端口号为18080,web的端口号为28080。
1、部署Hbase
关闭selinux和iptables
关闭selinux和iptables
解压hbase
解压hbase
配置hbase
配置hbase
找到# export JAVA_HOME=/usr/java/jdk1.6.0/ 在这一行下增加一行:
export JAVA_HOME=/usr/java/default
增加rootdir配置,使用本地存储base数据
[root@localhost hbase]# vi conf/hbase-site.xml<configuration> <property> <name>hbase.rootdir</name> <value>file:///opt/hbase/data</value> </property></configuration>
启动hbase
启动hbase
导入初始化数据
导入初始化数据
确认初始化数据导入成功
确认初始化数据导入成功
使用浏览器访问http://192.168.1.154:16010/master-status确认数据导入成功,User tables有如下表则导入初始化数据成功。
2、部署pinpoint collector
[root@localhost ~]# cd /opt/[root@localhost opt]# tar zxf /root/apache-tomcat-9.0.0.M11.tar.gz [root@localhost opt]# mv apache-tomcat-9.0.0.M11/ pp_collector[root@localhost opt]# cd pp_collector/conf/[root@localhost conf]# sed -i 's/port="8005"/port="18005"/g' server.xml[root@localhost conf]# sed -i 's/port="8080"/port="18080"/g' server.xml[root@localhost conf]# sed -i 's/port="8443"/port="18443"/g' server.xml[root@localhost conf]# sed -i 's/port="8009"/port="18009"/g' server.xml[root@localhost conf]# sed -i 's/redirectPort="8443"/redirectPort="18443"/g' server.xml[root@localhost conf]# sed -i "s/localhost/192.168.1.154/g" server.xml[root@localhost conf]# cd ../webapps/[root@localhost webapps]# rm -rf *[root@localhost webapps]# yum install -y unzip[root@localhost webapps]# unzip /root/pinpoint-collector-1.5.3-SNAPSHOT.war -d /opt/pp_collector/webapps/ROOT[root@localhost webapps]# cd ../bin/[root@localhost bin]# ./startup.sh Using CATALINA_BASE: /opt/pp_collectorUsing CATALINA_HOME: /opt/pp_collectorUsing CATALINA_TMPDIR: /opt/pp_collector/tempUsing JRE_HOME: /usr/java/default/jreUsing CLASSPATH: /opt/pp_collector/bin/bootstrap.jar:/opt/pp_collector/bin/tomcat-juli.jarTomcat started.[root@localhost bin]#
3、部署pinpoint web
[root@localhost ~]# cd /opt/[root@localhost opt]# tar zxf /root/apache-tomcat-9.0.0.M11.tar.gz [root@localhost opt]# mv apache-tomcat-9.0.0.M11/ pp_web[root@localhost opt]# cd pp_web/conf/[root@localhost conf]#[root@localhost conf]# sed -i 's/port="8005"/port="28005"/g' server.xml[root@localhost conf]# sed -i 's/port="8080"/port="28080"/g' server.xml[root@localhost conf]# sed -i 's/port="8443"/port="28443"/g' server.xml[root@localhost conf]# sed -i 's/port="8009"/port="28009"/g' server.xml[root@localhost conf]# sed -i 's/redirectPort="8443"/redirectPort="28443"/g' server.xml[root@localhost conf]# sed -i "s/localhost/192.168.1.154/g" server.xml[root@localhost conf]# cd ../webapps/[root@localhost webapps]# rm -rf *[root@localhost webapps]# unzip /root/pinpoint-web-1.5.3-SNAPSHOT.war -d /opt/pp_web/webapps/ROOT[root@localhost webapps]# cd ../bin/[root@localhost bin]# ./startup.sh Using CATALINA_BASE: /opt/pp_webUsing CATALINA_HOME: /opt/pp_webUsing CATALINA_TMPDIR: /opt/pp_web/tempUsing JRE_HOME: /usr/java/default/jreUsing CLASSPATH: /opt/pp_web/bin/bootstrap.jar:/opt/pp_web/bin/tomcat-juli.jarTomcat started.[root@localhost bin]#使用浏览器访问http://192.168.1.154:28080/确认pinpoint web启动成功
4、部署pinpoint agent
pinpoint agent部署在具体的应用组件上,采集具体应该组件的信息,将CrapApi的war部署在192.168.1.160的tomcat容器中,使用pinpoint agent采集crapapi的应用信息。
将编译出来的pinpoint-agent-1.5.3-SNAPSHOT.tar.gz上传到192.168.1.160的/opt目录下
[root@localhost opt]# mkdir pinpoint-agent-1.5.3[root@localhost opt]# tar zxf pinpoint-agent-1.5.3-SNAPSHOT.tar.gz pinpoint-agent-1.5.3[root@localhost pinpoint-agent-1.5.3]# vi pinpoint.config
修改profiler.collector.ip=127.0.0.1 为profiler.collector.ip=192.168.1.154
[root@localhost pinpoint-agent-1.5.3]# cd /opt/apache-tomcat-8.0.36/bin/[root@localhost bin]# vim catalina.sh
在脚本开头加入
AGENT_VERSION="1.5.3-SNAPSHOT" AGENT_ID="CrapApi"APPLICATION_NAME="CrapApi-192.168.1.160"AGENT_PATH="/opt/pinpoint-agent-1.5.3"CATALINA_OPTS="$CATALINA_OPTS -javaagent:$AGENT_PATH/pinpoint-bootstrap-${AGENT_VERSION}.jar"CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=$AGENT_ID"CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=$APPLICATION_NAME"
其中AGENT_ID需要唯一。 重启crapapi的tomcat
[root@localhost bin]#./shutdown.sh && ./startup.sh
重启完毕后,访问http://192.168.1.154:28080/,在Application list下会多出CrapApi的应用:
pinpoint简单使用
6
1、首先使用CrapApi做一些操作,登入系统等等操作,使得CrapApi进行一些事务,这样pinpoint才能采集到数据。下图为CrapApi一部分操作后,pinpoint web上显示的监控数据。
点击Inspector,会新弹出一个页面如下,显示检测信息,分析Heap Usage、PermGen Usage 、JVM/System Cpu Usage、Transactions Per Second等信息。
如果组件内部出现调用错误,如下图中会显示有错误调用:
点击如下图中红色框中的位置:
弹出新页面如下:
点击出错的Api即可追踪出错栈信息。
一些使用注意事项
7
如果Hbase不是与pp-web, pp-collector装在一台机器上,需要安装zookeeper,只要安装就好,保证2181端口启动就好。
如果zookeeper安装在独立机器上,这里需要修改一下ppcolletor 和 ppweb的配置文件pinpoint-collector.properties,pinpoint-web.properties,不然会导致两个模块启动失败。
发现pinpoint还是有些缺陷,异步的操作监控不到。比如rabbitmq中的信息就采集不到,github上也有人自己开发了一个pinpoint的rabbitmq插件,但也不是很完善,比如一个消息对应多个消费者的这种模型pinpoint本身就不支持,所以插件这部分内容也是不完善的。
参考文档
8
Pinpoint官方GitHub
Pinpoint官方安装说明
https://github.com/naver/pinpoint/blob/master/doc/installation.md Pinpoint
中文部署说明
https://sconts.com/11
http://www.cnblogs.com/yyhh/p/6106472.html
Pinpoint rabbitmq插件
https://github.com/majinkai/pinpoint-plugin
作者介绍:
刘凯祥, BoCloud博云运维开发工程师。专注企业级服务特别是DevOps、APM领域的研究、应用。从事运维开发多年,开发的BoCloud博云BSM产品集成多种云平台包括openstack、VMware、阿里云、京东云的纳管、统一运维管理、服务实时监控等功能,现在从事博云BSM产品的后台研发工作。
作者介绍:
刘凯祥, BoCloud博云运维开发工程师。专注企业级服务特别是DevOps、APM领域的研究、应用。从事运维开发多年,开发的BoCloud博云BSM产品集成多种云平台包括openstack、VMware、阿里云、京东云的纳管、统一运维管理、服务实时监控等功能,现在从事博云BSM产品的后台研发工作。
相关阅读:
近期给云技术社区投稿,一经采用送最新出版的《运维前线》一本,数量有限,送完为止。投稿邮箱:502207183@qq.com。
加入中国最活跃的OpenStack技术及项目讨论2000人QQ群,加群主QQ:502207183,并注明城市、行业、技术方向。
交流 分享 提升
云技术社区成立于2014年,国内最大的云技术交流平台,分享在云计算/虚拟化项目实施中的资讯、经验和技术,坚持干货。旗下运营:云技术实践、云技术、桌面云之云潮涌动等公众号,以及相关的微信群和QQ群,覆盖云计算领域的技术人群,加入云技术社区微信、QQ群请点击订阅号菜单“群和活动”。