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 等常见应用集成,适合分布式系统的全链路性能监控。