Pinpoint 一款强大的APM工具

article/2025/8/23 13:37:47

背景

程序的监控一直是程序员最头痛的事情之一,现网程序有问题怎么办?看进程看端口 top/free/df 三件套?网络抓包?看日志?所以为了满足这些初级需求很多公司都做了主机监控,进程端口监听等功能,例如主机磁盘满/只读告警,端口不监听告警。这些基础的监控说到底都是黑盒监控,并没有进入到程序内部的调用链里面,程序内部的运行情况完全是两眼一抹黑,导致是该模块本身有问题还是下游的依赖模块出了问题,完全不知道,只能看一行行看日志慢慢确认。换言之,我们需要的是一个分布式调用链追踪系统,能够清楚的描述程序的调用关系,每一跳的耗时,以及请求数量的统计,很明显,Pinpoint就是我们要找的工具。

Pinpoint

Pinpoint 是一个APM(Application performance management)工具,相对于其他APM工具(例如ZipKin)有一个强大的优势,那就是应用程序无需修改一行代码就能直接使用,例如Java程序直接使用Pinpoint提供的Java agent(jar包)就能使用。目前Pinpoint直接Java/PHP/Python三种语言,未来可能会支持更多语言,开源社区极其活跃,版本迭代比较快。

 

Pinpoint的优势

除了上面谈到的对用户代码无嵌入外,Pinpoint还有以下优势:

1.强大的UI

UI会自动识别程序的调用关系并且绘制图表,支持的组件多,例如Tomcat/Jetty/JBoss/Thrift/Kafka/Mysql等等。

2.调用链信息全

除了能看到调用关系及每一级耗时外,还能看到每一级的参数及SQL。

3.高性能

在JVM字节码层做处理,程序的性能损耗小于3%。

Pinpoint架构

由Pinpoint官方给出的架构图我们可以看出,Pinpoint Agent负责采集用户程序的信息 通过 网络将信息发给服务端 Pinpoint Collector,Pinpoint Collector将数据持久化到Hbase中,前端Web UI从Hbase中读取数据展示给用户。是一个标准的C/S分布式架构,选中Hbase的原因想必是为了支持海量数据。

安装实验 

以下记录比较流水,由于笔者实验已经已经安装JDK1.8所以没有这块的安装说明。

安装zookeeper

理论上不用安装,hbase默认会拉起zookeeper,不过是单机的

Apache Download Mirrors

安装步骤参考:Zookeeper安装教程_yuan_xw的专栏-CSDN博客_zookeeper安装步骤

安装hbase

Apache Download Mirrors

注意设置JAVA_HOME环境变量,修改/data/hbase-1.4.13/conf/hbase-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64/jre/

cd /data/hbase-1.4.13/bin

./start-hbase.sh 

创建hbase pinpoint相关表

https://github.com/naver/pinpoint/tree/master/hbase/scripts

$HBASE_HOME/bin/hbase shell hbase-create.hbase

$HBASE_HOME/bin/hbase shell hbase-create-snappy.hbase

安装tomcat

参考:Linux tomcat安装详解_lcyaiym的专栏-CSDN博客_linux安装tomcat步骤

Apache Tomcat® - Apache Tomcat 9 Software Downloads 下载 apache-tomcat-9.0.37.tar.gz

mkdir /usr/local/tomcat

