技术

Spring 微服务监控解决方案 - pinpoint

July 25, 2019

Pinpoint是一款全链路分析工具,提供了无侵入式的调用链监控、方法执行详情查看、应用状态信息监控等功能。基于GoogleDapper论文进行的实现,与另一款开源的全链路分析工具Zipkin类似,但相比Zipkin提供了无侵入式、代码维度的监控等更多的特性。 Pinpoint支持的功能比较丰富,可以支持如下几种功能:

服务拓扑图:对整个系统中应用的调用关系进行了可视化的展示,单击某个服务节点,可以显示该节点的详细信息,比如当前节点状态、请求数量等
实时活跃线程图:监控应用内活跃线程的执行情况,对应用的线程执行性能可以有比较直观的了解
请求响应散点图:以时间维度进行请求计数和响应时间的展示,拖过拖动图表可以选择对应的请求查看执行的详细情况
请求调用栈查看:对分布式环境中每个请求提供了代码维度的可见性,可以在页面中查看请求针对到代码维度的执行详情,帮助查找请求的瓶颈和故障原因。
应用状态、机器状态检查:通过这个功能可以查看相关应用程序的其他的一些详细信息,比如CPU使用情况,内存状态、垃圾收集状态,TPS和JVM信息等参数。

emmmm...这文章上个月就写好了 忘记发布了...

Pinpoint 主要由 3 个组件外加 Hbase 数据库组成,三个组件分别为:Agent、Collector 、Web UI。

需求简介:采用微服务架构后一个功能问题会牵扯到很多模块,所以需要一个无侵式的服务监控工具来高效的诊断问题。
部署方案:Collector 、Web UI在同一台服务器,Agent部署在容器内部。
实验环境:centos7

1. 安装Collector(docker方式)

yum -y install git epel-release python-pip
git clone https://github.com/naver/pinpoint-docker.git
cd pinpoint-docker
vi docker-compose.yml #修改hbbase和zookeeper映射文件路径
setup-1.png
mkdir -p /usr/local/pinpoint/hbase && mkdir -p /usr/local/pinpoint/zookeeper
docker-compose pull && docker-compose up -d
访问 http://IP:8079

2. 给容器安装pinpoint-Agent(仅适用于Java项目)

访问 https://github.com/naver/pinpoint/releases 下载与Collector同版本的Agent压缩包
解压压缩包,编辑pinpoint.config文件 配置Collector地址。
sed -i "s/profiler.collector.ip=127.0.0.1/profiler.collector.ip=你的IP地址/g" /解压后的路径/pinpoint.config
重新打个压缩包,然后再dockerfile中写入下图
dockerfile.png
ADD pinpoint-agent-1.8.4.tar.gz /usr/local/pinpoint-agent/
docker run 的时候加入下面的参数
-javaagent:/usr/local/pinpoint-agent/pinpoint-bootstrap-1.8.4.jar -Dpinpoint.applicationName=标识符 -Dpinpoint.agentId=唯一ID
docker run 参考命令
docker run -d -v /etc/localtime:/etc/localtime -e JAVA_OPTS="-javaagent:/usr/local/pinpoint-agent/pinpoint-bootstrap-1.8.4.jar -Dpinpoint.applicationName=标识符 -Dpinpoint.agentId=唯一ID -XX:+UseG1GC" --privileged=true --restart=always --log-opt max-size=50m --log-opt max-file=1 --restart=on-failure:1 --oom-score-adj -1000 --name 容器名称 jdk:1.8 --spring.profiles.active=test

最后大功告成!(PS:Pinpoint也可以做到监控异常后发送邮件通知,以后有空再写了)
Pinpoint.png

添加新评论