可观测之调用链Skywalking

简介

分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。
提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。

  • 多种监控手段。可以通过语言探针和 service mesh 获得监控是数据。

  • 多个语言自动探针。包括 Java,.NET Core 和 Node.JS。

  • 轻量高效。无需大数据平台,和大量的服务器资源。

  • 模块化。UI、存储、集群管理都有多种机制可选。

  • 支持告警。

  • 优秀的可视化解决方案。

官方中文文档:https://skyapm.github.io/document-cn-translation-of-skywalking/zh/8.0.0/

下面我们简单来使用下

部署

这里采用docker- composet进行部署

version: '3.3'
services:skywalking-oap:image: apache/skywalking-oap-server:8.0.1-es7container_name: skywalking-oaprestart: alwaysports:- 11800:11800- 12800:12800environment:SW_STORAGE: h2skywalking-ui:image: apache/skywalking-ui:8.0.1container_name: skywalking-uidepends_on:- skywalking-oaplinks:- skywalking-oaprestart: alwaysports:- 8080:8080environment:SW_OAP_ADDRESS: skywalking-oap:12800

上面安装了server端和ui控制台

go2sky

skywalking是业界比较常用的一款APM监控工具,采用java开发,对java应用适配比较好,应用不需要埋点上报,只需要在启动时加上 -javaagent: 参数即可。
而对于go应用想要上报指标到skywalking,则需要通过埋点的方式注入。skywalking官方提供了golang版的库github.com/SkyAPM/go2sky

demo代码:https://github.com/SkyAPM/go2sky/blob/38c3b84741dd6c0609965e9df0fcc633915d3ea5/test/e2e/example-server/main.go

和所有的链路监控工具一样,skywalking也遵循Open Tracing协议,首先需要创建一个Trace,表示一个调用链,然后再调用链上创建span和子span,每个span表示一次调用,因为span和子span是有关联关系的,所以通过span和子span可以了解链路的上下游调用情况。

在go-sky里,可以创建三种类型的span

LocalSpan:可以用来表示本程序内的一次调用。

span, ctx, err := tracer.CreateLocalSpan(context.Background())

EntrySpan:用来从下游服务提取context信息。

span, ctx, err := h.tracer.CreateEntrySpan(r.Context(), getOperationName(h.name, r), func() (string, error) {return r.Header.Get(propagation.Header), nil
})

ExitSpan:用来向上游服务注入context信息。

span, err := t.tracer.CreateExitSpan(req.Context(), getOperationName(t.name, req), req.Host, func(header string) error {req.Header.Set(propagation.Header, header)return nil
})

其实在发起http请求时,也是注入式地上报skywalking,只不过通过github.com/SkyAPM/go2sky/plugins/http这个包进行了封装而已,其核心逻辑是创建span,并将span信息写入到header里来传递到上游服务。
Server端在处理请求时,其核心逻辑是从header里解析出下游的span信息,并基于此构造自己的span,并将span上报到skywalking。

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

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

相关文章

HTTPS连接过程中的中间人攻击

HTTPS连接过程中的中间人攻击 HTTPS连接过程中间人劫持攻击 HTTPS连接过程 https协议就是httpssl/tls协议,如下图所示为其连接过程: HTTPS连接的整个工程如下: https请求:客户端向服务端发送https请求;生成公钥和私…

