Skywalking 入门与实战

一 什么是 Skywalking?

Skywalking 时一个开源的分布式追踪系统,用于检测、诊断和优化分布式系统的功能。它可以帮助开发者和运维人员深入了解分布式系统中各个组件之间的调用关系、性能瓶颈以及异常情况,从而提供系统级的性能优化和故障排查。

1.1 为何使用 Skywalking

  1. 监控分布式系统:在分布式系统中,各个组件之间的调用链错综复杂,难以进行全面的监控和诊断。SkyWalking 提供了完善的分布式追踪功能,可以帮助开发者全面了解分布式系统的调用关系、性能瓶颈和异常情况,提供系统级的监控和诊断能力。
  2. 异常排查:当系统发生异常或错误时,需要及时定位问题并进行配查。SkyWalking 可以捕获和记录系统中的异常情况,并在调用链中标记异常的来源和传播路径,帮助开发者快速定位问题和解决问题。

1.2 同类产品分析

  1. pinpoint:韩国团队开发,优点:UI丰富。缺点:探针收集的数据粒度非常细,但性能损耗大。
  2. CAT:大众点评开发,优点:报表功能强大。缺点:有业务侵入性、代码比较老旧。
  3. Zipkin:Twitter 公司开发,它的优点:轻松接入 Spring Cloud 官方推荐 APM(Application Performance Management,系统性能管理)系统。缺点:有一定侵入性,但比 CAT 框架强一些。
  4. Skywalking:国人开发,Apache 孵化和运营。它的优点:无侵入、性能优秀、社区活跃、支持广泛、中文文档比较齐全。

1.3 Skywalking 组成

  1. 探针(Agent):提供了系统的原始数据。
  2. OAP 服务:Observability Analysis Platform,可观性分析平台。它的功能主要有两个:
    a. 收集数据、加工处理并持久化。
    b. 给 UI 界面提供查询服务。
  3. UI界面:展示数据信息

1.4 Skywalking 本质

Skywalking 本质是一个 APM(Application Performance Management, 系统性能管理)系统

而 APM 通常是实现 Open Tracing 标准的系统,OpenTracing 是一个开放标准和规范,用于实现分布式应用程序中的追踪和调用链分析。它提供了一种统一的API 和工具,使开发者能够在不同的应用程序中实现分布式追踪功能,并将各个组件之间的调用关系和性能指标汇总起来,用于分析和监控应用程序的性能。

OpenTracing 中主要包含了 Tracing 试图,Tracing 视图有两个明显的优点:

1. 清晰的看出每个模块的执行时长。

2. 清晰的看到问题和发现问题。

普通试图:

OpenTracing 试图:

 二、Skywalking 服务安装与启动

Skywalking 支持的数据库有很多,例如 ElasticSearch、H2、MySQL、PostgreSql 等,但因为 ElasticSearch(下面简称 ES) 优秀的搜索性能,所以他几乎是 SkyWalking 的不二选择。

因此对于 Skywalking 的安装主要分为以下几步:
1. 安装并启动 ES

2. 安装并运行 Skywalking

  • 运行 Skywalking 后端服务
  • 运行 Skywalking UI 服务

2.1 ES 安装并启动

2.1.1 下载并解压 ES

ES 官方下载地址:Elasticsearch 8.9.2 | Elastic

选择对应的平台进行下载:

下载完成之后,解压下载包

解压之后的目录文件如下:

  • bin:可执行脚本文件,包括启动服务命令,插件管理,函数命令
  • config:配置文件目录,如ES配置、角色配置、JVM 配置等。
  • lib:ES 所依赖的 jar 包库。
  • data:默认的数据库存放目录,包含所有节点、分片、索引、文档的所有数据。
  • logs:默认的日志存储路径
  • modules:包含所有ES 包含的模块,如 Cluster、Discovery、Indices
  • plugins:所有安装的插件的目录

2.1.2 删除环境变量

删除环境变量中配置的,Java 类中的 dt.jar 和 tool.jar,如果未配置这两个变量,那么此步骤可以忽略。

高版本的 Java lib 中未包含这两个 jar 包,如果不删除,那么 ES 会判断和使用这两个jar 包,然后启动就会出错。

2.1.3 预启动 ES 

