如何选择全链路监控系统?CAT、SkyWalking、Pinpoint哪个更适合?

如果服务器上没有应用还会造成硬件瓶颈吗?显然是不会的,呈现出来的硬件瓶颈绝大多数是表象问题,我们往往需要在系统应用上寻找问题的根因。而寻找系统问题的根因,对于系统链路监控也是必不可少的,

前面我们也写了几篇关于SkyWalking搭建的文章,但是文章视角不一样。之前是以架构设计的角度来通过监控体系搭建,及时了解系统的运行情况和服务器的调用链路。本篇文章主要是以测试的角度来描述搭建目的。

一、为什么要链路监控

随着微服务的流行,链路监控越来越受重视。微服务架构是根据业务进行拆分,对外统一暴露API 接口,而内部可能是分布式服务、分布式对象存储等,如下图所示:


这些组件共同构成了复杂的分布式网络。而分布式系统一旦出现问题,比如一个请求经过多个微服务之后出现了调用失败的问题,或者一个请求经过多个微服务之后 Response 时间过长,但具体是哪个微服务节点的问题我们并不知道。只能去服务器上查看调用经过的每个微服务的日志,当然这种方式的效率是比较低的,相当于人肉运维。

随着业务体系越来越复杂,加上服务间的相互依赖关系,微服务其中一个节点出现了问题,很可能牵一发而动全身,导致严重的后果。在这样的情况下,分布式链路监控的价值就体现出来了,它可以让我们清晰地知道跨服务调用的链路耗时信息、执行方法等,并从整体到局部将信息呈现出来,可以节约故障排查时间。

二、全链路监控选择

全链路监控系统有很多,可以从这几方面选择:

  • 探针的性能消耗,探针是搜集信息的“情报员”,尤其是在多节点情况下,搜集数据的成本会越来越高,监控组件服务的影响应该做到足够小、数据分析快、性能占用小;

  • 对代码的非侵入性,减少开发的维护成本;

  • 监控、分析的维度尽可能多。

目前市面上的全链路监控工具很多,比如 CAT、SkyWalking、Pinpoint 等,对于工具的选型来说最重要的是采样数据对系统的性能消耗足够小、数据分析和展示快、监控的维度尽可能丰富,简单比较下这几个工具。

  • CAT:是由美团和携程的同学开发的,通过代码埋点的侵入式方式,对应用日志分析、监控、展示等,不过侵入式的方式会带来开发以及维护成本的增加。

  • SkyWalking:也是由国人开发,目前项目已经提交到 Apache 孵化组织,无侵入性、UI 展示简洁清晰。

  • Pinpoint:由韩国人开发,相对于 SkyWalkingg 提供了更为详尽的链路监控信息,不过数据采集带来的性能损耗相对于 SkyWalking 来说比较大。

三、SkyWalking模块分析

先来看下 SkyWalking 的组件示意图:

1、SkyWalking部署安装

首先下载 SkyWalking 安装包并进行解压:

wget https://github.com/apache/SkyWalking/archive/v8.0.1.tar.gztar -zxvf v8.0.1.tar.gz

解压后可以看到如下文件夹:

(1)修改配置文件

修改配置文件 config/application.yml。在这里先进行数据库的配置,使用当前服务器上的 mysql 来进行存储:

    mysql:properties:jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://127.0.0.1:3306/swtest"}dataSource.user: ${SW_DATA_SOURCE_USER:root}dataSource.password: ${SW_DATA_SOURCE_PASSWORD:123456}

修改完成后,启动服务。

$ bin/oapService.shSkyWalking OAP started successfully!

(2)SkyWalking UI配置

接着来看 SkyWalking UI 的相关配置,由于 SkyWalking UI 的默认端口是 8080,这个端口是很多应用的默认端口,容易产生冲突,可以修改一下,如下所示:

# 修改webapp/webapp.ymlserver:port: 18080

UI界面启动成功后示意图如下:

(3)启动微服务

nohup java -server -Xms256m -Xmx256m -Dspring.profiles.active=dev -Dspring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 -javaagent:/root/apm/apache-SkyWalking-apm-bin/agent/SkyWalking-agent.jar=agent.service_name=cctuser -Dspring.cloud.nacos.config.server-addr=127.0.0.1:8848 -jar blade-user.jar  > log.file 2>&1 &

