Pinpoint安装部署指南:从零开始搭建监控系统
本文详细介绍了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的高性能:
- 数据块编码:所有表都使用
DATA_BLOCK_ENCODING => 'PREFIX',减少存储空间占用 - 预分区策略:通过
SPLITS参数进行预分区,避免热点问题 - 版本控制:统计表设置
VERSIONS => 1,避免存储冗余数据 - 区域数量控制: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监控能力,可以开始实时监控应用程序性能,快速定位和解决系统瓶颈问题,为业务系统的稳定运行提供有力保障。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00