进入 bin 路径,Windows 系统双击 elasticsearch.bat 进行启动:

预启动是为了在配置文件中生成相关配置信息

等ES 启动之后,关闭控制,关闭ES服务。 

2.1.4 关闭 HTTPS 认证

在配置文件 config/elasticsearch.yml 中将 xpack.security.htttp.ssl 中的 enabled 改为 "false" :

2.1.5 关闭授权登录

在 config/elasticsearch.yml 配置文件中将 xpack.security.enabled 改为 "false":

2.1.6 再次启动 ES

2.1.7 验证 ES

在网页中输入 :http://localhost:9200/ 可以看到如下信息就说明 ES启动成功

2.2 Skywalking 安装并启动

2.2.1 下载并解压 Skywalking

下载并解压 Skywalking,官方下载地址:Index of /dist/skywalking (apache.org)

解压后的目录:

  • bin:包含了启动和运行 SkyWalking 的可执行程序和脚本文件。
  • config:包含了 SkyWalking 的配置文件,用于配置 SkyWalking 的各种参数和选项。
  • oap-libs:包含了 SkyWalking OAP(Open Analysis Platform)相关的库文件
  • webapp:包含了 SkyWalking Web 模块的文件,用于运行和展示 SkyWalking 的监控数和分析结果。
  • tools:包含了一些辅助工具和脚本,用于帮助安装、配置和运行 SkyWalking.
  • liscenses:包含了 Apache SkyWalking APM 的开源许可证

 2.2.2 修改配置文件

config/application.yml

2.2.3 启动 Skywalking

双击安装目录下的 bin/startup.bat 就可以启动,之后再浏览器访问:打开 Skywalking 的 UI 控制台:

注: 解压后的路径中不要带中文,否则肯能会报错: No files in meter-analyzer-config

三、上传数据值 Skywalking

3.1 下载 Agent 代理

官方下载地址:Downloads | Apache SkyWalking

下载解压 agent 得到以下文件

3.2 项目添加 Agent 代理

添加如下内容 

-javaagent:D:\SCComponent\Skywalkings\skywalking-agent\skywalking-agent.jar
-Dskywalking.agent.service_name=provider 
-Dskywalking.collector.backentd_service=127.0.0.1:11800
  • -javaagent:填写你本地 skywalking-agent.jar 的路径
  • -Dskywalking.agent.service_name:服务名称,在 Skywalking 端展示时使用。
  • -Dsky walking。collector。backend_service:Skywalking 日志收集地址,固定端口号 11800,不需要修改。

为每个项目配置好上述内容后,再次访问 Skywalking 控制台就可以看到调用信息了,如图:

四、Skywalking 控制台说明

服务说明 UI 如下:

服务详情指标:

五、告警功能

告警功能开启和实现,需要以下两步: 

5.1 设置告警规则

告警规则的设置需要在 config/alarm-settings.yml 下配置,总共配置两块内容。第一块 rules 下的规则:

另外,还需要开启告警提醒的 URL 地址,如图:

5.2 编写告警提醒代码

@Slf4j
@RestController
public class AlarmController {@RequestMapping("/timeout")public void timeout() throws InterruptedException {Thread.sleep(1500);}@RequestMapping("/webhook")public void webHolk(@RequestBody List<AlarmMessage> msg) {log.error("===============================================");log.error("告警信息" + msg);}
}class AlarmMessage implements Serializable {private String scopeId;private String name;private String id0;private String id1;private String ruleName;private String alarmMessage;private long StartTime;
}

其中实体类 AlarmMessage 字段说明如下:

1. ScopeId:告警范围,取值有以下几个:

  • 0:Unknown/位置级别,表示未指定或未能确定的范围
  • 1:All/全部级别,表示所有范围或整个系统层级。
  • 2:Instance/实例级别,表示具体的服务实例。
  • 3:Service/服务级别,表示整个服务。
  • 4:Service instance/服务实例级别,表示特定服务的实例集合。
  • 5:Endpoint Name/端点名称级别,依据端点的名称进行划分。
  • 6:Endpoint/端点级别,表示特定服务的实例集合
  • 7:Database/数据库级别,表示数据库的操作或查询。
  • 8:Cache/缓存级别,表示缓存调用
  • 9:MQ/消息队列,表示消息队列的操作。

