pinpoint学习
[pinpoint学习](https://www.bilibili.com/video/BV1Ri4y1X7UC/?spm_id_from=333.337.search-card.all.click)
文档地址
https://drive.google.com/file/d/1yGUuGcYb2UMCuGTX9KUL0KTRIJPfF0bd/view?usp=drive_link
### 1. **初识 Pinpoint**
- **Pinpoint** 是一款开源的 APM 监控工具,基于 **Google Dapper** 论文实现。
- 提供无侵入式调用链监控和代码级别的可见性,功能包括:
- **服务拓扑图**:展示调用关系、节点详细信息。
- **实时活跃线程图**:监控线程执行性能。
- **请求响应散点图**:展示请求和响应时间,定位问题。
- **请求调用栈查看**:代码级别执行详情,定位故障。
- **应用状态/机器状态检查**:CPU、内存、TPS、JVM 信息等。
### 2. **架构组成**
Pinpoint 的核心组件包括:
1. **Agent**:收集应用端监控数据。
2. **Collector**:接收 Agent 数据,存储到 HBase。
3. **Web UI**:可视化展示数据及提供报警功能。
### 3. **安装与配置**
#### 3.1 安装 Pinpoint 环境
- 拉取镜像:
```bash
docker pull pinpointdocker/pinpoint-web
docker pull pinpointdocker/pinpoint-collector:2.1.0
docker pull pinpointdocker/pinpoint-hbase
docker pull pinpointdocker/pinpoint-agent:2.1.0
docker pull pinpointdocker/pinpoint-quickstart:latest
```
- 保存镜像:
```bash
docker save -o pinpoint2.1.0.tar <镜像列表>
```
- 加载镜像:
```bash
docker load -i pinpoint2.1.0.tar
```
- 运行 Pinpoint:
```bash
docker-compose pull
docker-compose up -d
```
#### 3.2 修改配置
- **pinpoint.config** 文件:
```properties
profiler.collector.ip=你的 Collector 组件 IP
profiler.transport.grpc.collector.ip=192.168.x.x
```
#### 3.3 配置 Tomcat 集成
- 修改 `CATALINA_OPTS`:
```bash
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/data/pinpoint/pinpoint-bootstrap-2.1.0.jar"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=yourAgentId"
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=yourAppName"
```
- 启动 Tomcat:
```bash
./startup.sh
```
### 4. **Docker 制作与运行**
#### 4.1 Dockerfile 示例
```dockerfile
FROM openjdk:8-alpine3.9
RUN apk --update add curl bash tzdata && rm -rf /var/cache/apk/*
ENV TZ Asia/Shanghai
COPY pinpoint/ /opt/pinpoint/
COPY ${JAR_FILE} /app.jar
EXPOSE 8081
ENTRYPOINT java -javaagent:/opt/pinpoint/pinpoint-bootstrap-2.1.0.jar \
-Dpinpoint.agentId=yourAgentId \
-Dpinpoint.applicationName=yourAppName -jar /app.jar
```
#### 4.2 镜像构建与运行
- 构建镜像:
```bash
docker build --rm -t your/pinpointdemo:1.0 --build-arg JAR_FILE=yourApp.jar .
```
- 运行镜像:
```bash
docker run -itd --name pinpointdemo -p 8081:8081 your/pinpointdemo:1.0
```
### 5. **数据库配置**
#### application.yml 配置示例
```yaml
server:
port: 8082
spring:
datasource:
driver-class-name: org.mariadb.jdbc.Driver
url: jdbc:mariadb://192.168.x.x:3307/yourDB?characterEncoding=utf-8&useSSL=false
username: root
password: admin
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
type-aliases-package: com.example.entity
mapper-locations: mapper/*.xml
```
#### 创建数据库表
```sql
CREATE TABLE tbuser (
userid INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(20),
password VARCHAR(20),
userroles VARCHAR(2),
nickname VARCHAR(50)
);
INSERT INTO tbuser (username, password, userroles, nickname)
VALUES ('admin', '1234', '04', '管理员'), ('lagou', '1234', '03', '拉勾教育');
```
### 6. **测试与验证**
1. **启动 Agent 测试**:
```bash
java -javaagent:/data/pinpoint/pinpoint-bootstrap-2.1.0.jar \
-Dpinpoint.agentId=agentTest1 \
-Dpinpoint.applicationName=springbootTest -jar yourApp.jar
```
2. **验证接口**:
- `http://<IP>:8081/yourApp`
- `http://<IP>:8082/users`
### 总结
Pinpoint 提供了分布式应用的链路跟踪、监控及性能优化功能,易于通过 Docker 快速部署,支持与 Tomcat、Spring Boot 等常见应用集成,适合分布式系统的全链路性能监控。
公众号进入网站体验更佳

