保姆级Pinpoint(APM)实战教程
什么是Pinpoint

Pinpoint是由韩国NAVER公司开发并开源的一款应用程序管理工具,主要针对大规模分布式系统进行性能监控和故障诊断。通过跟踪分布式应用程序之间的事务,帮助分析系统的整体结构以及其中的组件是如何相互连接的。
与其对标的还有Twitter的Zipkin,国内开源的SkyWalking,对比下来Pinpoint有一定优势,这里不赘述。
Pinpoint的主要功能
ServerMap - 通过可视化组件的互连方式来了解任何分布式系统的拓扑结构。单击节点可显示有关组件的详细信息,例如其当前状态和事务计数。
Realtime Active Thread Chart- 实时监控应用程序内的活动线程。
Request/Response Scatter Chart - 随着时间的推移,可视化请求计数和响应模式,以识别潜在问题。通过在图表上拖动,可以选择事务以获取更多详细信息。

CallStack - 获得分布式环境中每个事务的代码级可见性,在单个视图中识别瓶颈和故障点。

Inspector - 查看应用程序的其他详细信息,如CPU使用率、内存/垃圾回收、TPS和JVM参数。

URI度量

基础设施监控
错误分析
Pinpoint架构

Pinpoint-Collector:收集各种性能数据
Pinpoint-Agent:探针与应用服务器(例如tomcat)关联,部署到同一台服务器上
Pinpoint-Web:将收集到的数据层现在web展示
HBase Storage:收集到数据存到HBase中
数据结构
Span
是最基本的调用追踪单元,当远程调用到达的时候,Span 指代处理该调用的作业,并且携带追踪数据。为了实现代码级别的可见性,Span 下面还包含一层 SpanEvent 的数据结构。每个 Span 都包含一个 SpanId。
Trace
是一组相互关联的 Span 集合,同一个 Trace 下的 Span 共享一个 TransactionId,而且会按照 SpanId 和 ParentSpanId 排列成一棵有层级关系的树形结构。
TraceId 是 TransactionId、SpanId 和 ParentSpanId 的组合
TransactionId(TxId)
是一个交易下的横跨整个分布式系统收发消息的 ID,其必须在整个服务器组中是全局唯一的。也就是说 TransactionId 识别了整个调用链;SpanId(SpanId)是处理远程调用作业的 ID,当一个调用到达一个节点的时候随即产生;ParentSpanId(pSpanId)顾名思义,就是产生当前 Span 的调用方 Span 的 ID。如果一个节点是交易的最初发起方,其 ParentSpanId 是 -1,以标志其是整个交易的根 Span。下图能够比较直观的说明这些 ID 结构之间的关系。

字节码修改
Pinpoint通过java agent技术(上一篇文章有详解)通过修改字节码的方式创建trace消息

安装部署
基本工具安装
安装java17(最低要求)
wget https://mirrors.tuna.tsinghua.edu.cn/Adoptium/17/jdk/x64/linux/OpenJDK17U-jdk_x64_linux_hotspot_17.0.12_7.tar.gz
设置JAVA_HOME
sudo tee /etc/profile.d/java.sh <<EOF
export JAVA_HOME=$(readlink -f /root/jdk-17.0.12+7/ | sed 's:/bin/java::')
export PATH=\$PATH:\$JAVA_HOME/bin
EOFsource /etc/profile.d/java.sh
安装zookeeper(可选,hbase部署为集群模式时需要部署)
官网下载tar包
https://zookeeper.apache.org/
配置zoo.cfg并启动
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
#修改为9000,防止8080端口被占用
admin.serverPort=9000
./zkServer.sh start
HBase
部署单点模式的HBase(生产环境需要部署集群模式)
官网下载tar包
https://hbase.apache.org/downloads.html
启动hbase(这里直接默认启动单机模式,分布式模式需要额外部署zk和hdfs)
注意:分布式模式下,zk需要独立部署,需要修改hbase-env.sh和hbase-site.xml,具体参考官方文档https://hbase.apache.org/book.html#quickstart
/root/hbase-2.6.0/bin/start-hbase.sh
执行建表脚本
./hbase shell /root/hbase-create.hbase

http://ip:16010/master-status

Pinpoint Collector
这里使用release3.0.0版本
下载地址
https://github.com/pinpoint-apm/pinpoint/releases/tag/v3.0.0
启动
nohup java --add-opens java.base/java.nio=ALL-UNNAMED -Dpinpoint.zookeeper.address=127.0.0.1 -jar pinpoint-collector-3.0.0-exec.jar &

Pinpoint Web
启动
nohup java --add-opens java.base/java.nio=ALL-UNNAMED -Dpinpoint.zookeeper.address=127.0.0.1 -jar pinpoint-web-3.0.0-exec.jar &

网页访问:
http://ip:8080/