mv apache-tomcat-9.0.37/* /usr/local/tomcat

cd /usr/local/tomcat/bin

./startup.sh 

安装pinpoint collector

https://github.com/naver/pinpoint/releases/tag/v2.0.4

下载 pinpoint-collector-2.0.4.war

启动 

rm -rf /usr/local/tomcat/webapps/*

unzip pinpoint-collector-2.0.4.war -d /usr/local/tomcat/webapps/ROOT

/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/profiles/release

配置中有关zookeeper的配置都改成localhost

根据 /usr/local/tomcat/logs/catalina.out 的报错信息进行排查。

注意修改主机名,collector注册zookeeper节点用的是主机名供其他服务发现,所以要确保DNS能正确解析。

安装pinpoint web

https://github.com/naver/pinpoint/releases/tag/v2.0.4

下载 pinpoint-web-2.0.4.war

rm -rf /usr/local/tomcat/webapps/*

unzip pinpoint-web-2.0.4.war -d /usr/local/tomcat/webapps/ROOT

把 /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/jdbc.properties 文件清空。

安装测试pinpoint agent

https://github.com/naver/pinpoint/releases/tag/v2.0.4

下载 pinpoint-agent-2.0.4.tar.gz

mkdir /usr/local/tomcat

mv apache-tomcat-9.0.37/* /usr/local/tomcat

rm -rf /usr/local/tomcat/webapps/*

unzip test.war -d /usr/local/tomcat/webapps/ROOT

/usr/local/tomcat/bin/catalina.sh 中加入以下三项配置:

CATALINA_OPTS="$CATALINA_OPTS -javaagent:/data/pinpoint/pinpoint-agent-2.0.4/pinpoint-bootstrap-2.0.4.jar"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=pp20200906"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=JustTestPP"

配置说明:

agentId 表示该实例的唯一标识,是全局唯一的ID。

applicationName 表示同一服务。

例如有一个购买服务,但是有两个实例,那么就可以这样定义:

agentId=buy1

applicationName=buysercie

agentId=buy2

applicationName=buysercie

问题定位

只有开始的两条记录能被统计到,之后的记录无法统计

解决方法:

修改 

/data/pinpoint/pinpoint-agent-2.0.4/pinpoint.config  

/data/pinpoint/pinpoint-agent-2.0.4/profiles/release/pinpoint-env.config

/data/pinpoint/pinpoint-agent-2.0.4/profiles/local/pinpoint-env.config

中 profiler.sampling.rate 值改为1,表示每一条记录都采集。默认是20,表示每20条采集一条。

编译安装:

1 编译源码

1.1 下载源码,项目代码托管在github上,地址: https://github.com/naver/pinpoint,最新稳定版为2.0.1,使用git clone下载2.0.1版本源码至本地。

git clone -b v2.0.1 https://github.com/naver/pinpoint.git

1.2 编译源码,maven版本建议3.5.x,需要配置java环境变量。

将JAVA_HOME环境变量设置为JDK 8主目录

将JAVA_6_HOME环境变量设置为JDK 6主目录(建议使用1.6.0_45)

将JAVA_7_HOME环境变量设置为JDK 7主目录(建议使用1.7.0_80)

将JAVA_8_HOME环境变量设置为JDK 8主目录

将JAVA_9_HOME环境变量设置为JDK 9主目录

终端执行下面命令开始编译:

mvn compile package -DskipTests=true

编译顺利,爽!编译成功之后,找到下面包:

agent目录下:pinpoint-agent-2.0.1.tar.gz 探针包

collector目录下:pinpoint-collector-2.0.1.war 收集端包

web目录下:pinpoint-web-2.0.1.war web页面包

hbase目录下:hbase-create.hbase

2. 实施部署

2.1 部署单机版Hbase,pinpoint支持的HBase版本为0.98.x、1.0.x、1.2.x,本次使用hbase-1.2.6-bin.tar.gz 版本,解压Hbase。

tar -zxvf hbase-1.2.6-bin.tar.gz

2.2 配置HBase

cd hbase-1.2.6/conf
vi hbase-site.xml

修改为以下内容,路径和zookeeper信息请根据实际配置。

<configuration><property><name>hbase.zookeeper.quorum</name><value>192.168.166.122:2181</value><!--配置内置的zookeeper--></property><property><name>hbase.zookeeper.property.dataDir</name><value>/xx/hbase-1.2.6/zookeeperdata</value></property><property><name>hbase.tmp.dir</name><value>/xx/hbase-1.2.6/tmpdata</value></property><property><name>hbase.rootdir</name><value>/xx/hbase-1.2.6/data</value></property><property><name>hbase.cluster.distributed</name><value>false</value></property>
</configuration>

2.3 启动HBase

cd hbase-1.2.6/bin
sh start-hbase.sh

使用jps命令查看是否启动成功

jps
3238 HMaster

出现HMaster进程说明启动成功

2.4 初始化pinpoint使用的hbase表脚本

上传hbase-create.hbase文件到bin目录

cd hbase-1.2.6/bin
./hbase shell hbase-create.hbase

2.5 部署 pinpoint-collector-2.0.1.war 包

以tomcat为例,解压pinpoint-collector-2.0.1.war到webapps/ROOT 目录

转到release目录。

cd ROOT/WEB-INF/classes/profiles/release

修改hbase-env.properties文件:

hbase.client.host=192.168.166.122

hbase.client.port=2181

hbase.client.host=192.168.166.122
hbase.client.port=2181# hbase default:/hbase
hbase.zookeeper.znode.parent=/hbase# hbase namespace to use default:default
hbase.namespace=default# ==================================================================================
# hbase client thread pool option
hbase.client.thread.max=64
hbase.client.threadPool.queueSize=5120
# prestartAllCoreThreads
hbase.client.threadPool.prestart=true# warmup hbase connection cache
hbase.client.warmup.enable=true# enable hbase async operation. default: false
hbase.client.async.enable=true

修改 pinpoint-collector-env.properties文件

pinpoint.zookeeper.address=192.168.166.122:2181

启动tomcat

2.6 部署 pinpoint-web-2.0.1.war 包

以tomcat为例,解压pinpoint-web-2.0.1.war到webapps/ROOT 目录

转到release目录

cd ROOT/WEB-INF/classes/profiles/release

修改hbase-env.properties文件:

hbase.client.host=192.168.166.122

hbase.client.port=2181

hbase.client.host=192.168.166.122
hbase.client.port=2181# hbase default:/hbase
hbase.zookeeper.znode.parent=/hbase# hbase namespace to use default:default
hbase.namespace=default

修改 pinpoint-web-env.properties文件

pinpoint.zookeeper.address=192.168.166.122:2181

启动tomcat

访问web页面:http://192.168.166.122:<tomcat 端口>,

出现如下页面,恭喜你pinpoint部署成功。

3. 程序接入pinpoint

上传pinpoint-agent-2.0.1.tar.gz 包到服务器任意目录,

解压

tar -zxvf pinpoint-agent-2.0.1.tar.gz 

重命名

mv pinpoint-agent-2.0.1 agent

应用程序jvm加入启动参数

JAVA_OPTS="-javaagent:/xx/agent/pinpoint-bootstrap-2.0.1.jar -Dpinpoint.agentId=test -Dpinpoint.applicationName=test"

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

[root@i-vzdytl5t ~]# 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
...
镜像

root@i-vzdytl5t 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@i-vzdytl5t 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

http://127.0.0.1:8079/

hbase页面

 

 


http://chatgpt.dhexx.cn/article/IhLYOH99.shtml

相关文章

pinpoint新增自定义插件监控

pinpoint&#xff1a;源码地址&#xff1a;https://github.com/pinpoint-apm/pinpoint.git 定义&#xff1a;基于Google的Dapper理论&#xff0c;通过在程序内部的class的方法&#xff0c;构造方法等地方埋点&#xff0c;通过Java-agent技术实现类增强的一种链路追踪的监控&…

pinpoint 安装 for spring cloud

pinpoint 安装 for spring cloud 1.环境说明2.安装步骤2.1 安装pinpoint2.2 安装agent2.2.1 下载2.2.2 agent配置2.2.3 JVM 配置2.2.4 日志中输出traceId 3.部署问题3.1 多个相同名称的项目放在一个pinpoint下监控3.2 agent id 过长问题&#xff08;最大长度不能超过24个字符&a…

利用Pinpoint搭建全链路监控系统

随着项目微服务的进行&#xff0c;微服务数量逐渐增加&#xff0c;服务间的调用也越来越复杂&#xff0c;我们急切需要一个APM工具帮我们监控各个服务的性能及对服务间的调用进行跟踪&#xff0c;而通过调研多个开源APM工具后&#xff0c;最终我们选择了Pinpoint。 简介 Pinp…

pinpoint安装部署(相关博客合集)

pinpoint安装部署 说明一、PinPoint介绍及工作原理1.1 确定部署的组件及服务 二、相关组件版本兼容情况2.1 确定版本 三、部署3.1 HBASE3.2 agent 说明 本博客写在搭建PinPoint之前&#xff0c;主要是用来记录查阅的相关博客资料&#xff0c;等到动手搭建完再更新实际部署操作…

分布式跟踪工具Pinpoint技术入门

本文初衷 因为工作需要&#xff0c;这周研究了一下APM&#xff08;Application Performance Management&#xff09;相关技术&#xff0c;看了些许资料&#xff0c;对比了各种技术的特点&#xff0c;最终选择Pinpoint作为性能监控工具&#xff0c;本文的主要目的是记录本人部署…

【Pinpoint】安装

文章目录 一. 下载1. 版本&#xff08;2.3.3&#xff09;2. [下载地址](https://github.com/pinpoint-apm/pinpoint/releases/tag/v2.3.3)3. 下载内容4. [hbase](http://archive.apache.org/dist/hbase/1.2.6/) 二. 安装1. 安装JDK82. 安装hbase1.2.61. 解压文件2. 修改sh文件3…

2、Pinpoint-Server端安装

0、本章节简介 安装Pinpoint服务端 采用Docker安装所以需要提前安装 docker和 docker-compose 本文使用的版本是Pinpoint:2.1版本 ps 由于Pinpoint依赖了很多的基础镜像&#xff0c;所以推荐不要在已经部署了程序的机器上部署&#xff0c;以免造成端口号冲突&#xff0c;推荐使…

pinpoint 介绍

基本概念 APM (Application Performance Management/应用性能管理)工具 为大规模分布式系统. 开发语言:Java. 特点: ● 低侵入性 不用改一行业务代码 ● 低性能影响(大约3%资源增长) ServerMap 可以直观的看到分布式系统拓扑结构和节点的事务数量. Realtime Active Thr…

Pinpoint--基础--02--架构设计

Pinpoint–基础–02–架构设计 1、整体架构 1.1、Pinpoint Collector 数据收集模块&#xff0c;接收Agent发送过来的监控数据&#xff0c;并存储到HBase部署在 Web 容器上 1.2、Pinpoint Web 监控展示模块&#xff0c;展示系统调用关系、调用详情、应用状态等&#xff0c;并…

PinPoint(二)技术详解

英文原文&#xff1a;https://naver.github.io/pinpoint/1.8.4/techdetail.html 说明&#xff1a;【】中内容为方便解释自己加的 在这篇文章中&#xff0c;我们描述了Pinpoint的技术细节比如请求追踪&#xff08;transaction tracing&#xff09;和字节码插装&#xff08;byte…

pinpoint搭建及springboot接入使用

效果图&#xff1a; 搭建步骤 Pinpoint github地址&#xff1a;GitHub - pinpoint-apm/pinpoint: APM, (Application Performance Management) tool for large-scale distributed systems. 下载对应的包以及安装hbase 首先安装hbase hbase版本是1.7.1&#xff0c; 下载地址…

APM链路监控:PinPoint使用手册

文章目录 一、PinPoint简介二、PinPoint架构组成三、PinPoint使用说明1.首页2.请求调用栈3.服务状态4.链路事务筛选 结尾 一、PinPoint简介 pinpoint是开源在github上的一款APM监控工具&#xff0c;它是由java编写的&#xff0c;用于大规模分布式系统的监控&#xff1b;它对性…

Pinpoint--基础--3.1--安装部署--环境准备

Pinpoint–基础–3.1–安装部署–环境准备 前提 使用hd用户登陆 完成基础环境搭建https://blog.csdn.net/zhou920786312/article/details/118212302代码位置 https://gitee.com/DanShenGuiZu/learnDemo/tree/master/pinpoint-learn/demo11、安装环境准备 1.1、jdk1.8 基础环…

Pinpoint分布式系统性能监控工具

Pinpoint分布式性能监控工具(docker安装) 在做性能压测的时候&#xff0c;你是不是有只能看到测试报告&#xff1f; 在做性能压测的时候&#xff0c;你是不是想知道每一个方法执行了多长时间&#xff1f; Pinpoint几乎可以帮助你查看你想看到的每一个细节。 Pinpoint是什么&…

PinPoint使用教程

这篇博客&#xff0c;应该是是目前为止&#xff0c;百度上能搜到的关于PinPoint使用教程中最详细的一份答案了。为什么这样说呢&#xff0c;因为我不想写PinPoint使用教程的&#xff0c;后来百度上搜了好久&#xff0c;搜烦了&#xff0c;一怒之下&#xff0c;自己出了一片最详…

Pinpoint详解(分布式链路追踪、链路监控)

英文原文&#xff1a;https://naver.github.io/pinpoint/1.8.4/techdetail.html 说明&#xff1a;【】中内容为方便解释自己加的 在这篇文章中&#xff0c;我们描述了Pinpoint的技术细节比如请求追踪&#xff08;transaction tracing&#xff09;和字节码插装&#xff08;byte…

Pinpoint(一)基本概念和安装部署

Pinpoint是韩国人编写的 APM 系统&#xff0c;是一个分析大规模分布式系统的平台&#xff0c;并提供处理大量跟踪数据的解决方案。 1. 特点 分布式事务追踪&#xff0c;跟踪跨分布式应用的消息自动检测应用拓展水平扩展&#xff0c;以便支持大规模服务器集群提供代码级了践行…

全链路监控之pinpoint

一、pinpoint出现与其他相似概念比较 &#xff08;1&#xff09;、pinpoint概念 pinpoint是由java/PHP编写而成的&#xff0c;用来对大规模的分布式系统提供应用性能管理。pinpoint可以解决复杂架构下的拓扑解析与性能分析。 &#xff08;2&#xff09;、pinpoint的特点 分布…

APM链路监控:pinpoint安装部署实战详细手册

文章目录 一、pinpoint介绍1.pinpoint简介2.架构组成 二、安装环境准备三、HBase单机安装四、pinpoint安装1.安装pinpoint-collector2.安装pinpoint-web3.安装pinpoint-agent 五、pinpoint优化1.collector日志输出级别优化2.Hbase GC优化&#xff08;jdk1.8&#xff09; 结尾 一…

pinpoint使用详解(图文版)

pinpoint使用详解 用了一段时间的pinpoint发现确实挺好用的&#xff0c;就是功能超级多&#xff0c;大概整理了一下各功能的使用用法 1.首页 2.查看应用详细信息 2.1点击查看单个信息 2.2查看应用更详细信息 3.查看详细数据 错误的信息会用红色显示&#xff0c;可以查看错误…