Pinpoint 是用 Java 编写的 APM(应用性能管理)开源工具,用于大规模分布式系统。Pinpoint 提供了一个解决方案,以帮助分析系统的总体结构以及分布式应用程序的组件之间是如何进行数据互联的。
能够非常方便的查询分布式系统之间的调用。比如常用的dubbo服务,grpc服务。支持大多数的java调用框架。
pinpoint 有以下几个特点:
- 分布式事务跟踪,跟踪跨分布式应用的消息
- 自动检测应用拓扑,帮助你搞清楚应用的架构
- 水平扩展以便支持大规模服务器集群
- 提供代码级别的可见性以便轻松定位失败点和瓶颈
以docker方式安装
安装docker docker-compose
yum update -y
yum install docker epel-release python-pip -y
pip install --upgrade pip
pip install docker-compose
修改daemon.json
#cat /etc/docker/daemon.json
{"registry-mirrors": ["http://579fe187.m.daocloud.io","https://pee6w651.mirror.aliyuncs.com"]}
启动docker
systemctl enable docker
systemctl start docker
下载pinpoint-docker,启动pinpoint服务
git clone https://github.com/naver/pinpoint-docker.git
cd Pinpoint-Docker
docker-compose pull && docker-compose up -d
如有问题,请修改相对路径为绝对路径
...
volumes:
- /home/pinpoint/hbase
- /home/pinpoint/zookeeper
...
pull如下镜像
root@pinpoint-docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/zookeeper 3.4 bf5cbc9d5cac 10 days ago 146 MB
docker.io/pinpointdocker/pinpoint-agent 1.7.3 d10e8ad4472e 11 days ago 18.5 MB
docker.io/pinpointdocker/pinpoint-hbase 1.7.3 24ec151afe93 11 days ago 993 MB
docker.io/pinpointdocker/pinpoint-web 1.7.3 cfffbb994f1b 11 days ago 659 MB
docker.io/pinpointdocker/pinpoint-collector 1.7.3 998b986648a8 11 days ago 604 MB
docker.io/pinpointdocker/pinpoint-quickstart latest 125fa49a4a38 2 weeks ago 566 MB
docker.io/flink 1.3.1 c08ccd5bb7a6 10 months ago 480 MB
启动完成后所起的容器
[root@ pinpoint-docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
770e180203e9 pinpointdocker/pinpoint-quickstart "catalina.sh run" 3 hours ago Up 3 hours 0.0.0.0:8000->8080/tcp pinpoint-quickstart
968c689aad3d pinpointdocker/pinpoint-agent:1.7.3 "/usr/local/bin/co..." 3 hours ago Up 3 hours pinpoint-agent
19fac27003e3 pinpointdocker/pinpoint-web:1.7.3 "/usr/local/bin/st..." 3 hours ago Up 3 hours 0.0.0.0:9997->9997/tcp, 0.0.0.0:8079->8080/tcp pinpoint-web
08f7242e3612 pinpointdocker/pinpoint-collector:1.7.3 "/usr/local/bin/st..." 3 hours ago Up 3 hours 8080/tcp, 0.0.0.0:9994-9996->9994-9996/tcp, 0.0.0.0:9995-9996->9995-9996/udp pinpoint-collector
23262f75eec0 pinpointdocker/pinpoint-hbase:1.7.3 "/bin/sh -c '${BAS..." 3 hours ago Up 3 hours 0.0.0.0:16010->16010/tcp, 0.0.0.0:16030->16030/tcp, 0.0.0.0:60000->60000/tcp, 0.0.0.0:60020->60020/tcp, 0.0.0.0:2180->2181/tcp pinpoint-hbase
f0525f78484e flink:1.3.1 "/docker-entrypoin..." 4 hours ago Up 4 hours 6123/tcp, 0.0.0.0:6121-6122->6121-6122/tcp, 0.0.0.0:19994->19994/tcp, 8081/tcp pinpoint-flink-taskmanager
ec7959d91bab zookeeper:3.4 "/docker-entrypoin..." 4 hours ago Up 4 hours 2181/tcp, 2888/tcp, 3888/tcp pinpoint-docker_zoo3_1
67fe5108a1f8 zookeeper:3.4 "/docker-entrypoin..." 4 hours ago Up 4 hours 2181/tcp, 2888/tcp, 3888/tcp pinpoint-docker_zoo2_1
ff751bd4ce44 zookeeper:3.4 "/docker-entrypoin..." 4 hours ago Up 4 hours 2181/tcp, 2888/tcp, 3888/tcp pinpoint-docker_zoo1_1
34ae285a9246 flink:1.3.1 "/docker-entrypoin..." 4 hours ago Up 4 hours 6123/tcp, 0.0.0.0:8081->8081/tcp pinpoint-flink-jobmanager
访问nodeIP:8079
构建agent
下载 pinpoint-agent zip。然后修改启动参数: 比如将pinpoint-agent 放到了 /opt/pinpoint 目录下了。
JAVA_OPTS=" -Duser.timezone="Asia/Shanghai" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true"
PINPOINT_OPTS=" -javaagent:/opt/pinpoint/pinpoint-bootstrap-*.jar -Dpinpoint.agentId=store-demo-agent01
-Dpinpoint.applicationName=store-demo"java -jar ${JAVA_OPTS} ${PINPOINT_OPTS} /opt/store-demo-*.jar
设置好pinpoint.agentId 和pinpoint.applicationName 两个参数。 再自动就可以了。
启动之前要替换pinpoint collector的ip:
PINPOINT_COLLECTOR_IP 是collector的ip。要保证能访问 9994 的tcp,和 9995 9996 的udp端口。 否则只能注册而不能看到数据。udp端口是负责收集数据的。
到pinpoint web端查看采集数据
原文链接:开源APM工具PINPOINT 性能数据采集分析,转载请注明来源!