侧边栏壁纸
  • 累计撰写 36 篇文章
  • 累计创建 9 个标签
  • 累计收到 3 条评论

目 录CONTENT

文章目录

Pinpoint 链路追踪安装部署指南

仓鼠
2025-10-29 / 0 评论 / 0 点赞 / 17 阅读 / 9290 字 / 正在检测是否收录...

Pinpoint 链路追踪安装部署指南

一、Pinpoint 简介

Pinpoint 是一个开源的 APM(Application Performance Management,应用性能管理)工具。

它主要用于大型分布式系统中的链路追踪和性能分析,通过采集应用运行过程中的调用信息,帮助开发人员快速定位:

  • 服务调用链路
  • 请求响应耗时
  • 服务依赖关系
  • 慢接口问题
  • 系统性能瓶颈
  • 异常调用

Pinpoint 使用 Java 编写,设计思想来源于 Google Dapper 分布式追踪系统。

Pinpoint 最大特点:

无侵入式 Agent,不需要修改业务代码即可完成应用监控。


二、Pinpoint 特点

1. 无侵入式 Agent

Pinpoint 通过 Java Agent 技术实现应用监控。

只需要在 JVM 启动参数中增加:

-javaagent:/opt/pinpoint-agent/pinpoint-agent.jar

即可自动采集应用信息。

支持采集:

  • HTTP 请求
  • Controller 调用
  • Service 方法调用
  • SQL 执行
  • Redis 操作
  • MQ 消息
  • RPC 调用
  • 异常信息

2. 性能影响较低

Pinpoint 通过字节码增强技术实现链路采集。

官方设计目标:

  • 对业务代码无侵入
  • 额外资源消耗较低
  • 性能影响约 3% 左右

实际生产环境可以通过:

  • 调整采样比例
  • 限制监控范围
  • 增加 Collector 节点

降低资源消耗。


三、Pinpoint 架构组成

Pinpoint 主要由三个核心组件组成:

                  +----------------+
                  |   Pinpoint Web |
                  |       UI       |
                  +-------+--------+
                          |
                          |
                  +-------+--------+
                  |   Collector    |
                  +-------+--------+
                          |
              +-----------+-----------+
              |                       |
              |                       |
       +-------------+         +-------------+
       | Agent       |         | Agent       |
       | 服务A       |         | 服务B       |
       +-------------+         +-------------+

核心组件:

  • Pinpoint Agent
  • Pinpoint Collector
  • Pinpoint Web UI

四、核心组件介绍

1. Pinpoint Agent

Agent 部署在业务应用服务器中。

主要负责:

  • 采集应用调用信息
  • 生成 Trace 数据
  • 记录方法耗时
  • 收集异常
  • 上报 Collector

例如:

用户请求

    |
    v

订单服务

    |
    v

库存服务

    |
    v

数据库

Agent 会记录完整调用链。


2. Pinpoint Collector

Collector 是链路数据收集服务。

主要功能:

  • 接收 Agent 上报数据
  • 数据解析
  • 数据处理
  • 数据存储

所有应用节点的数据都会发送到 Collector。

生产环境通常部署:

  • 多 Collector 节点
  • 负载均衡
  • 独立存储

3. Pinpoint Web UI

Web UI 是可视化管理平台。

可以查看:

服务拓扑

展示服务调用关系:

用户请求

    |
    v

Gateway

    |
    v

订单服务

    |
    v

MySQL

调用链分析

例如:

HTTP Request

订单服务      50ms

用户服务      30ms

MySQL       120ms


总耗时:200ms

可以快速定位:

  • 哪个服务慢
  • 哪个接口慢
  • 哪个 SQL 慢

五、官方地址

Pinpoint Github:

https://github.com/pinpoint-apm/pinpoint

Pinpoint Docker:

https://github.com/pinpoint-apm/pinpoint-docker


六、Docker 安装部署

1. 环境准备

安装:

  • Linux
  • Docker
  • Docker Compose

查看 Docker:

docker -v

查看 Docker Compose:

docker-compose -v

2. 下载源码

git clone https://github.com/pinpoint-apm/pinpoint-docker.git

进入目录:

cd pinpoint-docker

3. 启动 Pinpoint

拉取镜像:

docker-compose pull

启动:

docker-compose up -d

查看状态:

docker ps

正常情况下:

pinpoint-web

pinpoint-collector

pinpoint-hbase

pinpoint-flink


七、访问 Pinpoint Web

默认地址:

http://服务器IP:8080

进入页面后可以查看:

  • 应用列表
  • 服务拓扑
  • 调用链
  • 请求耗时
  • JVM 状态

八、Java 应用接入 Agent

1. 准备 Agent

目录:

/opt/pinpoint-agent/

├── pinpoint-agent.jar

├── pinpoint-root.config

└── pinpoint.config


2. 修改配置

编辑:

pinpoint-root.config

配置 Collector:

profiler.collector.ip=192.168.1.100

配置应用名称:

profiler.application.name=order-service

注意:

不同服务必须使用不同名称。

例如:

user-service

order-service

payment-service


3. 启动 Java 服务

普通启动:

java -jar order-service.jar

增加 Agent:

java \
-javaagent:/opt/pinpoint-agent/pinpoint-agent.jar \
-jar order-service.jar

启动后:

应用服务

    |

Pinpoint Agent

    |

Collector

    |

Web UI

即可看到链路数据。


九、Spring Boot 项目接入示例

例如:

服务名称:

order-service

启动:

java \
-javaagent:/opt/pinpoint-agent/pinpoint-agent.jar \
-Dpinpoint.applicationName=order-service \
-Dpinpoint.agentId=order-service-01 \
-jar order-service.jar

多个实例:

order-service-01

order-service-02

order-service-03

agentId 必须保证唯一。


十、微服务链路效果

例如订单请求:

              用户请求

                  |

              Gateway

                  |

          +-------+-------+

          |               |

      用户服务        订单服务

                          |

                          |

                      库存服务

                          |

                          |

                       MySQL

Pinpoint 可以查看:

  • 请求经过哪些服务
  • 服务耗时
  • SQL 执行时间
  • Redis 调用
  • 异常位置

十一、常见问题

1. Agent 没有数据

检查 Collector 地址:

profiler.collector.ip=

确认地址正确。

检查 JVM 参数:

jps -lvm

确认存在:

-javaagent

2. 服务名称重复

错误:

profiler.application.name=test

多个服务使用相同名称会导致数据合并。

建议:

user-service

order-service

payment-service


3. Collector 连接失败

检查网络:

ping collector-ip

检查端口:

telnet collector-ip port

检查 Docker:

docker ps

十二、生产环境部署建议

Agent 管理

统一目录:

/opt/pinpoint-agent

所有 Java 服务加载同一套 Agent。


Collector 部署

生产环境建议:

多个 Collector

        |

    负载均衡

        |

       Agent

避免单点问题。


数据存储

Pinpoint 默认依赖:

  • HBase
  • Flink

需要根据业务量规划:

  • 存储容量
  • 数据保留周期
  • 清理策略

十三、总结

Pinpoint 是一款非常适合 Java 分布式系统的链路追踪工具。

整体流程:

业务服务

    |

Pinpoint Agent

    |

Collector

    |

存储

    |

Web UI

优势:

  • 无需修改业务代码
  • 支持分布式链路追踪
  • 可视化调用关系
  • 快速定位性能问题

适用场景:

  • Spring Boot
  • Spring Cloud
  • 微服务架构
  • 大型 Java 分布式系统

通过 Docker 可以快速部署 Pinpoint,通过 Java Agent 即可完成业务系统接入。

0

评论区