启动本地的微服务成功后,就可以访问服务,同时通过 SkyWalking 监控可以看到服务部署图以及链路监控等,如下图所示:

搭建完SkyWalking监控体系后,如果服务遇到超时、访问错误时,我们如何能快速接收到报警信息呢?有哪些报警方式可以使用呢?欢迎继续关注。

文章将持续更新,欢迎关注公众号:服务端技术精选。欢迎点赞、关注、转发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/1782.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光伏无人机吊装技术的优势及应用前景

近年来随着政府对光伏业务的不断宣传和推进,不少区域因地制宜引进了光伏发电项目,但是部分区域由于交通不便利,给材料运输工作带来了巨大的考验。目前,无人机吊装技术运输材料解决这一问题。 今天带大家看下光伏无人机吊装技术有…

STM32G030F6P6TR ST意法

STM32G030F6P6TR是ST(意法半导体)一款基于高性能ArmCortex-M032位RISC内核,工作频率高达64MHz的32位MCU微控制器。代理销售ST(意法半导体)全系列IC电子元器件-中芯巨能为您提供STM32G030F6P6TR(ST 32位MCU)引脚图及中文参数介绍等内容。 STM32G030F6P6TR的中文参数 …

Linux进程和任务管理

目录 一.程序和进程的关系 程序 进程 线程 线程与进程的区别 二.查看进程信息ps 方法一 常用选项 方法二 三.TOP动态查看进程信息 进程信息区各列解释 top常用命令 系统查看命令总结 查看进程信息pgrep 查看进程树pstree 四.控制进程 进程的启动方式 进程的前…

Java面试八股之重写一个对象的equals方法,需要考虑哪些问题