矩阵置零(力扣)思维 JAVA

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]] 输入:matrix [[0,1,2,0],[3,4,5,2],[…

[ 华为云 ] 云计算中Region、VPC、AZ 是什么,他们又是什么关系,应该如何抉择

前几天看到一个问答帖,我回答完了才发现这个帖子居然是去年的也没人回复,其中他问了一些华为云的问题,对于其中的一些概念,这里来总结讲解一下,希望对学习华为云的小伙伴有所帮助。 文章目录 区域(Region&a…

计算机基础专升本笔记四 计算机系统

计算机基础专升本笔记四 计算机系统 计算机系统 计算机系统由计算机硬件系统和计算机软件系统 组成。且是按照存储程序的方式工作的。计算机硬件就是由各种电子器件按照一定逻辑连接而成,看的见摸得着,是计算机系统的物质基础,计算机软件系统…

# jellyfin安装设置使用散记

jellyfin安装设置使用散记 文章目录 jellyfin安装设置使用散记0 软件简介1 安装2 视频转码问题2.1 局域网转码情况测试(不同网段)2.2 局域网jellyfin app默认转码问题解决2.3 外网转码情况测试 3 一些坑4 插件5 最后 0 软件简介 Jellyfin 是一个自由的软…

UDS之11服务

11服务: 功能:控制MCU进行重启,重启分为硬重启和软重启,11服务一般代表软重启,虽然它里面有个子服务是硬件重启,这里需要注意下;硬重启在日常工作中一般代表B重启。命令格式(请求&am…

LiveGBS流媒体平台GB/T28181功能-视频直播流媒体平台分屏展示设备树分组树记录上次分屏播放记录

LiveGBS视频直播流媒体平台分屏展示设备树分组树记录上次分屏播放记录 1、分屏展示1.1、单屏1.2、四分屏1.3、九分屏1.4、十六分屏 2、分屏记录3、搭建GB28181视频直播平台 1、分屏展示 LiveGBS分屏页面支持,多画面播放,支持单屏、四分屏、九分屏、十六…

python中的os._exit()、sys.exit()和exit()/quit()函数

python中的os._exit()、sys.exit()和exit()/quit()函数 os._exit() 官方文档https://docs.python.org/zh-cn/3/library/os.html#os._exit 语法格式: os._exit(n) 以状态码 n 退出进程(process),不会调用清理处理程序&#xf…

GPT-4 模型详细教程

GPT-4(Generative Pretrained Transformer 4)是 OpenAI 的最新语言生成模型,其在各类文本生成任务中表现优秀,深受开发者和研究者喜爱。这篇教程将帮助你理解 GPT-4 的基本概念,并向你展示如何使用它来生成文本。 什么…

python变量及更新

在Python中,变量可以通过赋值操作符()来进行赋值。变量赋值是将一个值或表达式绑定到变量名上。 例如,下面的代码将整数10赋值给变量x: x 10 在这个例子中,x是变量名,10是要赋给x的值。 变量还…

Java-API简析_java.net.Proxy类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/131881661 出自【进步*于辰的博客】 因为我发现目前,我对Java-API的学习意识比较薄弱…

Linux6.13 Docker LNMP项目搭建

文章目录 计算机系统5G云计算第四章 LINUX Docker LNMP项目搭建一、项目环境1.环境描述2.容器ip地址规划3.任务需求 二、部署过程1.部署构建 nginx 镜像2.部署构建 mysql 镜像3.部署构建 php 镜像4.验证测试 计算机系统 5G云计算 第四章 LINUX Docker LNMP项目搭建 一、项目…

MySQL 索引的优缺点及索引注意事项

MySQL索引是数据库中用于加快数据检索速度的一种数据结构。它在数据库表中的列上创建一个索引,以便数据库可以更快地查找和访问数据。 索引的优缺点 优点: 快速检索:索引可以大大减少数据库查询的时间,特别是在大型表中。通过使…

sqlite3 插入数据

文章目录 需求,操作1.进入sqlite终端2.打开数据库3.执行插入语句。4.查看是否成功 最近有项目在用sqlite3,这个嵌入式数据库,不是很熟练,连个插入数据的语句都得百度哈哈。 记录下,加深记忆,给同样小白的人…

第54步 深度学习图像识别:MLP-Mixer建模(Pytorch)

基于WIN10的64位系统演示 一、写在前面 (1)MLP-Mixer MLP-Mixer(Multilayer Perceptron Mixer)是Google在2021年提出的一种新型的视觉模型结构。它的主要特点是完全使用多层感知机(MLP)来处理图像&#…

Element-UI下拉多选框回显

1、v-model绑定下拉框 <el-form-item label"项目成员" prop"members"><el-select v-model"form.members" placeholder"请选择项目成员" multiple clearable:style"{width: 100%}" change"userNameSelect"…

单行多行文本溢出显示省略号

在CSS中&#xff0c;你可以使用text-overflow属性来实现文本溢出显示省略号。同时&#xff0c;你还需要结合white-space和overflow属性来控制文本的换行和溢出隐藏。下面分别介绍单行和多行文本溢出显示省略号的方法&#xff1a; 单行文本溢出显示省略号&#xff1a; 对于单行…

【CSS】box-shadow 属性

box-shadow 是 CSS 属性&#xff0c;用于为元素添加一个阴影效果&#xff0c;使元素看起来浮起或有层次感。 该属性允许设置一个或多个阴影效果&#xff0c;其语法如下&#xff1a; box-shadow: h-shadow v-shadow blur spread color inset;h-shadow&#xff1a;水平阴影的位…

3dsmax制作一个小人

文章目录 步骤起阶五官手臂短袖添加头发、头饰BodyPaint软件贴图导入到3dsmax 渲染 步骤 起阶 五官 手臂 短袖 添加头发、头饰 BodyPaint软件贴图 寻找网络贴图&#xff0c;用PS切割&#xff0c;用BodyPaint恢复纹理 导入到3dsmax 渲染

【三维点云处理】顶点、面片、邻接矩阵、邻接距离矩阵以及稀疏存储概念

文章目录 vts和faces基础知识vertices-节点&#xff08;3是点的三维坐标&#xff09;faces-面片&#xff08;3是构成三角形面片的3个点&#xff09; 邻接矩阵邻接距离矩阵&#xff08;NN500&#xff09;稀疏矩阵 vts和faces基础知识 vertices-节点&#xff08;3是点的三维坐标…