利用Pinpoint搭建全链路监控系统

article/2025/8/23 16:18:04

随着项目微服务的进行,微服务数量逐渐增加,服务间的调用也越来越复杂,我们急切需要一个APM工具帮我们监控各个服务的性能及对服务间的调用进行跟踪,而通过调研多个开源APM工具后,最终我们选择了Pinpoint。

简介

Pinpoint 是一个开源的APM (Application Performance Management/应用性能管理) 工具,用于基于java的大规模分布式系统。在使用上力图简单高效,通过在启动时安装 agent,不需要修改哪怕一行代码,最小化性能损失 (3%)。

中文参考文档:http://skyao.github.io/leaning-pinpoint/index.html
开源源码地址:https://github.com/naver/pinpoint

Pinpoint 的特点

1.分布式事务跟踪,跟踪跨分布式应用的消息;

2.自动检测应用拓扑,帮助你搞清楚应用的架构;

3.水平扩展以便支持大规模服务器集群;

4.提供代码级别的可见性以便轻松定位失败点和瓶颈;

5.使用字节码增强技术,添加新功能而无需修改代码。

6.pinpoint有非常直观的UI,符合项目的当前需求

7.pinpoint是基于java开发的,利于项目后期对源代码的修改

8.pinpoint的社区还是挺活跃,一般提问题第二天就有项目的 committer回复。

Pinpoint架构图

图片

架构图对应说明:

  • Pinpoint-Collector:收集各种性能数据
  • Pinpoint-Agent:探针与应用服务器(例如tomcat)关联,部署到同一台服务器上
  • Pinpoint-Web:将收集到的数据层现在web展示
  • HBase Storage:收集到数据存到HBase中

Pinpoint的数据结构

Pinpoint 消息的数据结构主要包含三种类型Span,Trace 和TraceId。

1.Span是最基本的调用追踪单元

当远程调用到达的时候,Span指代处理该调用的作业,并且携带追踪数据。为了实现代码级别的可见性,Span下面还包含一层SpanEvent的数据结构。每个Span都包含一个SpanId。

2.Trace 是一组相互关联的 Span 集合

同一个Trace下的Span共享一个TransactionId,而且会按照SpanId和 ParentSpanId排列成一棵有层级关系的树形结构。

3.TraceId是TransactionId、SpanId和ParentSpanId的组合

TransactionId(TxId)是一个交易下的横跨整个分布式系统收发消息的 ID,其必须在整个服务器组中是全局唯一的。也就是说TransactionId识别了整个调用链;SpanId(SpanId)是处理远程调用作业的ID,当一个调用到达一个节点的时候随即产生;ParentSpanId(pSpanId)顾名思义,就是产生当前Span的调用方Span的ID。如果一个节点是交易的最初发起方,其 ParentSpanId是-1,以标志其是整个交易的根Span。下图能够比较直观的说明这些ID结构之间的关系。

Pinpoint的代码注入

Pinpoint对代码注入的封装非常类似AOP,当一个类被加载的时候会通过 Interceptor向指定的方法前后注入before 和 after逻辑,在这些逻辑中可以获取系统运行的状态,并通过TraceContext创建Trace消息,并发送给 Pinpoint 服务器。但与AOP不同的是,Pinpoint在封装的时候考虑到了更多与目标代码的交互能力,因此用Pinpoint 提供的API来编写代码会比AOP 更加容易和专业。

Pinpoint的运行方式

方式一:配置文件启动

#1.修改tomat目录下bin/catalina.sh,在Control Script for the CATALINA Server加入以下三行代码:# pinpoint-bootstrap-1.6.2.jar的位置CATALINA_OPTS="$CATALINA_OPTS -javaagent:/home/webapps/service/pp-agent/pinpoint-bootstrap-1.6.2.jar"
# agentId必须唯一,标志一个jvm
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=pp32tomcattest"
# applicationName表示同一种应用:同一个应用的不同实例应该使用不同的agentId,相同的applicationName
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=32tomcat"

