skywalking 简单操作文档

1.1. 基础概念

1.1.1. 概述

        SkyWalking是 apache基金会下面的一个开源 APM项目,为微服务架构和云原生架构系统设计。它通过探针自动收集所需的指标,并进行分布式追踪。通过这些调用链路以及指标,Skywalking APM会感知应用间关系和服务间关系,并进行相应的指标统计。Skywalking支持链路追踪和监控应用组件基本涵盖主流框架和容器,如国产 RPC Dubbo和 motan等,国际化的 spring boot,spring cloud。

        下面是 Skywalking的几大特点:多语言自动探针,Java,.NET Core和 Node.JS。多种监控手段,语言探针和 service mesh。轻量高效。不需要额外搭建大数据平台。模块化架构。UI、存储、集群管理多种机制可选。支持告警。优秀的可视化效果。

        Skywalking 提供 Tracing(跟踪)和 Metrics(指标)数据的获取和聚合。Metric的特点是,它是可累加的:他们具有原子性,每个都是一个逻辑计量单元,或者一个时间段内的柱状图。例如:队列的当前深度可以被定义为一个计量单元,在写入或读取时被更新统计;输入 HTTP请求的数量可以被定义为一个计数器,用于简单累加;请求的执行时间可以被定义为一个柱状图,在指定时间片上更新和统计汇总。Tracing的大特点就是,它在单次请求的范围内,处理信息。任何的数据、元数据信息都被绑定到系统中的单个事务上。例如:一次调用远程服务的 RPC执行过程;一次实际的 SQL查询语句;一次 HTTP请求的业务性 ID。总结,Metric主要用来进行数据的统计,比如 HTTP请求数的计算。Tracing主要包含了某一次请求的链路数据。

1.1.2. 优势

        Skywalking相比较其他的分布式链路监控工具,具有以下特点:社区相当活跃。Skywalking已经进入 apache孵化,目前的 start数已经超过 11K,新版本6.5.0已经发布。开发者是国人,可以直接和项目发起人交流进行问题的解决。Skywalking支持 Java,.NET Core和 Node.JS语言。相对于其他平台:比如 Pinpoint支持Java和PHP,具有较大的优势。探针无倾入性。对比 CAT具有倾入性的探针,优势较大。不修改原有项目一行代码就可以进行集成。探针性能优秀。有网友对 Pinpoint和 Skywalking进行过测试,由于 Pinpoint收集的数据过多,所以对性能损耗较大,而 Skywalking探针性能十分出色。支持组件较多。特别是对 Rpc框架的支持,这是其他框架所不具备的。Skywalking对 Dubbo、gRpc等有原生的支持,甚至连小众的 motan和 sofarpc都支持。

1.1.3. 主要概念

使用如下案例来进行 Skywalking主要概念的介绍,Skywalking主要概念包含:

  • 服务(service)
  • 端点(endpoint)
  • 实例(instance)

        上图中,我们编写了用户服务,这是一个 web项目,在生产中部署了两个节点:192.168.1.100和192.168.1.101。用户服务就是 Skywalking的服务(Service),用户服务其实就是一个独立的应用(Application),在 6.0之后的 Skywalking将应用更名为服务(Service)。用户服务对外提供的 HTTP接口/usr/queryAll就是一个端点,端点就是对外提供的接口。192.168.1.100和 192.168.1.101这两个相同服务部署的节点就是实例,实例指同一服务可以部署多个。

1.1.4. 开发需要注意的问题

        框架支持接入skywalking 作为链路监控,同时对于服务器资源不足的客户,也可以生成自定义的traceId(当然这种自定义的模块除了 能把日志串联起来,其他功能是没有的)

1、使用skywalking

增加配置luna.framework.starter.apm.skywalking.enable=true

2、使用自定义traceid

增加配置luna.framework.starter.apm.luna-trace.enable=true

        skywalking和自定义的traceId只能使用一个,默认开启的是skywalking,且两个只能有一个enable为true。一旦开启了自定义的traceId,skywalking的功能将失效。

