APM-pinpoint(分布式集群环境下的性能监控)

[官方参考](https://github.com/naver/pinpoint/blob/master/doc/installation.md” pinpoint 官方文档”)
中文文档参考

环境要求:jdk1.6+

1. 安装hbase(v1.1.5)

<pre><code>wget http://mirrors.hust.edu.cn/apache/hbase/1.1.5/hbase-1.1.5-bin.tar.gz</code></pre> 直接解压然后 运行bin下面的start-hbase.sh(如果没有配置过jdk环境变量,需要配置hbase-env.sh中的jdk path)

2.安装pinpoint(v1.5.2)
  • 直接下载web、collector和agent的包
    wget https://github.com/naver/pinpoint/releases/download/1.5.2/pinpoint-web-1.5.2.war; wget https://github.com/naver/pinpoint/releases/download/1.5.2/pinpoint-collector-1.5.2.war; wget https://github.com/naver/pinpoint/releases/download/1.5.2/pinpoint-agent-1.5.2.tar.gz

  • 将web和collector分别放到web容器下,最好两个容器,我将web的端口设为28080,collector的端口设为18080,
    如果hbase和web,collector在同一台机器,不需要任何配置,默认会去读本地的hbase zookeeper。

  • 若agent与collction分布在不同的机器,需要修改agent配置文件如下:

    《APM-pinpoint(分布式集群环境下的性能监控)》 image.png
    需要修改collection配置文件(pinpoint-collector-1.5.2/WEB-INF/classes/pinpoint-collector.properties)如下:

《APM-pinpoint(分布式集群环境下的性能监控)》 image.png

3.集成到应用

将agent放到app所在的服务器,然后再启动参数中加入
比如我现在用的是dubbo服务(最新的pinpoint已经支持了dubbo)
<pre><code>java -javaagent:$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar -Dpinpoint.agentId=$AGENT_ID -Dpinpoint.applicationName=$APPLICATION_NAME</code></pre>
备注: AGENT_PATH:agent存放的位置,VERSION:我用的是1.5.2, AGENT_ID :自定义。就是一个唯一标识,APPLICATION_NAME:自定义
   如果是tomcat的话修改catalina.sh,添加-javaagent, -Dpinpoint.agentId, -Dpinpoint.applicationNameCATALINA_OPTS 参数里去。

4.效果图

访问 :http://192.168.1.49:28080/

《APM-pinpoint(分布式集群环境下的性能监控)》 首页.png

右上角的小蓝点代表每次访问,选中可以查看详情如下

《APM-pinpoint(分布式集群环境下的性能监控)》 请求栈.png
《APM-pinpoint(分布式集群环境下的性能监控)》 transaction详情.png

选中其中的某个transaction,可以看到完整的java stack,甚至包括执行的sql语句,多么完美的apm工具!

(友情提醒不建议使用pinpoint的quickstart,不然你都不知道到底发生了什么,出现问题,很难定位。)

遇到的坑

1、目前使用的版本只能支持到jdk1.7 需要在path中建JAVA_7_HOME这个环境变量
2、我将hbase当中的测试数据全部清除后, 然后调用被监控的接口,然后前端总是不显agent的application信息,然后去查询agentinfo表,确实没有数据,但是,agentStatus当中的表都有了数据,只有agentInfo表怎么都没有数据….折腾半天原来被监控的服务需要重启,才能将agent信息重新注册到hbase中。。。。。。

3、清除了hbase的data文件之后,通过hbase的list命令返回为空库,但是重新初始化pinpoint的表结构时,提示:表已存在,,,,,很奇怪,最后发现,虽然删除了hbase的表数据,但是hbase的表都注册到zk中了,所以需要把zk中的数据也要清理掉……

    原文作者:_奔跑的蜗牛_
    原文地址: https://www.jianshu.com/p/08b72a47bba9
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