2. name:告警项目名

3. id0:Skywalking 主键标识,与 name 一一匹配

4. id1:预留字段,暂未使用

5. ruleName:告警名称,如 service_resp_time_rule

6. alarmMessage:告警内容

7. startTime:告警开始时间

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

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

相关文章

嵌入式初学-C语言-八

#接嵌入式初学-C语言-七# 分支结构 分支结构&#xff1a;又被称之为选择结构 选择结构的形式 多分支 语法&#xff1a; if(条件1) { 语句1; } else if(条件2) { 语句2; } ... else { 语句n1; }案例&#xff1a; #include <stdio.h> int main() { // 需求&#xff…

Apache、nginx

一、Web 1、概述 Web&#xff1a;为⽤户提供的⼀种在互联⽹上浏览信息的服务&#xff0c;Web 服务是动态的、可交互的、跨平台的和图形化的。 Web 服务为⽤户提供各种互联⽹服务&#xff0c;这些服务包括信息浏览服务&#xff0c;以及各种交互式服务&#xff0c;包括聊天、购物…

线程的同步互斥

互斥 互斥保证了在一个时间内只有一个线程访问一个资源。 先看一段代码&#xff1a;三个线程同时对全局变量val进行--&#xff0c;同时val每自减一次其线程局部存储的全局变量 #include <iostream> #include <thread> #include <vector> #include <uni…

Stable Diffusion WebUI本地环境搭建

一、项目代码下载 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui 二、环境配置 conda create --n stafu python3.10.6 实际上跟自己创建的环境没有关系&#xff0c;项目启动会自动复制这个环境&#xff0c;之后项目根据这个基础环境构建 也可以在自己…

C++高性能通信:图形简述高性能中间件Iceoryx

文章目录 1. 概述2. 支持一个发布者多个订阅者2.2 Iceoryx为何不支持多个发布者发布到同一个主题 3. Iceoryx的架构和数据传输示意图3.1 发布者与订阅者的通信机制3.2 零拷贝共享内存通信机制 4. 使用事件驱动机制4.1 WaitSet机制4.2 Listener机制 5. 已知限制6. 参考 1. 概述 …

ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20‘ 报错解决办法

1.查找 libstdc.so.6* find / -name libstdc.so.6*2.copy一个libstdc.so.6.0.19到/usr/lib64/下 cp /usr/lib64/libstdc.so.6 /usr/lib64/3.创建软连接 ln -sf /usr/lib64/libstdc.so.6.0.31 /usr/lib64/libstdc.so.6完毕&#xff01;

中电金信:云原生时代IT基础设施管理利器——基础设施即代码(IaC)

在数字化转型、零售业务快速发展、信创建设驱动下&#xff0c;应用架构、技术架构、基础架构都已向云原生快速演进&#xff0c;银行业IT基础设施管理产生了非常大的变化&#xff0c;当前银行业&#xff0c;正在开展新一轮的核心应用系统重构、基础平台统一建设等重点任务&#…

Linux网络:传输层协议TCP(二)三次挥手四次握手详解

目录 一、TCP的连接管理机制 1.1三次握手 1.2四次挥手 二、理解 TIME_WAIT 状态 2.1解决TIME_WAIT 状态引起的 bind 失败的方法 三、理解CLOSE_WAIT状态 一、TCP的连接管理机制 在正常情况下, TCP 要经过三次握手建立连接, 四次挥手断开连接 1.1三次握手 三次握手顾名思…

【设计模式】代理模式详解

1.简介 代理模式是常用的Java设计模式&#xff0c;该模式的特点是代理类与委托类共享相同的接口。代理类主要负责预处理消息、过滤消息、将消息转发给委托类&#xff0c;并在事后处理消息等。代理类与委托类之间通常存在关联关系&#xff0c;一个代理类对象与一个委托类对象关…

SpringBoot Mysql->达梦8 activiti6.0.0 项目迁移

全部源码&#xff1a;公众号搜索资小库&#xff0c;回复dm获取源码 1.整合达梦 1.1 达梦驱动下载 MyBatis-Plus 框架 | 达梦技术文档 (dameng.com) 1.2 数据迁移 怎么安装数据库&#xff0c;很多大佬有帖子&#xff0c;搜一下达梦先建立用户&#xff0c;使用DM管理工具 链…

