首页
/ Pinpoint安装部署指南:从零开始搭建监控系统

Pinpoint安装部署指南:从零开始搭建监控系统

2026-02-04 04:51:30作者:范垣楠Rhoda

本文详细介绍了Pinpoint分布式应用性能监控系统的完整安装部署流程,从环境要求与依赖组件准备开始,包括Java版本要求、存储系统配置(HBase/Pinot)、硬件资源规划、网络与安全设置等基础环境搭建。接着深入讲解了HBase数据库的详细配置与表结构创建,包括核心监控数据表、元数据存储表、调用链追踪表和统计信息表的设计与优化策略。然后逐步指导Collector和Web模块的部署步骤,涵盖项目编译、配置文件准备、服务启动和验证方法。最后详细说明了Agent集成与应用程序监控配置的各种方式、核心参数配置以及高级监控功能设置,为构建完整的APM监控系统提供全面指导。

环境要求与依赖组件准备

在开始部署Pinpoint分布式应用性能监控系统之前,必须确保您的环境满足所有必要的技术要求。Pinpoint作为一个企业级的APM解决方案,其部署环境需要精心规划和准备。本节将详细说明Pinpoint 3.x版本的系统要求、依赖组件以及环境配置指南。

系统架构概览

Pinpoint采用分布式架构设计,主要由四个核心组件构成:

flowchart TD
    A[被监控应用] -->|Java Agent| B[Pinpoint Collector<br/>数据收集器]
    B -->|存储数据| C[HBase/Pinot<br/>数据存储层]
    C -->|提供数据| D[Pinpoint Web<br/>Web界面]
    D -->|展示监控| E[用户界面]
    
    F[ZooKeeper] --> B
    F --> D

Java版本要求

Pinpoint 3.x对Java版本有严格的要求,不同组件需要不同的JDK版本:

组件类型 最低JDK版本 推荐JDK版本 备注
Agent JDK 8 JDK 11+ 支持JDK 8-24
Collector JDK 17 JDK 21 必须JDK 17+
Web JDK 17 JDK 21 必须JDK 17+
Batch JDK 17 JDK 21 必须JDK 17+

版本兼容性矩阵

Pinpoint版本 Agent支持JDK Collector JDK Web JDK Batch JDK
3.0.x 8-21 17 17 17
3.1.x 8-24 17 17 17

存储系统要求

HBase存储配置

Pinpoint 3.x版本强制要求使用HBase 2.x,不再支持HBase 1.x:

组件 版本要求 推荐配置
HBase 2.5.x HBase 2.5.10-hadoop3
ZooKeeper 3.8.4+ 集群模式3节点

HBase配置示例:

<!-- HBase客户端配置 -->
<hbase.shaded.client.version>2.5.12-hadoop3</hbase.shaded.client.version>
<hbase2.client.version>2.5.10-hadoop3</hbase2.client.version>

Pinot可选存储

对于需要实时分析和大数据处理的场景,Pinpoint支持Apache Pinot作为可选存储:

Pinpoint版本 Pinot 1.2.0 Pinot 1.3.0 备注
3.0.x 支持 支持 推荐Pinot 1.3.0
3.1.x 支持 支持 必须Pinot 1.2.0+

硬件资源要求

根据监控规模的不同,硬件需求有所差异:

小型部署(<50个应用节点)

pie title 小型部署资源分配
    "Collector" : 4
    "HBase" : 8
    "Web" : 2
    "ZooKeeper" : 1

中型部署(50-200个应用节点)

  • Collector: 8核CPU, 16GB内存, 100GB存储
  • HBase RegionServer: 16核CPU, 32GB内存, 500GB SSD
  • Web服务器: 4核CPU, 8GB内存, 50GB存储
  • ZooKeeper: 3节点集群, 各2核CPU, 4GB内存

大型部署(>200个应用节点)

需要水平扩展Collector和HBase集群,建议采用容器化部署。

网络与安全要求

端口配置

Pinpoint系统需要开放以下网络端口:

组件 端口 协议 用途
Collector 9991-9993 TCP Agent数据接收
Collector 9994 TCP Span数据接收
Collector 9995 TCP Stat数据接收
Web 8080 HTTP Web管理界面
HBase 2181 TCP ZooKeeper连接
HBase 16000 TCP HBase Master
HBase 16020 TCP RegionServer

安全配置

  • TLS/SSL: 支持HTTPS加密通信
  • 认证授权: 支持Basic认证和OAuth2
  • 网络隔离: 建议在生产环境部署网络隔离

依赖软件版本

Pinpoint依赖于多个第三方库,主要版本信息如下:

依赖类别 组件 版本 备注
框架 Spring Boot 3.3.11 Web和Collector使用
框架 Spring Framework 6.1.20 核心框架
数据库 MySQL Connector 8.4.0 可选配置存储
序列化 Jackson 2.19.2 JSON处理
日志 SLF4J 2.0.16 日志门面
日志 Log4j2 2.25.1 日志实现
RPC gRPC 1.74.0 内部通信
缓存 Caffeine 2.9.2 本地缓存

环境验证清单

在部署前,请使用以下清单验证环境准备情况:

# 1. 验证Java版本
java -version
# 应该显示JDK 17或更高版本

# 2. 验证HBase状态
hbase version
# 应该显示HBase 2.5.x

# 3. 验证网络连通性
telnet <hbase-host> 2181
telnet <zookeeper-host> 2181

# 4. 验证防火墙设置
sudo firewall-cmd --list-ports
# 确保所需端口已开放

# 5. 验证系统资源
free -h
df -h
# 确保有足够的内存和磁盘空间

配置示例文件

创建基础配置文件 pinpoint-env.sh

#!/bin/bash
# Pinpoint环境变量配置
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export HBASE_HOME=/opt/hbase-2.5.10
export ZOOKEEPER_HOME=/opt/zookeeper-3.8.4

# Collector配置
export COLLECTOR_OPTS="-Xms4g -Xmx8g -Dpinpoint.zookeeper.address=zk1:2181,zk2:2181,zk3:2181"

# Web配置  
export WEB_OPTS="-Xms2g -Xmx4g -Dpinpoint.zookeeper.address=zk1:2181,zk2:2181,zk3:2181"

# HBase配置
export HBASE_OPTS="-Xms8g -Xmx16g"

通过以上详细的环境要求和依赖组件准备,您已经为Pinpoint监控系统的顺利部署奠定了坚实的基础。确保所有组件版本兼容、网络连通性正常、资源分配充足,是成功部署的关键前提。

HBase数据库配置与表结构创建

在Pinpoint分布式监控系统中,HBase作为核心数据存储组件,承担着所有监控数据的持久化存储任务。HBase的高性能、高可扩展性以及强大的数据存储能力,使其成为处理海量监控数据的理想选择。本节将详细介绍HBase数据库的配置方法和表结构创建过程。

HBase配置详解

Pinpoint对HBase的配置主要通过hbase-site.xml文件进行管理,该文件包含了HBase集群运行所需的关键参数配置。以下是核心配置项的详细说明:

<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>file:///home/pinpoint/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>zookeeper.znode.parent</name>
        <value>/hbase</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>zoo1,zoo2,zoo3</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>
    <property>
        <name>hbase.master.port</name>
        <value>60000</value>
    </property>
    <property>
        <name>hbase.regionserver.port</name>
        <value>60020</value>
    </property>
</configuration>

关键配置参数说明:

配置项 默认值 说明
hbase.rootdir file:///home/pinpoint/hbase HBase数据存储目录
hbase.cluster.distributed true 是否启用分布式模式
hbase.zookeeper.quorum zoo1,zoo2,zoo3 ZooKeeper集群节点列表
hbase.zookeeper.property.clientPort 2181 ZooKeeper客户端端口
zookeeper.znode.parent /hbase ZooKeeper中HBase的根节点
hbase.master.port 60000 HBase Master服务端口
hbase.regionserver.port 60020 RegionServer服务端口

表结构设计与创建

Pinpoint在HBase中创建了多个表来存储不同类型的监控数据,每个表都有特定的列族和数据存储策略。以下是主要表的详细说明:

核心监控数据表

-- 代理信息表
create 'AgentInfo', { 
    NAME => 'Info', 
    TTL => 31536000, 
    DATA_BLOCK_ENCODING => 'PREFIX' 
}

-- 应用索引表
create 'ApplicationIndex', { 
    NAME => 'Agents', 
    TTL => 31536000 
}

-- 代理生命周期表
create 'AgentLifeCycle', { 
    NAME => 'S', 
    TTL => 5184000, 
    DATA_BLOCK_ENCODING => 'PREFIX' 
}

-- 代理事件表
create 'AgentEvent', { 
    NAME => 'E', 
    TTL => 5184000, 
    DATA_BLOCK_ENCODING => 'PREFIX' 
}

元数据存储表

-- 字符串元数据表
create 'StringMetaData', { 
    NAME => 'Str', 
    TTL => 15552000, 
    DATA_BLOCK_ENCODING => 'PREFIX' 
}, {SPLITS=>["\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]}

-- API元数据表
create 'ApiMetaData', { 
    NAME => 'Api', 
    TTL => 31536000, 
    DATA_BLOCK_ENCODING => 'PREFIX' 
}, {SPLITS=>["\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]}

-- SQL元数据表
create 'SqlMetaData_Ver2', { 
    NAME => 'Sql', 
    TTL => 15552000, 
    DATA_BLOCK_ENCODING => 'PREFIX' 
}, {SPLITS=>["\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]}

调用链追踪表

-- 追踪数据表(版本2)
create 'TraceV2', { 
    NAME => 'S', 
    TTL => 5184000, 
    DATA_BLOCK_ENCODING => 'PREFIX' 
}, {NUMREGIONS => 256, SPLITALGO => 'UniformSplit'}

-- 应用追踪索引表
create 'ApplicationTraceIndex', { 
    NAME => 'I', 
    TTL => 5184000, 
    DATA_BLOCK_ENCODING => 'PREFIX' 
}, { 
    NAME => 'M', 
    TTL => 5184000, 
    DATA_BLOCK_ENCODING => 'PREFIX' 
}, {SPLITS=>["\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]}

统计信息表

-- 调用方统计表
create 'ApplicationMapStatisticsCaller_Ver2', { 
    NAME => 'C', 
    TTL => 5184000, 
    VERSIONS => 1, 
    DATA_BLOCK_ENCODING => 'PREFIX' 
}, {SPLITS=>["\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]}

-- 被调用方统计表
create 'ApplicationMapStatisticsCallee_Ver2', { 
    NAME => 'C', 
    TTL => 5184000, 
    VERSIONS => 1, 
    DATA_BLOCK_ENCODING => 'PREFIX' 
}, {SPLITS=>["\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]}

-- 自身调用统计表
create 'ApplicationMapStatisticsSelf_Ver2', { 
    NAME => 'C', 
    TTL => 5184000, 
    VERSIONS => 1, 
    DATA_BLOCK_ENCODING => 'PREFIX' 
}, {SPLITS=>["\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]}

-- 主机应用映射表
create 'HostApplicationMap_Ver2', { 
    NAME => 'M', 
    TTL => 5184000, 
    VERSIONS => 1, 
    DATA_BLOCK_ENCODING => 'PREFIX' 
}, {SPLITS=>["\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"]}

表结构特性分析

Pinpoint的HBase表设计具有以下显著特点:

数据生命周期管理

pie title 数据TTL分布(秒)
    "AgentInfo" : 31536000
    "ApplicationIndex" : 31536000
    "AgentLifeCycle" : 5184000
    "AgentEvent" : 5184000
    "StringMetaData" : 15552000
    "ApiMetaData" : 31536000
    "TraceV2" : 5184000

性能优化策略

Pinpoint通过多种优化手段确保HBase的高性能:

  1. 数据块编码:所有表都使用DATA_BLOCK_ENCODING => 'PREFIX',减少存储空间占用
  2. 预分区策略:通过SPLITS参数进行预分区,避免热点问题
  3. 版本控制:统计表设置VERSIONS => 1,避免存储冗余数据
  4. 区域数量控制:TraceV2表设置NUMREGIONS => 256,确保数据分布均匀

表功能分类

表类别 主要表名 存储数据类型 TTL策略
代理管理 AgentInfo, AgentLifeCycle 代理状态信息 长期保留
元数据 StringMetaData, ApiMetaData 方法签名等元数据 中期保留
追踪数据 TraceV2, ApplicationTraceIndex 调用链数据 短期保留
统计信息 ApplicationMapStatistics* 调用统计信息 短期保留

自动化部署脚本

Pinpoint提供了完整的HBase表创建脚本,支持环境变量配置:

#!/bin/bash
# 自动配置HBase表TTL参数
sed -i "/AgentInfo/s/TTL => .[[:digit:]]*/TTL => ${AGENTINFO_TTL:-31536000}/g" hbase-create.hbase
sed -i "/ApplicationIndex/s/TTL => .[[:digit:]]*/TTL => ${APPINDEX_TTL:-31536000}/g" hbase-create.hbase
sed -i "/AgentLifeCycle/s/TTL => .[[:digit:]]*/TTL => ${AGENTLIFECYCLE_TTL:-5184000}/g" hbase-create.hbase

通过环境变量可以灵活调整各表的TTL设置,适应不同的监控数据保留需求。

数据存储架构

flowchart TD
    A[Pinpoint Collector] --> B[HBase Client]
    B --> C[RegionServer]
    C --> D[AgentInfo表]
    C --> E[TraceV2表]
    C --> F[统计信息表]
    C --> G[元数据表]
    
    D --> H[代理状态数据]
    E --> I[调用链数据]
    F --> J[性能统计数据]
    G --> K[方法签名数据]

这种表结构设计确保了Pinpoint能够高效地存储和查询海量监控数据,同时提供了良好的可扩展性和性能表现。每个表都针对特定的数据类型和使用场景进行了优化,为整个监控系统提供了可靠的数据存储基础。

Collector和Web模块部署步骤

Pinpoint的Collector和Web模块是整个APM系统的核心组件,负责接收、处理和展示应用程序的性能数据。Collector模块作为数据收集器,接收来自各个Agent的性能数据并进行存储;Web模块则提供用户界面,用于可视化展示监控数据。

环境准备与依赖检查

在部署Collector和Web模块之前,需要确保系统满足以下要求:

系统要求:

  • Java 17或更高版本(Pinpoint 3.x要求)
  • Maven 3.6+ 用于构建项目
  • 至少4GB内存
  • 已部署并运行的HBase集群
  • 已部署并运行的ZooKeeper集群

端口配置表:

模块 端口 协议 用途
Collector 9991 TCP Agent数据接收
Collector 9992 TCP Span数据接收
Collector 9993 TCP 统计数据接收
Web 8080 HTTP Web管理界面

Collector模块部署步骤

1. 项目编译与打包

首先需要编译Collector模块,使用Maven进行构建:

# 从项目根目录构建
mvnw install -pl collector -am -Dmaven.test.skip=true

# 或者进入collector目录构建
cd collector
../mvnw install -pl collector -am -Dmaven.test.skip=true -f ../pom.xml

构建完成后,会在collector/target/deploy/目录下生成可执行的JAR文件,命名格式为pinpoint-collector-boot-$VERSION.jar

2. 配置文件准备

Collector模块支持多种配置文件,主要配置文件位于:

graph TD
    A[Collector配置] --> B[application.yml]
    A --> C[pinpoint-collector.properties]
    A --> D[pinpoint-collector-grpc.properties]
    B --> E[基础Spring Boot配置]
    C --> F[核心收集器配置]
    D --> G[gRPC端口和网络配置]

关键的配置文件说明:

  • src/main/resources/application.yml: Spring Boot基础配置
  • src/main/resources/pinpoint-collector.properties: 收集器核心配置
  • src/main/resources/profiles/release/pinpoint-collector-grpc.properties: 生产环境gRPC配置

3. 启动Collector服务

使用以下命令启动Collector服务:

# 基础启动命令
java -jar -Dpinpoint.zookeeper.address=$ZOOKEEPER_ADDRESS \
collector/target/deploy/pinpoint-collector-boot-$VERSION.jar

# 生产环境启动(使用release profile)
java -jar -Dpinpoint.zookeeper.address=$ZOOKEEPER_ADDRESS \
-Dspring.profiles.active=release \
collector/target/deploy/pinpoint-collector-boot-$VERSION.jar

环境变量说明:

环境变量 说明 示例值
ZOOKEEPER_ADDRESS ZooKeeper集群地址 zk1:2181,zk2:2181,zk3:2181
HBASE_CLIENT_HOST HBase客户端主机 hbase-master
HBASE_CLIENT_PORT HBase客户端端口 2181

4. 验证Collector运行状态

Collector启动后,可以通过以下方式验证服务状态:

# 检查端口监听情况
netstat -tlnp | grep 9991
netstat -tlnp | grep 9992  
netstat -tlnp | grep 9993

# 查看日志输出
tail -f logs/pinpoint-collector.log

Web模块部署步骤

1. 项目编译与打包

Web模块的构建方式与Collector类似:

# 完整构建(包含前端资源)
mvnw install -pl web -am -Dmaven.test.skip=true

# 跳过前端构建(如果前端已构建)
mvnw install -pl web -am -Dbuild.frontend.skip=true -Dmaven.test.skip=true

# 进入web目录构建
cd web
../mvnw install -pl web -am -Dbuild.frontend.skip=true -Dmaven.test.skip=true -f ../pom.xml

构建完成后,在web/target/deploy/目录生成pinpoint-web-boot-$VERSION.jar文件。

2. 配置文件说明

Web模块的主要配置文件:

graph LR
    W[Web配置] --> W1[application.yml]
    W --> W2[pinpoint-web.properties]
    W --> W3[前端静态资源]
    W1 --> W4[服务器端口:8080]
    W2 --> W5[数据源和连接池配置]
    W3 --> W6[HTML/CSS/JS资源]

关键配置项示例:

# application.yml
server:
  port: 8080
  servlet:
    context-path: /

spring:
  datasource:
    url: jdbc:h2:mem:testdb
    driver-class-name: org.h2.Driver
    username: sa
    password: 

3. 启动Web服务

启动Web服务的命令格式:

# 基础启动
java -jar -Dpinpoint.zookeeper.address=$ZOOKEEPER_ADDRESS \
web/target/deploy/pinpoint-web-boot-$VERSION.jar

# 生产环境启动
java -jar -Dpinpoint.zookeeper.address=$ZOOKEEPER_ADDRESS \
-Dspring.profiles.active=release \
web/target/deploy/pinpoint-web-boot-$VERSION.jar

4. 访问Web界面

服务启动后,通过浏览器访问Web管理界面:

http://服务器IP:8080

正常启动后应该能看到Pinpoint的登录页面和监控仪表板。

部署配置最佳实践

1. JVM参数优化

对于生产环境,建议配置合适的JVM参数:

# Collector JVM参数示例
java -Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 \
-XX:ParallelGCThreads=4 -XX:ConcGCThreads=2 \
-jar pinpoint-collector-boot-$VERSION.jar

# Web JVM参数示例  
java -Xms2g -Xmx2g -XX:+UseG1GC -XX:MaxGCPauseMillis=150 \
-jar pinpoint-web-boot-$VERSION.jar

2. 系统服务配置

建议将服务配置为系统服务以便管理:

# /etc/systemd/system/pinpoint-collector.service
[Unit]
Description=Pinpoint Collector Service
After=network.target

[Service]
Type=simple
User=pinpoint
ExecStart=/usr/bin/java -jar /opt/pinpoint/collector/pinpoint-collector-boot.jar
Restart=always

[Install]
WantedBy=multi-user.target

3. 监控与日志配置

配置日志轮转和监控:

# 日志目录结构
/var/log/pinpoint/
├── collector.log
├── web.log
├── collector-gc.log
└── web-gc.log

常见问题排查

端口冲突处理

如果出现端口冲突,可以通过修改配置文件调整端口:

# 修改Collector端口
collector.receiver.grpc.agent.bindaddress.port=19991
collector.receiver.grpc.stat.bindaddress.port=19992
collector.receiver.grpc.span.bindaddress.port=19993

# 修改Web端口
server.port=18080

连接问题排查

检查网络连接和依赖服务状态:

# 检查ZooKeeper连接
telnet $ZOOKEEPER_ADDRESS 2181

# 检查HBase连接
hbase shell

# 查看服务日志
tail -f /var/log/pinpoint/collector.log

通过以上步骤,可以顺利完成Pinpoint Collector和Web模块的部署,建立起完整的APM监控系统基础架构。

Agent集成与应用程序监控配置

Pinpoint Agent是应用程序性能监控的核心组件,它通过Java Agent技术实现无侵入式的应用监控。Agent负责收集应用程序的运行数据,包括方法调用链、SQL执行、HTTP请求等信息,并将这些数据发送到Collector进行存储和分析。

Agent集成方式

Pinpoint Agent支持多种集成方式,主要包括:

1. 命令行启动集成

对于独立Java应用程序,可以通过-javaagent参数集成Agent:

java -javaagent:/path/to/pinpoint-agent/pinpoint-bootstrap.jar \
     -Dpinpoint.agentId=your_agent_id \
     -Dpinpoint.applicationName=your_application_name \
     -jar your_application.jar

2. 应用服务器集成

对于Tomcat、Jetty等应用服务器,可以在启动脚本中添加JVM参数:

# Tomcat示例
export CATALINA_OPTS="$CATALINA_OPTS -javaagent:/opt/pinpoint-agent/pinpoint-bootstrap.jar"
export CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=tomcat-server-01"
export CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=TOMCAT_WEB_APP"

3. Docker容器集成

在Docker环境中,可以通过环境变量或启动参数集成:

FROM openjdk:11-jre
COPY pinpoint-agent /opt/pinpoint-agent
COPY app.jar /app.jar
ENTRYPOINT java -javaagent:/opt/pinpoint-agent/pinpoint-bootstrap.jar \
                -Dpinpoint.agentId=${AGENT_ID} \
                -Dpinpoint.applicationName=${APP_NAME} \
                -jar /app.jar

核心配置参数

Pinpoint Agent提供了丰富的配置选项,主要配置文件位于pinpoint-root.config和profile特定的pinpoint.config中。

必需配置参数

参数 描述 示例值
pinpoint.agentId Agent唯一标识符 web-app-01
pinpoint.applicationName 应用名称 USER_SERVICE
profiler.transport.grpc.collector.ip Collector服务器IP 192.168.1.100

网络传输配置

# 传输协议配置
profiler.transport.module=GRPC

# gRPC连接配置
profiler.transport.grpc.agent.collector.port=9991
profiler.transport.grpc.metadata.collector.port=9991
profiler.transport.grpc.stat.collector.port=9992
profiler.transport.grpc.span.collector.port=9993

# 连接超时和重试配置
profiler.transport.grpc.agent.sender.request.timeout.millis=6000
profiler.transport.grpc.agent.sender.connect.timeout.millis=3000

采样率配置

# 采样类型:COUNTING或PERCENT
profiler.sampling.type=COUNTING

# 采样率配置(COUNTING模式下)
profiler.sampling.counting.sampling-rate=20  # 1/20的请求会被采样

# 吞吐量限制
profiler.sampling.new.throughput=0        # 新事务吞吐量(0表示无限制)
profiler.sampling.continue.throughput=0   # 持续事务吞吐量

性能监控配置

# JVM监控间隔
profiler.jvm.stat.collect.interval=10000  # 10秒收集一次

# 调用栈深度限制
profiler.callstack.max.depth=64
profiler.callstack.max.sequence=5000

# 死锁监控
profiler.monitor.deadlock.enable=true
profiler.monitor.deadlock.interval=60000  # 60秒检查一次

配置文件管理

Pinpoint支持多环境配置文件管理,通过profile机制实现:

flowchart TD
    A[应用程序启动] --> B{检查激活的Profile}
    B -->|release| C[加载release配置]
    B -->|local| D[加载local配置]
    B -->|custom| E[加载自定义配置]
    C --> F[合并配置到运行时]
    D --> F
    E --> F

Profile配置示例

创建自定义profile目录结构:

pinpoint-agent/
├── pinpoint-root.config
├── profiles/
│   ├── release/
│   │   └── pinpoint.config
│   ├── local/
│   │   └── pinpoint.config
│   └── production/
│       └── pinpoint.config

激活特定profile:

-Dpinpoint.profiler.profiles.active=production

高级监控配置

SQL监控配置

# SQL执行监控
profiler.sql.stat.enable=true
profiler.sql.error.enable=true
profiler.sql.error.count=100  # 执行时间超过100ms标记为错误

# SQL绑定值跟踪
profiler.jdbc.sql.trace.bindvalue=true
profiler.jdbc.sql.max.bindvalue.size=1024

HTTP监控配置

# HTTP状态码错误配置
profiler.http.status.code.errors=5xx,401,403

# HTTP头记录配置
profiler.http.record.request.headers=X-Request-Id,X-User-Id
profiler.http.record.request.cookies=session_id,user_token
profiler.http.record.response.headers=Set-Cookie,X-RateLimit-Limit

自定义方法监控

对于Pinpoint未自动监控的框架,可以手动配置监控:

# 包含要监控的类
profiler.include=com.example.service.*,com.example.controller.*

# 入口点方法配置
profiler.entrypoint=com.example.service.UserService.getUserById

# 消息队列处理器方法
profiler.message.queue.client.handler.methods=com.example.listener.MessageListener.onMessage

故障排除配置

调试模式配置

# 字节码调试选项
bytecode.dump.enable=true
bytecode.dump.classlist=com.example.service.UserService
bytecode.dump.bytecode=true
bytecode.dump.asm=true

# 日志级别调整
-Dpinpoint.logging.level=DEBUG
-Dpinpoint.logging.file.size=50m
-Dpinpoint.logging.file.lastmodified=3d

性能诊断配置

# 拦截器注册表大小
profiler.interceptorregistry.size=8192

# 缓冲配置
profiler.io.buffering.enable=true
profiler.io.buffering.buffersize=20

# 统计日志记录
profiler.transport.grpc.stats.logging.period=PT1M

环境变量配置

除了配置文件,还可以通过环境变量配置Agent:

export PINPOINT_AGENT_ID="web-app-01"
export PINPOINT_APPLICATION_NAME="USER_SERVICE"
export PINPOINT_PROFILER_TRANSPORT_GRPC_COLLECTOR_IP="192.168.1.100"

配置验证

启动应用程序后,可以通过检查日志来验证Agent配置是否正确:

# 查看Agent启动日志
tail -f /path/to/pinpoint-agent/logs/pinpoint.log

# 检查Agent与Collector连接
grep "Connected to" pinpoint.log

# 验证采样率配置
grep "Sampling rate" pinpoint.log

正确的配置应该显示类似以下信息:

INFO  Agent connected to Collector: 192.168.1.100:9991
INFO  Sampling rate configured: 5% (1/20)
INFO  JVM monitoring started with interval: 10000ms

通过以上配置,Pinpoint Agent能够全面监控应用程序的性能指标,为分布式系统的性能分析和故障诊断提供强大的数据支持。合理的配置不仅可以确保监控数据的准确性,还能最大程度地减少对应用程序性能的影响。

通过本指南的完整部署流程,您已经成功搭建了Pinpoint分布式应用性能监控系统。从基础环境准备到核心组件部署,再到应用程序集成监控,每个步骤都确保了系统的可靠性和高性能。Pinpoint的强大监控能力能够为分布式系统提供全面的性能洞察,包括方法级调用链追踪、SQL执行监控、JVM状态监测等功能。合理的配置和优化确保了监控数据采集的准确性同时最小化对应用性能的影响。现在您的系统已经具备了企业级的APM监控能力,可以开始实时监控应用程序性能,快速定位和解决系统瓶颈问题,为业务系统的稳定运行提供有力保障。

登录后查看全文
热门项目推荐
相关项目推荐