1.2. 管理页面使用

        Skywalking的管理页面主要用于监控整个系统的状态,当出现问题时,可以快速的了解系统当前的情况,问题可能的原因。

1.2.1. 服务监控

        Skywalking可以监控服务的状态,当系统出现问题时,可以从一些关键参数,如延迟、请求成功率来快速定位问题出现的服务。

服务监控管理页面可以看到服务请求的整体状态:

1.2.2. 链路监控

链路监控处可以看到请求的具体耗时,请求的整体链路,可以快速帮助我们定位问题。

关于请求的链路有四种视图,列表、树结构、表格和 统计,可以清晰的看到整个请求链路的状态

1.2.3. 实例监控

        实例监控可以监控到具体的实例,也可以看到JVM占用的情况,当请求变慢等特殊情况出现时,可以通过分析实例JVM数据,辅助定位问题原因。

1.2.4. 端点监控

端点监控和上面的监控情况一致,可以帮助我们定位系统变慢等问题的原因。

如下,可以看到各个端点的一些数据:

1.2.5. 拓扑图

1.2.6. 告警

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

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

相关文章

Deep Learning(wu--46)

文章目录 ContentsBeginBasic逻辑回归SGD导数计算图(反向传播)向量化广播numpy Neural Network向量化激活函数梯度下降深层表示反向传播 Contents Begin Basic 逻辑回归 SGD 导数 计算图(反向传播) 向量化 广播 numpy Neural Netw…

P2392 kkksc03考前临时抱佛脚

上题干: 题目背景 kkksc03 的大学生活非常的颓废,平时根本不学习。但是,临近期末考试,他必须要开始抱佛脚,以求不挂科。 题目描述 这次期末考试,kkksc03 需要考 4 科。因此要开始刷习题集,每科都…

Elastic Search的RestFul API入门:初识mapping

本节课旨在探讨Elasticsearch中Mapping的使用。在Elasticsearch中,Mapping是定义索引中字段(Field)的数据类型和属性的过程。它为Elasticsearch提供了一种途径,以解析和处理文档中的各个字段,以便在搜索、排序和聚合等…

ElasticSearch学习笔记(狂神说)

ElasticSearch学习笔记(狂神说) 视频地址:https://www.bilibili.com/video/BV17a4y1x7zq 在学习ElasticSearch之前,先简单了解一下Lucene: Doug Cutting开发是apache软件基金会 jakarta项目组的一个子项目是一个开放…

【漏洞复现】熊海cms 存在sql注入 附poc

漏洞描述 熊海CMS 是由熊海开发的一款可广泛应用于个人博客,个人网站,企业网站的一套网站综合管理系统。 其采用前后端整合设计思路,php,Apache,mysql,前端使用Bootstrap和少许jquery前端框架开发; 网站样式设计简洁大方,整体功能点并不多,但功能正好够用;拥有一个…

CVPR 2023 精选论文学习笔记:Prefix Conditioning Unifies Language and Label Supervision

以下是根据 MECE 原则给出的四个分类标准: 1. 学习范式。学习范式是指用于训练模型的一般方法。在视觉语言模型的背景下,主要的两种学习范式是监督学习和无监督学习。 监督学习:监督学习涉及在标记的图像-文本对数据集上训练模型。标签为模型提供了明确的指导,使其能够学习…

jenkins流水线(pipline)实例

1、pipline 语法介绍 声明式的pipeline语法格式 1. 所有的声明都必须包含在pipeline{}中 2. 块只能有节段,指令,步骤或者赋值语句组成 3. 阶段:agent,stages,post,steps 4. 指令:environment&a…

LiveVIS视图库1400-如何切换数据库?默认使用的数据库是什么?如何切换到Mysql/MariaDB?

LiveVIS视图库1400-如何切换数据库?默认使用的数据库是什么?如何切换到Mysql/MariaDB? 1、切换成Mysql/Mariadb数据库1.1 连接数据库1.2 创建数据库实例1.3 配置.ini文件1.4 重启完成切换 1、切换成Mysql/Mariadb数据库 LiveVIS 默认使用 sqlite3 文件…

