Java Pinpoint案例怎么对接

wen java案例 31

本文目录导读:

Java Pinpoint案例怎么对接

  1. 环境准备
  2. 下载并配置Agent
  3. Java应用启动参数接入
  4. 验证接入是否成功
  5. 进阶配置(可选)
  6. 常见问题排查
  7. 完整项目示例(Spring Boot + Maven)

针对Java应用对接Pinpoint(一款APM监控工具,主要用于分布式系统追踪),核心流程包括环境准备Agent部署配置修改验证,以下是标准对接案例:

环境准备

  1. Pinpoint Collector & Web 已部署

    • 确保Pinpoint服务端(Collector、Web、HBase)已运行
    • 获取Collector地址(如:168.1.100:9994
  2. 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.shsetenv.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

验证接入是否成功

检查步骤:

  1. Agent日志:查看Agent目录下 logs/pinpoint.log

    • 成功标志:Pinpoint agent connected to collector 无报错
  2. Pinpoint Web界面

    • 访问 http://pinpoint-web:8080
    • 左侧应出现应用名 my-java-service
    • 点击后能看到实时/历史调用链
  3. HBase数据

    • 通过HBase Shell检查表:
      list 'AgentInfo'
      scan 'AgentInfo', {LIMIT=>5}

进阶配置(可选)

采样率优化(生产推荐)

# 每分钟采样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)

  1. pom.xml(无需额外依赖,Agent运行时注入)
  2. 应用启动脚本
    #!/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 指定)

抱歉,评论功能暂时关闭!