SpringCloud链路追踪实时流量最佳解决方案:Pinpoint分布式链路追踪、链路监控平台详细搭建步骤,SpringBoot/SpringCloud微服务注册到Pinpoint(2022年最新)

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: SpringCloud链路追踪实时流量最佳解决方案:Pinpoint分布式链路追踪、链路监控平台详细搭建步骤,SpringBoot/SpringCloud微服务注册到Pinpoint(2022年最新)

@[toc]

前言

Pinpoint 是用 Java 编写的 APM(应用性能管理)工具,用于大规模分布式系统。在 Dapper 之后,Pinpoint 提供了一个解决方案,以帮助分析系统的总体结构以及分布式应用程序的组件之间是如何进行数据互联的。

  • 安装agent是无侵入式的
  • 对性能的影响最小(只增加约3%资源利用率)
  • 服务之间的调用链路图

在这里插入图片描述

  • 单个请求数据链路

在这里插入图片描述

1.下载

pinpoint github地址

  • pinpoint-agent-2.3.3.tar.gz
  • pinpoint-collector-boot-2.3.3.jar
  • pinpoint-web-boot-2.3.3.jar
  • Source code (zip) (解压完 pinpoint\pinpoint-2.3.3\hbase\scripts\hbase-create.hbase)- 初始化hbase脚本

hbase数据库

  • hbase-1.2.6-bin.tar.gz

在这里插入图片描述

2.安装

JDK是必备要求,自行安装

2.1 安装hbase

2.1.1 解压

tar -zxvf hbase-1.2.6-bin.tar.gz

2.1.2 修改配置文件

1.hbase-env.sh

vim hbase-1.2.6/conf/hbase-env.sh
注释46,47行 ,添加javahome配置。
export JAVA_HOME=/usr/local/jdk1.8.0_291
export HBASE_MANAGES_ZK=true
# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
#export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
#export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"

在这里插入图片描述


2.hbase-site.xml

vim  hbase-1.2.6/conf/hbase-site.xml
<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>file:///xxx/hbase/data</value>
    </property>
</configuration>

在这里插入图片描述


3.启动

启动hbase
 ./bin/start-hbase.sh

在这里插入图片描述
在这里插入图片描述

4.初始化hbase的pinpoint库

cd /hbase-1.2.6/bin 进入该目录,hbase shell是命令不是可执行脚本
 ./hbase shell /usr/local/pinpoint/hbase-create.hbase

在这里插入图片描述


初始化完成

2.2 部署pinpoint-collector

2.2.1 创建日志文件夹

在这里插入图片描述

2.2.2 启动

nohup java -jar -Dpinpoint.zookeeper.address=127.0.0.1 pinpoint-collector-boot-2.3.3.jar > log/collector.log 2>&1 &

在这里插入图片描述


2.3 部署pinpoint-web-boot

nohup java -jar -Dpinpoint.zookeeper.address=127.0.0.1 pinpoint-web-boot-2.3.3.jar > log/web.log 2>&1 &

在这里插入图片描述


2.4 pinpoint-agent配置(无需运行,后续将在微服务启动时引用)

2.4.1 解压

tar -zxvf pinpoint-agent-2.3.3.tar.gz
#进入该文件夹修改配置文件
cd pinpoint-agent-2.3.3/profiles/release/
vim pinpoint.config 
将这两个配置改为部署collector的ip,我的都在一台机器直接127.0.0.1就行

在这里插入图片描述


找到这一行

在这里插入图片描述

改为
profiler.sampling.rate=1

3 运行一个springboot

3.1 linux

java -javaagent:/usr/local/pinpoint/pinpoint-agent-2.3.3/pinpoint-bootstrap-2.3.3.jar -Dpinpoint.agentId=xdclass-redis -Dpinpoint.applicationName=xdclass-redis -jar xdclass-redis-0.0.1-SNAPSHOT.jar

在这里插入图片描述

3.2 windows

1.在win环境下解压pinpoint-agent-2.3.3

修改配置文件
pinpoint-agent-2.3.3/profiles/release/pinpoint.config

在这里插入图片描述
在这里插入图片描述

2.idea添加参数启动springboot

-javaagent:E:\pinpoint\pinpoint-agent-2.3.3\pinpoint-bootstrap-2.3.3.jar -Dpinpoint.agentId=UserApplication -Dpinpoint.applicationName=UserApplication

在这里插入图片描述


启动成功

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 k8s环境

