美文网首页运维相关程序员JAVA相关
使用pinpoint进行SpringCloud服务链监控

使用pinpoint进行SpringCloud服务链监控

作者: tinylk | 来源:发表于2019-03-02 00:29 被阅读1097次

    前言

    在使用微服务架构时,客户的一个请求可能会经过多个微服务、模块、中间件,那么如何确定客户端的一次操作背后调用了哪些微服务、模块、中间件,调用的先后顺序是怎样的,每个服务的性能如何?随着业务系统日趋复杂,系统中需要调用链的监控来解决这个问题。

    Pinpoint是一个开源的 APM (Application Performance Management/应用性能管理)工具。一个分布式跟踪系统,基于google Dapper实现,用于基于java的大规模分布式系统,通过跟踪分布式应用之间的调用来提供解决方案,以帮助分析系统的总体结构和内部模块之间如何相互联系。pinpoint 有3个主要组件组成:Collector、Web、Agent,采用HBase进行存储。 Collector和Web都是WAR包,Agent采用一个JAVA应用程序加载。

    安装部署

    这里采用docker的方式部署pinpoint。相关的Dockerfile及docker-compose.yml参见https://gitee.com/tinylk/docker-pinpoint

    构建docker镜像

    • 进入 pinpoint-web目录 执行docker build -t tinylk/pinpoint-web:1.8.2 . 命令构建镜像
    • 进入 pinpoint-hbase目录 执行 docker build -t tinylk/pinpoint-hbase:1.8.2 . 命令构建镜像
    • 进入 pinpoint-collector目录 执行 docker build -t tinylk/pinpoint-collector:1.8.2 . 命令构建镜像
    • 进入 pinpoint-mysql docker build -t tinylk/pinpoint-mysql:1.8.2 . 命令构建镜像

    运行容器

    运行docker-compose命令启动pinpoint。启动后使用浏览器打开http://localhost:58080地址访问pinpoint界面。

    docker-compose up -d
    
    • docker-compose.yml中pinpoint-web里面email相关配置请修改为自己的邮箱配置。

    使用Pinpoint Agent收集调用信息

    部署好pinpoint服务端后,就可以通过pinpoint agent来收集java应用信息。Pinpoint Agent采用javaagent无侵入的方式实现了应用调用信息的收集,原应用程序无需做任何改动。只需要在启动时增加javaagent参数。启动时参数如下:

    Java -javaagent:/opt/pinpoint-agent-1.8.2/pinpoint-bootstrap-1.8.2.jar -Dpinpoint.agentId=demo1 -Dpinpoint.applicationName=demo –jar demo.jar
    

    说明:

    1. javaagent 参数必须在 jar参数之前;
    2. pinpoint.agentId 应用实例的唯一标识(可以采用主机名+应用名);
    3. pinpoint.applicationName 相同的名称表示相同服务的一组应用实例;
    4. 启动前需要修改pinpoint.config 文件中的相应配置:
    profiler.collector.ip (collector的ip地址 xxx.xxx.xxx.xxx)
    profiler.collector.tcp.port (collector's collector.tcpListenPort - default: 9994)
    profiler.collector.stat.port (collector's collector.udpStatListenPort - default: 9995)
    profiler.collector.span.port (collector's collector.udpSpanListenPort - default: 9996)
    profiler.sampling.rate=1(数据采样率,搜集数据的比率,默认为20即为1/20 5%,如想改为100%即设为1)
    

    pinpoint的web界面

    ServerMap – 可视化的方式显示服务的依赖关系及调用计数。.

    ServerMap

    CallStack – 每次请求的调用过程,查看故障点及瓶颈。

    CallStack

    Inspector - 查看应用程序的其他详细信息,如CPU使用情况,内存/垃圾收集,TPS和JVM参数。

    Inspector

    pinpoint的CallStack 界面需要从ServerMap界面右上角图表中用鼠标拖拽矩形框选择后进入。

    报警邮件通知配置

    Pinpoint-web会定期检查应用程序的状态,如果满足某些预先配置的规则时会触发警报。

    Web模块中的后台批处理程序默认情况每3分钟检查一次预定义规则。 满足规则后,批处理程序将向注册到用户组的用户发送短信/电子邮件。

    一.配置用户及规则

    1. 点击主界面右上角配置按钮,进入配置界面

    2. 注册用户

    3. 创建用户组

    4. 添加用户及用户组

    5. 设置报警通知规则

    二.实现邮件发送代码及配置

    为了使用报警功能,必须实现com.navercorp.pinpoint.web.alarm.AlarmMessageSender类的发送邮件和SMS的方法,并配置将其注册至Spring中。当警报触发时, AlarmMessageSender#sendEmail和 AlarmMessageSender#sendSms 方法将会被调用。(本部分已经在前面docker安装部署中配置好)

    报警通知的详细内容介绍请参见:https://github.com/naver/pinpoint/blob/master/doc/alarm.md

    参考地址

    相关文章

      网友评论

        本文标题:使用pinpoint进行SpringCloud服务链监控

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