本文目录导读:

针对Java应用对接Pinpoint(一款APM监控工具,主要用于分布式系统追踪),核心流程包括环境准备、Agent部署、配置修改和验证,以下是标准对接案例:
环境准备
-
Pinpoint Collector & Web 已部署
- 确保Pinpoint服务端(Collector、Web、HBase)已运行
- 获取Collector地址(如:
168.1.100:9994)
-
Java应用环境
- JDK 1.8+(推荐JDK 11/17)
- 应用可正常启动(Spring Boot、Tomcat、Dubbo等)
下载并配置Agent
下载Pinpoint Agent
# 从Pinpoint官网或GitHub Release下载 wget https://github.com/pinpoint-apm/pinpoint-agent/releases/download/v2.5.2/pinpoint-agent-2.5.2.tar.gz tar -xzvf pinpoint-agent-2.5.2.tar.gz -C /opt/
配置Agent核心文件
编辑 pinpoint-agent-2.5.2/pinpoint.config:
# 必填:Collector地址(支持多地址) profiler.collector.ip=192.168.1.100 profiler.collector.tcp.port=9994 profiler.collector.stat.port=9995 profiler.collector.span.port=9996 # 推荐:应用名称(在Web端显示) profiler.application.name=my-java-service # 增强采样率(生产环境建议0.1~0.5) profiler.sampling.rate=1 # 开启异步追踪(如MQ、线程池) profiler.trace.thread.enable=true
Java应用启动参数接入
关键参数(JVM启动时添加):
-javaagent:/opt/pinpoint-agent-2.5.2/pinpoint-bootstrap.jar \ -Dpinpoint.agentId=my-service-01 \ # 唯一标识(推荐使用主机名+端口) -Dpinpoint.applicationName=my-java-service # 应用名(与config一致)
具体案例(不同部署方式):
Spring Boot JAR包启动
java -javaagent:/opt/pinpoint-agent/pinpoint-bootstrap.jar \
-Dpinpoint.agentId=user-service-01 \
-Dpinpoint.applicationName=user-service \
-jar user-service-1.0.0.jar
Tomcat 容器
修改 bin/catalina.sh 或 setenv.sh:
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/opt/pinpoint-agent/pinpoint-bootstrap.jar" CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=tomcat-01" CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=tomcat-webapp"
Docker 容器
# Dockerfile
FROM openjdk:11-jre
COPY pinpoint-agent-2.5.2/ /opt/pinpoint/
ENV JAVA_TOOL_OPTIONS="-javaagent:/opt/pinpoint/pinpoint-bootstrap.jar \
-Dpinpoint.agentId=${HOSTNAME} \
-Dpinpoint.applicationName=my-docker-app"
运行容器时:
docker run -e PINPOINT_AGENT_ID="my-app-$(hostname)" my-image
验证接入是否成功
检查步骤:
-
Agent日志:查看Agent目录下
logs/pinpoint.log- 成功标志:
Pinpoint agent connected to collector无报错
- 成功标志:
-
Pinpoint Web界面
- 访问
http://pinpoint-web:8080 - 左侧应出现应用名
my-java-service - 点击后能看到实时/历史调用链
- 访问
-
HBase数据
- 通过HBase Shell检查表:
list 'AgentInfo' scan 'AgentInfo', {LIMIT=>5}
- 通过HBase Shell检查表:
进阶配置(可选)
采样率优化(生产推荐)
# 每分钟采样10个事务 profiler.sampling.type=PER_MINUTE_BASED profiler.sampling.counting.per.minute=10
排除不需要追踪的请求
# 跳过健康检查、静态资源等 profiler.ignore.pattern=/actuator/health|/favicon.ico|/*.js|/*.css
自定义应用类型
# 如标记为Dubbo、Tomcat、Spring Boot profiler.application.server.type=1000 # 1000=Spring Boot
多Collector负载均衡
# 逗号分隔多Collector地址 profiler.collector.ip=192.168.1.100,192.168.1.101
常见问题排查
| 问题现象 | 解决方案 |
|---|---|
| Web看不到应用 | 检查Agent日志是否连接到Collector;检查网络防火墙(9994-9996端口) |
| 调用链缺失 | 确认所有微服务都接入相同的Pinpoint;检查HBase是否正常 |
| 性能下降5-10% | 降低采样率(sampling.rate=0.1);关闭不必须的插件 |
| Agent启动报ClassNotFound | 检查JDK版本;确保pinpoint-bootstrap.jar路径绝对正确 |
完整项目示例(Spring Boot + Maven)
- pom.xml(无需额外依赖,Agent运行时注入)
- 应用启动脚本:
#!/bin/bash APP_NAME=order-service JAVA_OPTS="-Xms1g -Xmx1g -javaagent:/opt/pinpoint/pinpoint-bootstrap.jar \ -Dpinpoint.agentId=${APP_NAME}-$(hostname) \ -Dpinpoint.applicationName=${APP_NAME}" java $JAVA_OPTS -jar ${APP_NAME}.jar
最佳实践:
- 统一管理Agent版本(建议所有微服务使用同一版本)
- Agent目录放在独立路径(如
/opt/pinpoint/) - 生产环境启用采样率控制,避免存储爆炸
- 使用
pinpoint-agent.conf外置配置(通过-Dpinpoint.config指定)
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播