方式二:SpringBoot 启动

java  -javaagent:/home/webapps/pp-agent/pinpoint-bootstrap-1.6.2.jar  -Dpinpoint.agentId=pp32tomcattest -Dpinpoint.applicationName=32tomcat -jar 32tomcat-0.0.1-SNAPSHOT.jar

PHP搭建全链路监控系统

一、准备工作:

环境需要满足一下条件

图片

二、搭建步骤:

1.在服务器相应位置拉去 pinpoint 的安装包,一般位置安装在/usr/local/src目录下,执行命令git clone https://github.com/pinpoint-apm/pinpoint-c-agent.git

Pinpoint官网:https://github.com/pinpoint-apm/pinpoint-c-agent/blob/master/DOC/PHP/Readme.md

2.安装 pinpoint-php 扩展

cd  /usr/local/src/pinpoint-c-agent
phpize
./configure
make
make install

在php.ini文件里配置如下代码并重启php服务即可

extension=pinpoint_php.so
Collector-agent's TCP address, ip,port:Collector-Agent's ip,port, please ensure it consistent with the `PP_ADDRESS` of `Collector-Agent` in step2(Build Collector-Agent).pinpoint_php.CollectorHost=Tcp:ip:port
pinpoint_php.SendSpanTimeOutMs=0 
# 0 is recommanded
request should be captured duing 1 second. < 0 means no limited
pinpoint_php.TraceLimit=-1 DEBUG the agent, PHP's log_error should turn on too.
pinpoint_php.DebugReport=true
error_reporting = E_ALL
log_errors = On
error_log = /tmp/php_fpm_error.log

3.在项目中使用Pinpoint PHP-Agent,并按照以下步骤操作

①. 添加pinpoint-apm/pinpoint-php-aop到 composer.json并更新

②. 在项目的入口文件添加一下代码配置

#################################################
define('APPLICATION_NAME','APP-2');define('APPLICATION_ID','app-2');define('AOP_CACHE_DIR',__DIR__.'./Cache/');define('PLUGINS_DIR',__DIR__.'./Plugins/');define('PINPOINT_USE_CACHE','YES');require_once __DIR__. path to 'vendor/pinpoint-apm/pinpoint-php-aop/auto_pinpointed.php';
#################################################

a.APPLICATION_NAME:应用名称。
b.APPLICATION_ID: 代理 ID。
c.AOP_CACHE_DIR: 在哪里生成 Cache。
d.PLUGINS_DIR: 路径 Plugins。
e.PINPOINT_USE_CACHECache: 'YES’在请求到来时不会更新;‘No’ 将 Cache 在每个请求到来时更新。(您也可以 Cache 通过删除它来更新。)考虑到性能,我们建议 ‘YES’。此外,如果您修改了插件,您应该更新以 Cache 使其生效。

f.require_once DIR. path to ‘vendor/pinpoint-apm/pinpoint-php-aop/auto_pinpointed.php’;:需要 pinpoint 的 auto_pinpointed.php。请在后面加上 require_once DIR.“/…/vendor/autoload.php”;,这很重要!

4.选择您的框架并将目录复制Plugins到应用程序的根目录,自动加载 Plugins到composer.json. 框架的详细信息:
ThinkPHP5
Yii2

效果展示

图片

图片

总结

目前有很多监控系统,PinPoint 从宏观上看,总体链路、服务总体状态(cpu、内存等等信息)都符合业务需要,业务通过接入 Pinpoint 后很容易的就能定位到问题,提高了解决问题的效率。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述


http://chatgpt.dhexx.cn/article/tViLWOuv.shtml

相关文章

pinpoint安装部署(相关博客合集)

