Pinpoint 技术架构及部署

article/2025/8/23 13:30:01

目录

一、背景

二、简介

三、Pinpoint Collector 收集端

四、Pinpoint Web

五、Pinpoint Agent

六、监控效果图

七、其他


一、背景

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

1.1、github地址是:https://github.com/naver/pinpoint

1.2、选择它有4个方面原因:

  1. pinpoint是基于java开发的,利于项目后期对源代码的修改
  2. 集成pinpoint不需要修改一行代码
  3. pinpoint有非常直观的UI,符合项目的当前需求
  4. pinpoint的社区还是挺活跃,一般提问题第二天就有项目的committer回复

二、简介

Pinpoint是一个开源的 APM (Application Performance Management/应用性能管理)工具,用于基于java的大规模分布式系统。在使用上力图简单高效,通过在启动时安装agent,不需要修改哪怕一行代码,最小化性能损失(3%).

2.1、架构图

2.2、三个主要组件

  •   Collector, 收集应用中agent发送的数据并存储到Hbase中
  •   Agent,  是和应用一起启动的和应用共享JVM,定时发送数据给Collector
  •   Web UI, 从hbase中读取数据并展示给用户,之后会有demo展示其功能

2.3、依赖环境

  •   JDK:1.8
  •   Pinpoint:1.7.3
  •   Tomcat:7.0.59

三、Pinpoint Collector 收集端

部署在独立的Tomcat容器中,如 tomcat-pinpoint-collector

3.1、安装 pinpoint-collector

上传pinpoint-collector-1.7.3.war到 tomcat/webapps目录
解压:
unzip pinpoint-collector-1.7.3.war -d pinpoint-collector

3.2、配置 pinpoint-collector

Pinpoint Collector 有 2 个配置文件: pinpoint-collector.properties 和 hbase.properties
这些配置文件在war文件下的 WEB-INF/classes 目录
3.2.1、pinpoint-collector.properties: 包含colletor的配置,在配置pinpoint agent时需要与之对应:

  •     collector.receiver.base.port(agent中是 profiler.collector.tcp.port - 默认: 9994)
  •     collector.receiver.stat.udp.port(agent中是 profiler.collector.stat.port - 默认: 9995)
  •     collector.receiver.span.udp.port(agent中是 profiler.collector.span.port - 默认: 9996)
注意:pinpoint collector 1.5.x版本 和 较新的 1.7.x版本的 pinpoint-collector.properties配置文
件有差异
具体参考:
https://github.com/naver/pinpoint/blob/1.7.3/collector/src/main/resources/pinpoint-collecto
r.properties
https://github.com/naver/pinpoint/blob/1.5.2/collector/src/main/resources/pinpoint-collecto
r.properties

 

  • cluster.zookeeper.address(默认: localhost,修改为hbase相关的zookeeper的IP地址)

3.3.2、hbase.properties : 包含连接到HBase的配置

  • hbase.client.host (默认: localhost,修改为hbase相关的zookeeper的IP地址)
  • hbase.client.port (默认: 2181)

查看pinpoint-collector.properties的其它配置,请看https://github.com/naver/pinpoint/blob/1.7.3/web/src/main/resources/pinpoint-web.properties
查看hbase.properties的其它配置,请看https://github.com/naver/pinpoint/blob/1.7.3/web/src/main/resources/hbase.properties

四、Pinpoint Web

部署在独立的Tomcat容器中,如 tomcat-pinpoint-web
4.1、安装 pinpoint-web

上传pinpoint-web-1.7.3.war到 tomcat/webapps目录
pinpoint-web应用需要部署为tomcat的ROOT应用
cd tomcat/webapps
rm -fr ROOT
unzip pinpoint-web-1.7.3.war -d ROOT

4.2、配置 pinpoint-web

和collector类似,Pinpoint web有和安装相关的配置文件:pinpoint-web.properties 和 hbase.properties
这些文件在 WEB-INF/classes 目录下

  • pinpoint-web.properties

        cluster.zookeeper.address(默认: localhost,修改为hbase相关的zookeeper的IP地址)

  • hbase.properties : 包含连接到HBase的配置

       hbase.client.host (默认: localhost,修改为hbase相关的zookeeper的IP地址)
       hbase.client.port (默认: 2181)
查看pinpoint-web.properties的其它配置,请看https://github.com/naver/pinpoint/blob/1.7.3/web/src/main/resources/pinpoint-web.properties
查看hbase.properties的其它配置,请看https://github.com/naver/pinpoint/blob/1.7.3/web/src/main/resources/hbase.properties

五、Pinpoint Agent

5.1、安装 pinpoint-agent

上传pinpoint-agent-1.7.3.tar.gz到安装目录,如 /home/jyapp
解压:
mkdir pinpoint-agent
tar zxvf pinpoint-agent-1.7.3.tar.gz -C pinpoint-agent
pinpoint-agent 目录层次如下:
|-- boot
| |-- pinpoint-bootstrap-core-$VERSION.jar
|-- lib
| |-- pinpoint-profiler-$VERSION.jar
| |-- pinpoint-profiler-optional-$VERSION.jar
| |-- pinpoint-rpc-$VERSION.jar
| |-- pinpoint-thrift-$VERSION.jar
| |-- ...
|-- pinpoint-bootstrap-$VERSION.jar
|-- pinpoint.config(Agent配置文件)

Pinpoint Agent 作为一个java agent需要附加到采样的应用(如 Tomcat)

为了让agent生效,在运行应用时需要设置 -javaagent JVM 参数为 $AGENT_PATH/pinpointbootstrap-$
VERSION.jar