重写一个对象的equals方法,需要考虑哪些问题 遵守equals()约定: 重写equals()方法应遵循Object类中定义的equals()方法约定,即实现自反性(x.equals(x)始终为true)、对称性(若x.equals(y)为true&#xff0…

【电控笔记5.5】psms规格参数

规格参数 转矩常数Kt与反电动势常数Ke Kt:没安培电流产生多少转矩量 Ke或Kb:每单位转速产生的反电动势电压 反电动势是梯形波,Kt=Ke;正弦波则不相等 q轴电流与反电动势都领先转子磁通链90

谷粒商城学习笔记

1.系统架构 2.环境准备 21.安装Linux 1.VirtualBox: https://download.virtualbox.org/virtualbox/6.0.10/VirtualBox-6.0.10-132072-Win.exe 2.安装 Vagrant 1).Vagrant 下载地址: https://releases.hashicorp.com/vagrant/2.2.5/vagrant_2.2.5_x86_64.msi https://www…

Python pandas数据转化

在Python中使用Pandas库进行数据处理时,数据转换是一项常见的任务。Pandas提供了多种方法来转换数据,包括重排、重塑、替换、分组等。以下是一些常用的数据转换方法: 1. 重排和重塑数据 pd.DataFrame.transpose():转置数据&…

7.Prism框架之对话框服务

文章目录 一. 目标二. 技能介绍① 什么是Dialog?② Prism中Dialog的实现方式③ Dialog使用案例一 (修改器)④ Dialog使用案例2(异常显示窗口) 一. 目标 1. 什么是Dialog?2. 传统的Dialog如何实现?3. Prism中Dialog实现方式4. 使用Dialog实现一个异常信息弹出框 二. 技能介…

骑砍2霸主MOD开发(4)-游戏场景(scene)制作

一.MapScene和MissionScene MapScene:进入游戏首次加载的RTS视角大地图场景对应scene_name为Main_map,引擎固定加载SandBox/SceneObj/Main_map. MissionScene:进入酒馆,野外战斗等第三人称游戏场景 二.游戏场景(scene.xscene) 1.Terrain地形 <1.layers:纹理layer增量 <2…

Proxyman Premium for Mac:网络调试利器,开发者首选!

Proxyman Premium for Mac是一款功能强大的网络调试和分析工具&#xff0c;专为开发者和测试人员打造。这款软件以其出色的性能和丰富的功能&#xff0c;帮助用户在网络开发和调试过程中更有效地分析和拦截网络请求&#xff0c;进行必要的修改和重发&#xff0c;从而进行更深度…

【Linux基础】Linux基础概念

目录 前言 浅谈什么是文件&#xff1f; Linux下目录结构的认识及路径 目录结构 路径 家目录 什么是递归式的删除 重定向 输出重定向&#xff1a; 追加重定向&#xff1a; 输入重定向&#xff1a; 命令行管道 shell外壳 为什么需要shell外壳&#xff1f; shell外壳…

vue2 mixins混入

在Vue2中&#xff0c;使用mixins混入有两种方式&#xff1a; 全局混入&#xff1a;在Vue实例初始化之前&#xff0c;使用Vue.mixin()方法进行全局混入。具体步骤如下&#xff1a; 在main.js&#xff08;或其他入口文件&#xff09;中引入Vue和混入对象&#xff1a;import Vue f…

使用FPGA实现超前进位加法器

介绍 前面已经向大家介绍过8位逐位进位加法器了&#xff0c;今天向大家介绍4位超前进位加法器。 对于逐位进位加法器来说&#xff0c;计算任意一位的加法运算时&#xff0c;必须等到低位的加法运算结束送来进位才能运行。这种加法器结构简单&#xff0c;但是运算慢。 对于超…

NFT卡牌质押分红模式开发技术讲解分析

近年来&#xff0c;随着加密货币市场的快速发展&#xff0c;NFT&#xff08;Non-Fungible Token&#xff0c;非同质化代币&#xff09;作为一种独特的数字资产形式备受关注。其中&#xff0c;NFT卡牌质押分红模式是一种创新的应用场景&#xff0c;为用户提供了一种参与和投资的…

【Qt 学习笔记】Qt常用控件 | 按钮类控件 | Check Box的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 按钮类控件 | Check Box的使用及说明 文章编号&#xff…

Linux中安装MySQL数据库(Red Hat7.9安装MySQL5.7数据库)

亲测有效,全程在线安装,无需额外下载。 安装、配置、登录、修改密码策略、修改密码、远程连接。 1、先安装JDK? Linux中安装JDK17.X_linux jdk17-CSDN博客 2、安装MySQ5.7版本的数据库? 2.1、卸载自带的Mariadb数据库 如果不卸载mariadb,安装MySQL数据库的时候,会与…

第7章 面向对象基础-下(枚举,包装,抽象类)

7.2 枚举 7.2.1 概述 某些类型的对象是有限的几个&#xff0c;这样的例子举不胜举&#xff1a; 星期&#xff1a;Monday(星期一)......Sunday(星期天) 性别&#xff1a;Man(男)、Woman(女) 月份&#xff1a;January(1月)......December(12月) 季节&#xff1a;Spring(春节…

arduino使用光电开关控制电动平台回零

1.接线介绍 注意&#xff1a;NPN和PNP型光电开关的接线方式不同 首先&#xff0c;得在arduino上设置一个数字量接口&#xff0c;例如&#xff1a; #define PHOTO_SWITCH_PIN 53 // 假设光电开关连接到数字引脚53 然后根据你的情况把白色的或者黑色的线接到该引脚上&#x…

PCIe系统阻抗控制85还是100的验证

高速先生成员--周伟 还记得上次的文章&#xff0c;PCIe阻抗控制&#xff0c;85ohm和100ohm哪个好&#xff0c;文章里面只讲到目前的主要问题&#xff0c;但没有给出具体怎么解决这个问题&#xff0c;今天我们就通过无源仿真的方式来聊聊上次那个问题的最终解决方案。 目前我们看…

单片机开发常见算法

1.基础数学运算算法 比如加减乘除、求和、求平均、求最大/最小值等简单的数学运算&#xff0c;这些是算法中的基础&#xff0c;经常用于数据处理和计算。 2.排序算法 如冒泡排序、选择排序、插入排序等&#xff0c;用途是将数据按照升序或降序进行排列。 3.滤波算法 如均值…