【Qt】判断QList链表内是否有重复数据

QList<int> listInt;listInt.push_back(1);listInt.push_back(1);listInt.push_back(2);listInt.push_back(3);qDebug().noquote() << listInt.toSet().toList();

嵌入式八股 | 笔试面试 | 校招秋招 | 题目精选

嵌入式八股精华版1.0所有216道题目如下&#xff1a; 欢迎关注微信公众号【赛博二哈】并加入嵌入式求职交流群。提供简历模板、学习路线、岗位整理等 欢迎加入知识星球【嵌入式求职星球】获取完整嵌入式八股。 提供简历修改、项目推荐、求职规划答疑。另有各城市、公…

vue3使用TinyMCE富文本

TinyMCE 介绍 TinyMCE 是一个功能强大的富文本编辑器&#xff0c;它允许您在网页应用程序中创建和编辑具有丰富格式的内容。官网 github项目地址 文档地址 下载tinymce文件 从网页下载最新版zip&#xff0c;也可以打开下面链接下载。 打开网页 tinymce.zip zh-Hans 将下载…

美食网站基本结构

代码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>美食网站首页</title> <link rel"stylesheet" href"https://cdn.staticfile.org/layui/2.5.6/css/layui.min.c…

Windows主机信息收集命令

一.常用信息搜集 whoami # 查看当前用户 net user # 查看所有用户 query user # 查看当前在线用户 ipconfig /all # 查看当前主机的主机名/IP/DNS等信息 route print # 查看路由表信息 netstat -ano # 查看端口开放情况 arp -a # 查看arp解析情况 tasklist /svc # 查看进…

有关循环依赖和三级缓存的这些问题,你都会么?(面试常问)

一、什么是循环依赖 大家平时在写业务的时候应该写过这样的代码。 其实这种类型就是循环依赖&#xff0c;就是AService 和BService两个类相互引用。 二、三级缓存可以解决的循环依赖场景 如上面所说&#xff0c;大家平时在写这种代码的时候&#xff0c;项目其实是可以起来的&am…

【Java+SQL Server】前后端连接小白教程

目录 &#x1f4cb; 流程总览 ⛳️【SQL Server】数据库操作 1. 新建数据库text 2. 新建表 3. 编辑表 ⛳️【IntelliJ IDEA】操作 1. 导入jar包 2. 运行显示错误 &#x1f4cb; 流程总览 ⛳️【SQL Server】数据库操作 打开SQL Server数据库-->sa登录-->新建数据库…

c 实用化的文本终端实时显示摄像头视频

因为采用yuv格式&#xff0c;帧率都很低。图像会拖影。把图像尺寸尽量缩小&#xff0c;能大大改善。现在最麻烦的是图像上有黑色的闪影&#xff0c;不知是为啥&#xff1f;如是framebuffer引起的就无解了。终于找到问题了&#xff0c;是在显示前加了一条用黑色清屏造成的&#…

31 - MySQL调优之SQL语句:如何写出高性能SQL语句?

从今天开始&#xff0c;我将带你一起学习 MySQL 的性能调优。MySQL 数据库是互联网公司使用最为频繁的数据库之一&#xff0c;不仅仅因为它开源免费&#xff0c;MySQL 卓越的性能、稳定的服务以及活跃的社区都成就了它的核心竞争力。 我们知道&#xff0c;应用服务与数据库的交…

【开源】基于Vue和SpringBoot的个人健康管理系统

项目编号&#xff1a; S 040 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S040&#xff0c;文末获取源码。} 项目编号&#xff1a;S040&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 健康档案模块2.2 体检档案模块2.3 健…

如何处理枚举类型(下)

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 上一篇我们通过编写MyB…

Day41力扣打卡

打卡记录 第 N 位数字&#xff08;找规律&#xff09; 链接 class Solution:def findNthDigit(self, n: int) -> int:count, digit, start 9, 1, 1while n > count:n - countdigit 1start * 10count start * 9 * digitnum start (n - 1) // digitreturn int(str(n…