-javaagent:$AGENT_PATH/pinpoint-bootstrap-$1 VERSION.jar

另外,Pinpoint Agent 需要两个命令行参数来在分布式系统中标记自身:

  • -Dpinpoint.agentId - 唯一标记agent运行所在的应用(如,loan-33)
  • -Dpinpoint.applicationName - 将许多的同样的应用实例分组为单一服务(如,loan)

注意:pinpoint.agentId 必须全局唯一来标识应用实例, 而所有共用相同 pinpoint.applicationName 的应用被当
成单个服务的多个实例

5.2、配置 pinpoint-agent

在pinpoint.config 中有很多Pinpoint Agent的配置选项 ,而最重要的必须检查的配置选项是collector ip
address 和 TCP/UDP 端口,Agent需要这些值来创建到collector的连接并正确工作
在 pinpoint.config 中相应的设置这些值:

  • profiler.collector.ip (pinpoint collector ip,默认: 127.0.0.1)
  • profiler.collector.tcp.port (collector中是 collector.receiver.base.port - 默认: 9994)
  • profiler.collector.stat.port (collector中是 collector.receiver.stat.udp.port - 默认: 9995)
  • profiler.collector.span.port (collector中是 collector.receiver.span.udp.port - 默认: 9996)

查看pinponit.config的其它配置,请看https://github.com/naver/pinpoint/blob/1.7.3/agent/src/main/resources-release/pinpoint.config

5.3、Tomcat集成示例

在tomcat 启动脚本(catalina.sh)中添加 -javaagent, -Dpinpoint.agentId, -Dpinpoint.applicationName

JAVA_OPTS="$JAVA_OPTS -javaagent:/home/jyapp/pinpoint-agent/pinpoint-bootstrap-1.7.3.jar"
JAVA_OPTS="$JAVA_OPTS -Dpinpoint.agentId=$AGENT_ID"
JAVA_OPTS="$JAVA_OPTS -Dpinpoint.applicationName=$APPLICATION_NAME"
注意:
$AGENT_ID - 需改为应用的唯一标记,如 loan-33,代表loan 33服务器
$APPLICATION_NAME - 需改为应用名,如 loan,代表贷款应用

启动tomcat来开始web应用的采样
SpringBoot微服务同理,在启动命令上添加 -javaagent, -Dpinpoint.agentId, -Dpinpoint.applicationName 即可

六、监控效果图

七、其他

将web请求路由到agent

从 1.5.0 版本开始, Pinpoint 可以通过collector从web直接发送请求到agent(反之亦然)。 为此需要使用
Zookeeper 来协调agent和collector之间和collectors 和 web 之间的通讯通道.。在此之上,实时通讯(例如活动
线程数量监控)才变的可能
通常使用HBase后端提供的Zookeeper实例,这样就不需要额外的Zookeeper配置。相关的配置选项在这里:

7.1、pinpoint-web.properties

cluster.enable=true
cluster.web.tcp.port=9997
cluster.zookeeper.address=localhost
cluster.zookeeper.sessiontimeout=30000
cluster.zookeeper.retry.interval=60000
cluster.connect.address=

7.2、pinpoint-collector.properties

cluster.enable=true
cluster.zookeeper.address=localhost
cluster.zookeeper.sessiontimeout=30000
cluster.listen.ip=
cluster.listen.port=

 


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

相关文章

性能测试利器 — 全链路监控工具Pinpoint安装教程(非docker版本)

1、pinpoint介绍 1.1、相关简介 pinpoint是开源在github上的一款APM监控工具,它是由Java编写的,用于大规模分布式系统的监控;它对性能的影响最小(只增加约3%资源利用率),安装agent是无侵入式的,只需要在被测试的Tomc…

pinpoint监控学习笔记

pinpoint分以下主要模块: pinpoint-agent,这个工程引用了其它核心jar,整个pinpoint监控的配置文件在这个项目中: pinpoint.config。 pinpoint-bootstrap: 这个工程定义了当jvm启动时,利用java instrument,实现对于后续…

Pinpoint 快速开始

Pinpoint有三个主要组件(collector, web, agent),并使用HBase作为存储。Collector和Web被打包为单个war文件,而agent被打包以便可以作为java agent附加到应用。 Pinpoint quickstart 为agent提供一个示例TestApp, 并使用tomcat maven插件来启…

Pinpoint 一款强大的APM工具

背景 程序的监控一直是程序员最头痛的事情之一,现网程序有问题怎么办?看进程看端口 top/free/df 三件套?网络抓包?看日志?所以为了满足这些初级需求很多公司都做了主机监控,进程端口监听等功能&#xff0c…

pinpoint新增自定义插件监控

pinpoint:源码地址:https://github.com/pinpoint-apm/pinpoint.git 定义:基于Google的Dapper理论,通过在程序内部的class的方法,构造方法等地方埋点,通过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 过长问题(最大长度不能超过24个字符&a…

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

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

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

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

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

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

【Pinpoint】安装

文章目录 一. 下载1. 版本(2.3.3)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依赖了很多的基础镜像,所以推荐不要在已经部署了程序的机器上部署,以免造成端口号冲突,推荐使…

pinpoint 介绍

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

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

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

PinPoint(二)技术详解

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

pinpoint搭建及springboot接入使用

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

APM链路监控:PinPoint使用手册

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

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安装) 在做性能压测的时候,你是不是有只能看到测试报告? 在做性能压测的时候,你是不是想知道每一个方法执行了多长时间? Pinpoint几乎可以帮助你查看你想看到的每一个细节。 Pinpoint是什么&…

PinPoint使用教程

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

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

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