pinpoint安装部署 说明一、PinPoint介绍及工作原理1.1 确定部署的组件及服务 二、相关组件版本兼容情况2.1 确定版本 三、部署3.1 HBASE3.2 agent 说明 本博客写在搭建PinPoint之前&#xff0c;主要是用来记录查阅的相关博客资料&#xff0c;等到动手搭建完再更新实际部署操作…

分布式跟踪工具Pinpoint技术入门

本文初衷 因为工作需要&#xff0c;这周研究了一下APM&#xff08;Application Performance Management&#xff09;相关技术&#xff0c;看了些许资料&#xff0c;对比了各种技术的特点&#xff0c;最终选择Pinpoint作为性能监控工具&#xff0c;本文的主要目的是记录本人部署…

【Pinpoint】安装

文章目录 一. 下载1. 版本&#xff08;2.3.3&#xff09;2. [下载地址](https://github.com/pinpoint-apm/pinpoint/releases/tag/v2.3.3)3. 下载内容4. [hbase](http://archive.apache.org/dist/hbase/1.2.6/) 二. 安装1. 安装JDK82. 安装hbase1.2.61. 解压文件2. 修改sh文件3…

2、Pinpoint-Server端安装

0、本章节简介 安装Pinpoint服务端 采用Docker安装所以需要提前安装 docker和 docker-compose 本文使用的版本是Pinpoint:2.1版本 ps 由于Pinpoint依赖了很多的基础镜像&#xff0c;所以推荐不要在已经部署了程序的机器上部署&#xff0c;以免造成端口号冲突&#xff0c;推荐使…

pinpoint 介绍

基本概念 APM (Application Performance Management/应用性能管理)工具 为大规模分布式系统. 开发语言:Java. 特点: ● 低侵入性 不用改一行业务代码 ● 低性能影响(大约3%资源增长) ServerMap 可以直观的看到分布式系统拓扑结构和节点的事务数量. Realtime Active Thr…

Pinpoint--基础--02--架构设计

Pinpoint–基础–02–架构设计 1、整体架构 1.1、Pinpoint Collector 数据收集模块&#xff0c;接收Agent发送过来的监控数据&#xff0c;并存储到HBase部署在 Web 容器上 1.2、Pinpoint Web 监控展示模块&#xff0c;展示系统调用关系、调用详情、应用状态等&#xff0c;并…

PinPoint(二)技术详解

英文原文&#xff1a;https://naver.github.io/pinpoint/1.8.4/techdetail.html 说明&#xff1a;【】中内容为方便解释自己加的 在这篇文章中&#xff0c;我们描述了Pinpoint的技术细节比如请求追踪&#xff08;transaction tracing&#xff09;和字节码插装&#xff08;byte…

pinpoint搭建及springboot接入使用

效果图&#xff1a; 搭建步骤 Pinpoint github地址&#xff1a;GitHub - pinpoint-apm/pinpoint: APM, (Application Performance Management) tool for large-scale distributed systems. 下载对应的包以及安装hbase 首先安装hbase hbase版本是1.7.1&#xff0c; 下载地址…

APM链路监控:PinPoint使用手册

文章目录 一、PinPoint简介二、PinPoint架构组成三、PinPoint使用说明1.首页2.请求调用栈3.服务状态4.链路事务筛选 结尾 一、PinPoint简介 pinpoint是开源在github上的一款APM监控工具&#xff0c;它是由java编写的&#xff0c;用于大规模分布式系统的监控&#xff1b;它对性…

Pinpoint--基础--3.1--安装部署--环境准备

Pinpoint–基础–3.1–安装部署–环境准备 前提 使用hd用户登陆 完成基础环境搭建https://blog.csdn.net/zhou920786312/article/details/118212302代码位置 https://gitee.com/DanShenGuiZu/learnDemo/tree/master/pinpoint-learn/demo11、安装环境准备 1.1、jdk1.8 基础环…

Pinpoint分布式系统性能监控工具