Pinpoint Agent
解压agent jar
tar -xvf pinpoint-agent-3.0.0.tar.gz
和业务jar包一起启动
nohup java -jar -javaagent:pinpoint-agent-3.0.0/pinpoint-bootstrap.jar -Dpinpoint.agentId=test-agent1 -Dprofiler.sampling.type=PERCENT -Dprofiler.sampling.percent.sampling-rate=100 -Dpinpoint.applicationName=businesstest1 businesstest-0.0.1-SNAPSHOT.jar &
注意需要指定sampling.type和sampling.percent.sampling-rate参数(默认是COUNTING和20,表示只采集1/20的请求)
成功采集业务请求

完整请求调用链

相关文章:
保姆级Pinpoint(APM)实战教程
什么是Pinpoint Pinpoint是由韩国NAVER公司开发并开源的一款应用程序管理工具,主要针对大规模分布式系统进行性能监控和故障诊断。通过跟踪分布式应用程序之间的事务,帮助分析系统的整体结构以及其中的组件是如何相互连接的。 与其对标的还有Twitter的Zi…...
使用SpringBoot自定义注解+AOP+redisson锁来实现防接口幂等性重复提交
1 前提,整合好springboot和redis,redisson的环境 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency> 2 编写自定义注解,注解的作用是标记…...
k8s和ipvs、lvs、ipvsadm,iptables,底层梳理,具体是如何实现的
计算节点的功能: 提供容器运行的环境 kube-proxy的主要功能: 术业有专攻, kube-proxy的主要功能可以概括为4个字 网络规则 那么kube-proxy自己其实是个daemonset控制器跑的 每个节点上都有个的pod 它负责网络规则 其实呢 它还是个小…...
三、归一化与标准化
归一化与标准化 前言一、最小最大值归一化1.1 原理(公式)1.2 API 介绍1.2.1 参数介绍1.2.2 属性介绍1.2.3 注意事项1.2.4 代码演示 1.3 举例说明 二、标准化2.1 原理(公式)2.2 API 介绍2.2.1 参数介绍2.2.2 属性介绍2.2.3 注意事项…...
B2105 矩阵乘法
B2105 矩阵乘法 #include <iostream> using namespace std; int main(){int n,m,k;cin>>n>>m>>k;int arr1[n][m];int arr2[m][k];for(auto & line:arr1){for(auto & x: line){cin>>x;}}for(auto & line:arr2){for(auto & x: lin…...
centos之下的mysql8的安装
文章目录 1.mysql.com进入(网址栏)2.xshell操作2.1拖拽上传2.2安装发布包2.3检查情况2.4安装mysql2.5手动启动2.6查看状态2.7查看随机密码2.8登录2.9重置密码 1.mysql.com进入(网址栏) 找下面的这个download按钮: 一直往下面划:找到下面的这个 下面的这个…...
计算机导论
概述 计算机简史 1935年代,英国数学家图灵(Alan Turing)提出“图灵机”,奠定了计算机的理论基础。 1952年,冯诺依曼确定了计算机由运算器、控制器、存储器、输入、输出等5部分组成(Von Neumann 体系结构)。 60年代…...
力扣209-长度最小的子数组-滑动窗口思想
题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输入&am…...
Xilinx 7系列FPGA PCI Express IP核简介
前言:Xilinx7系列FPGA集成了新一代PCI Express集成块,支持8.0Gb/s数据速率的PCI Express 3.0。本文介绍了7系列FPGA PCIe Gen3的应用接口及一些特性。 1. PCI Express规范演进 PCIe是一种高速串行计算机扩展总线标准,旨在替代传统的PCI和AG…...
红包雨html
1、分享一个红包雨html代码。 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>红包雨小游戏</ti…...
js 基础补充3
1. 闭包 在函数内部定义的函数,可以访问改函数的属性和方法 私有属性 延长变量的生命周期,更好的避免命名冲突 缺点:内存消耗比较大,不建议频繁使用 2. js 原型 原型链 访问对像的属性方法,不光会在对象上查找还会在…...
Invalid bean definition with name ‘employeeMapper‘ defined in file
参考以下博客: <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.7</version> </dependency> 总结: 1. 拉取老项目的时候要特…...
悦享驾驶,乐在旅途,首选江铃集团新能源易至EV3青春版
金秋时节,天高气爽,正是出游的好时节。不论是家庭自驾游,还是朋友结伴出游,一款好看又好开的车绝对是提升旅行品质的重要因素。江铃集团新能源易至汽车EV3青春版,凭借其超高安全性、便捷操作性、卓越性能,成…...
测试WIFI和以太网的TCP带宽、UDP带宽和丢包率、延时
一、测试TCP、UDP的带宽 作为服务器:iperf3 -s -i 1 (或者用CloudCampus软件,或者iperf magic) Wi-Fi 发送、接收吞吐率的测试_magic iperf-CSDN博客 车机作为iperf3服务器,电脑作为iperf3得客户端,分别…...
redis 第155节答疑 源码分析Hash类型ziplist结构和zlentry实体解析
155属性 zlbytes zltail zllen entryX zlend 类型 uint32 t uint32 t uint16 t 列表节点 uint8 t 长度 4字节 4字节 2字节 不定 1字节 用途 记录整个压缩列表占用的内存字节数:在对压缩列表进行内存重分配,或者计算 zlend 的位置时使用 记录压缩列表表尾节点距离压缩…...
IDE使用技巧与插件推荐
集成开发环境(IDE)是开发者日常工作中的重要工具,合理使用IDE和合适的插件,能大大提高开发效率。本文将分享常见IDE(如VS Code、IntelliJ IDEA等)的一些高效使用技巧,以及开发过程中常用的插件推…...
1020接口测试面试题随记
1.测试中对于上下游承接的业务是怎么处理的 针对上下游承接的业务,我会采取以下措施进行处理:首先,明确上下游系统的接口和依赖关系,确保理解数据流和业务逻辑的连接点。其次,进行接口测试,验证上下游系统…...
Zotero7最新(2024)翻译问题——配置 百度API翻译
在使用翻译之前,首先要确保已经安装了插件:Translate for Zotero 关于插件的安装可以参考这篇文章: Zotero7最新(2024)安装、配置步骤-CSDN博客 接下来进入正题。 当使用Zotero7对英文文献翻译时,可能会…...
python程序设计员—练习笔记
目录 基础处理 字符串列表字典运算符正则表达式re库requestsBeautiful Soupjieba库分词模式基于TF-IDF算法的关键词提取 基于TextRank算法的关键词提取pandas 打开有多个表的.xlsx文件 基础处理 字符串 str_ str_.lower()lower()函数:将字符中的大写字母转换成小…...
1.DBeaver连接hive数据库
1.hive开启远程服务,linux中直接输入:hiveserver2 2.解压dbeaver和hive-jdbc-2.1.1.zip 3.双击打开 4.数据库,新建连接 5.搜索hive 6.配置参数 7.编辑驱动设置 8.添加jar包 9.测试连接 10.右击,新建sql编辑器 11.执行sql 12.调整字…...
Arm架构在中国市场的潜力与挑战:从技术选型到实践落地
1. 项目概述:从一次技术选型引发的深度思考最近在为一个边缘计算项目做硬件选型,团队里关于采用x86还是Arm架构的服务器争论了好几天。这让我想起,这几年在国内的云计算、数据中心、甚至个人消费电子领域,Arm架构的声音是越来越响…...
换背景颜色怎么操作?5分钟掌握证件照、商品图换底色的完整指南
最近有不少朋友问我,证件照背景太丑怎么办?电商产品图背景杂乱怎么处理?其实换背景颜色没有想象中那么复杂,今天就把我用过的所有方法和工具整理出来,帮你彻底解决这个问题。为什么要学会换背景颜色先说说我为什么突然…...
扣图操作方法完全指南:2026年最实用的AI一键抠图工具推荐
说起扣图,我相信很多人都有过这样的经历——花半天时间用PS的钢笔工具精心描绘边界,最后还是差强人意。或者为了给证件照换个背景,反复调整参数却效果一般。今天我就来分享一下2026年最实用的扣图操作方法,以及那些真正能救命的工…...
如何提升SQL存储过程逻辑复用_封装通用存储过程函数
SQL Server无函数式存储过程,需用标量函数(单值计算)或表值函数(结果集)替代;标量函数禁用DML和非确定性函数,ITVF性能优于MSTVF;MySQL函数须声明DETERMINISTIC等属性;跨…...
2024年第二季度:10款必装的Hyper终端增强插件终极推荐
2024年第二季度:10款必装的Hyper终端增强插件终极推荐 【免费下载链接】awesome-hyper 🖥 Delightful Hyper plugins, themes, and resources 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-hyper Hyper终端作为一款基于Electron构建的现…...
思源宋体TTF终极指南:7种字重解决中文排版所有难题
思源宋体TTF终极指南:7种字重解决中文排版所有难题 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是否在为中文项目寻找完美的开源字体而烦恼?商业字体价格昂…...
从棋盘格到精准感知:ROS camera_calibration实战单目与双目相机标定
1. 为什么相机标定是机器人视觉的"体检报告"? 想象一下你新配了一副眼镜,但镜片度数不准——看东西要么变形要么模糊。相机标定就是给机器人的"眼睛"做验光,确保它看到的图像能真实反映物理世界。我在做视觉SLAM项目时&a…...
STL到STEP格式转换:技术选型与实施指南
STL到STEP格式转换:技术选型与实施指南 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在制造业数字化转型的背景下,3D数据格式互操作性已成为工程团队面临的核心挑战。…...
DsHidMini:让PS3手柄在Windows上重获新生的终极指南
DsHidMini:让PS3手柄在Windows上重获新生的终极指南 【免费下载链接】DsHidMini Virtual HID Mini-user-mode-driver for Sony DualShock 3 Controllers 项目地址: https://gitcode.com/gh_mirrors/ds/DsHidMini 还在为闲置的索尼DualShock 3手柄寻找新的用途…...
ARM异常处理机制与ESR寄存器详解
1. ARM异常处理机制概述在ARMv8/v9架构中,异常处理是处理器响应硬件或软件事件的核心机制。当发生异常时,处理器会暂停当前程序执行,跳转到预定义的异常向量表入口,同时将异常相关信息记录在异常综合征寄存器(ESR)中。异常可能由多…...