如果是在k8s环境下部署
需要每个物理机拷贝一份pinpoint-agent
相关实践学习
基于OpenTelemetry构建全链路追踪与监控
本实验将带领您快速上手可观测链路OpenTelemetry版,包括部署并接入多语言应用、体验TraceId自动注入至日志以实现调用链与日志的关联查询、以及切换调用链透传协议以满足全链路打通的需求。
分布式链路追踪Skywalking
Skywalking是一个基于分布式跟踪的应用程序性能监控系统,用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据,提供了一种简便的方式来清晰地观测分布式系统,具有分布式追踪、性能指标分析、应用和服务依赖分析等功能。 分布式追踪系统发展很快,种类繁多,给我们带来很大的方便。但在数据采集过程中,有时需要侵入用户代码,并且不同系统的 API 并不兼容,这就导致了如果希望切换追踪系统,往往会带来较大改动。OpenTracing为了解决不同的分布式追踪系统 API 不兼容的问题,诞生了 OpenTracing 规范。OpenTracing 是一个轻量级的标准化层,它位于应用程序/类库和追踪或日志分析程序之间。Skywalking基于OpenTracing规范开发,具有性能好,支持多语言探针,无侵入性等优势,可以帮助我们准确快速的定位到线上故障和性能瓶颈。 在本套课程中,我们将全面的讲解Skywalking相关的知识。从APM系统、分布式调用链等基础概念的学习加深对Skywalking的理解,从0开始搭建一套完整的Skywalking环境,学会对各类应用进行监控,学习Skywalking常用插件。Skywalking原理章节中,将会对Skywalking使用的agent探针技术进行深度剖析,除此之外还会对OpenTracing规范作整体上的介绍。通过对本套课程的学习,不止能学会如何使用Skywalking,还将对其底层原理和分布式架构有更深的理解。本课程由黑马程序员提供。
相关文章
|
2月前
|
运维 监控 数据可视化
ARMS的微服务监控
【8月更文挑战第23天】
47 6
|
2月前
|
缓存 NoSQL Java
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解分布式情况下如何添加分布式锁 【续篇】
这篇文章是关于如何在SpringBoot应用中整合Redis并处理分布式场景下的缓存问题,包括缓存穿透、缓存雪崩和缓存击穿。文章详细讨论了在分布式情况下如何添加分布式锁来解决缓存击穿问题,提供了加锁和解锁的实现过程,并展示了使用JMeter进行压力测试来验证锁机制有效性的方法。
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解分布式情况下如何添加分布式锁 【续篇】
|
2月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
|
2天前
|
监控 Java 对象存储
监控与追踪:如何利用Spring Cloud Sleuth和Netflix OSS工具进行微服务调试
监控与追踪:如何利用Spring Cloud Sleuth和Netflix OSS工具进行微服务调试
10 1
|
27天前
|
存储 NoSQL Redis
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
Redis持久化、RDB和AOF方案、Redis主从集群、哨兵、分片集群、散列插槽、自动手动故障转移
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
|
27天前
|
SQL NoSQL 数据库
SpringCloud基础6——分布式事务,Seata
分布式事务、ACID原则、CAP定理、Seata、Seata的四种分布式方案:XA、AT、TCC、SAGA模式
SpringCloud基础6——分布式事务,Seata
|
13天前
|
Java 开发工具 对象存储
简化配置管理:Spring Cloud Config与Netflix OSS中的动态配置解决方案
简化配置管理:Spring Cloud Config与Netflix OSS中的动态配置解决方案
26 2
|
13天前
|
消息中间件 Java 对象存储
数据一致性挑战:Spring Cloud与Netflix OSS下的分布式事务管理
数据一致性挑战:Spring Cloud与Netflix OSS下的分布式事务管理
26 2
|
2月前
|
缓存 NoSQL Java
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解、如何添加锁解决缓存击穿问题?分布式情况下如何添加分布式锁
这篇文章介绍了如何在SpringBoot项目中整合Redis,并探讨了缓存穿透、缓存雪崩和缓存击穿的问题以及解决方法。文章还提供了解决缓存击穿问题的加锁示例代码,包括存在问题和问题解决后的版本,并指出了本地锁在分布式情况下的局限性,引出了分布式锁的概念。
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解、如何添加锁解决缓存击穿问题?分布式情况下如何添加分布式锁
|
1月前
|
运维 NoSQL Java
SpringBoot接入轻量级分布式日志框架GrayLog技术分享
在当今的软件开发环境中,日志管理扮演着至关重要的角色,尤其是在微服务架构下,分布式日志的统一收集、分析和展示成为了开发者和运维人员必须面对的问题。GrayLog作为一个轻量级的分布式日志框架,以其简洁、高效和易部署的特性,逐渐受到广大开发者的青睐。本文将详细介绍如何在SpringBoot项目中接入GrayLog,以实现日志的集中管理和分析。
112 1