Pinpoint分布式性能监控工具(docker安装) 在做性能压测的时候&#xff0c;你是不是有只能看到测试报告&#xff1f; 在做性能压测的时候&#xff0c;你是不是想知道每一个方法执行了多长时间&#xff1f; Pinpoint几乎可以帮助你查看你想看到的每一个细节。 Pinpoint是什么&…

PinPoint使用教程

这篇博客&#xff0c;应该是是目前为止&#xff0c;百度上能搜到的关于PinPoint使用教程中最详细的一份答案了。为什么这样说呢&#xff0c;因为我不想写PinPoint使用教程的&#xff0c;后来百度上搜了好久&#xff0c;搜烦了&#xff0c;一怒之下&#xff0c;自己出了一片最详…

Pinpoint详解(分布式链路追踪、链路监控)

英文原文&#xff1a;https://naver.github.io/pinpoint/1.8.4/techdetail.html 说明&#xff1a;【】中内容为方便解释自己加的 在这篇文章中&#xff0c;我们描述了Pinpoint的技术细节比如请求追踪&#xff08;transaction tracing&#xff09;和字节码插装&#xff08;byte…

Pinpoint(一)基本概念和安装部署

Pinpoint是韩国人编写的 APM 系统&#xff0c;是一个分析大规模分布式系统的平台&#xff0c;并提供处理大量跟踪数据的解决方案。 1. 特点 分布式事务追踪&#xff0c;跟踪跨分布式应用的消息自动检测应用拓展水平扩展&#xff0c;以便支持大规模服务器集群提供代码级了践行…

全链路监控之pinpoint

一、pinpoint出现与其他相似概念比较 &#xff08;1&#xff09;、pinpoint概念 pinpoint是由java/PHP编写而成的&#xff0c;用来对大规模的分布式系统提供应用性能管理。pinpoint可以解决复杂架构下的拓扑解析与性能分析。 &#xff08;2&#xff09;、pinpoint的特点 分布…

APM链路监控:pinpoint安装部署实战详细手册

文章目录 一、pinpoint介绍1.pinpoint简介2.架构组成 二、安装环境准备三、HBase单机安装四、pinpoint安装1.安装pinpoint-collector2.安装pinpoint-web3.安装pinpoint-agent 五、pinpoint优化1.collector日志输出级别优化2.Hbase GC优化&#xff08;jdk1.8&#xff09; 结尾 一…

pinpoint使用详解(图文版)

pinpoint使用详解 用了一段时间的pinpoint发现确实挺好用的&#xff0c;就是功能超级多&#xff0c;大概整理了一下各功能的使用用法 1.首页 2.查看应用详细信息 2.1点击查看单个信息 2.2查看应用更详细信息 3.查看详细数据 错误的信息会用红色显示&#xff0c;可以查看错误…

synology 群晖 syslog

群晖真是太强大了&#xff0c;居然还有syslog功能。而且配置非常简单。在日志中心-》接收日志中就可以非常容易的配置。 以后在不方便调试的场合&#xff0c;就可以直接把调试信息发送到我的群晖服务器&#xff0c;打开看看就知道问题所在了 syslog

linux syslog原理,Linux日志管理之詳解 syslog/vsyslog

1、syslog簡介 syslog 是一種工業標准的協議,可用來記錄設備的日志。在UNIX系統,路由器、交換機等網絡設備中,系統日志(System Log)記錄系統中任何時間發生的大小事件。管理者可以通過查看系統記錄,隨時掌握系統狀況。UNIX的系統日志是通過syslogd這個進程記錄系統有關事件…

syslog RFC5424协议详解

官方说明 一个很不错的rfc文档下载网址。 Document Retrieval RFC Editor RFC 5424: The Syslog Protocol 6. Syslog Message FormatThe syslog message has the following ABNF [RFC5234] definition:SYSLOG-MSG HEADER SP STRUCTURED-DATA [SP MSG]HEADER …