SQL Server 数据误删的恢复

在日常的数据库管理中&#xff0c;数据的误删操作是难以避免的。为了确保数据的安全性和完整性&#xff0c;我们必须采取一些措施来进行数据的备份和恢复。本文将详细介绍如何在 SQL Server 中进行数据的备份和恢复操作&#xff0c;特别是在发生数据误删的情况下。假设我们已经…

使用visual studio编译C++项目时无法找到 enum中的某些项

vs 2017 编译一个cocos2dx 的老项目时&#xff0c;报错&#xff1a; 在项目中搜索关键字 ARMATURE_LOOP_COMPLETE&#xff0c;发现在文件EventType.h中是有定义的&#xff0c;是 enum Event 的一项&#xff0c;而且确认了报错的文件已经引入了这个头文件&#xff1a; 这太奇怪了…

傻瓜式PHP-Webshell免杀学习手册,零基础小白也能看懂

项目描述 一、PHP相关资料 PHP官方手册&#xff1a; https://www.php.net/manual/zh/ PHP函数参考&#xff1a; https://www.php.net/manual/zh/funcref.php 菜鸟教程&#xff1a; https://www.runoob.com/php/php-tutorial.html w3school&#xff1a; https://www.w3school…

【React】全面解析:从基础知识到高级应用,掌握现代Web开发利器

文章目录 一、React 的基础知识1. 什么是 React&#xff1f;2. React 的基本概念3. 基本示例 二、React 的进阶概念1. 状态&#xff08;State&#xff09;和属性&#xff08;Props&#xff09;2. 生命周期方法&#xff08;Lifecycle Methods&#xff09;3. 钩子&#xff08;Hoo…

Spring Cloud微服务项目统一封装数据响应体

在微服务架构下&#xff0c;处理服务之间的通信和数据一致性是一个重要的挑战。为了提高开发效率、保证数据的一致性及简化前端开发&#xff0c;统一封装数据响应体是一种非常有效的实践。本文博主将介绍如何在 Spring Cloud 微服务项目中统一封装数据响应体&#xff0c;并分享…

ValueError: invalid literal for int() with base 10: ‘a‘

ValueError: invalid literal for int() with base 10: ‘a‘ 目录 ValueError: invalid literal for int() with base 10: ‘a‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff…

基于web3区块链的名酒资产数字化、个人闲置资产收藏系统,实现联盟链、NFT数据上链、智能合约开发

系统背景&#xff1a; 国内有众多历史悠久却极具收藏价值的名酒品类&#xff0c;但是传统名酒投资存在着保真、流通和收藏三大痛点&#xff0c;极大影响了名酒产业的发展。基于区块链的分布式、不可篡改、可追溯、透明性、多方维护、交叉验证等特性&#xff0c;数据权属可以被有…

【Linux】软连接|硬链接|当前路径(.)|上级路径(..)|硬链接不能链接目录

目录 前言 软连接 ​编辑 删除源文件 快捷应用 总结 硬链接 硬链接为何不能链接目录 为什么软连接可以 软硬链接区别 当前路径(.)和上级路径(..) ​编辑 前言 在 Linux 中&#xff0c;文件的存储位置和数据&#xff08;属性内容&#xff09;是由 inode 号来唯一标…

错误:请查看是否设备未加入到证书列表或者确认证书类型是否匹配

这个问题实际上网上都有解法&#xff0c;但是可能没有那么的清楚&#xff0c;大家在各种问&#xff0c;我既然搞定了&#xff0c;就分享给大家吧网上解法&#xff1a; 开发调试需要另外创建开发证书和描述文件&#xff0c;描述文件同时绑定开发设备解读&#xff1a; 实际上这句…

electron 主进程和渲染进程

最近在整理electron 相关的项目问题&#xff0c;对自己来说也是温故知新&#xff0c;也希望能对小伙伴们有所帮助&#xff0c;大家共同努力共同进步。加油&#xff01;&#xff01;&#xff01;&#xff01; 虽然最近一年前端大环境不好&#xff0c;但是大家还是要加油鸭&#…