SkyWalking核心
SkyWalking是一个开源的可观测性平台,用于收集、分析、聚合和可视化来自服务和云原生基础架构的数据。SkyWalking提供了一种简单的方法来保持我们的分布式系统的清晰视图,甚至跨云。它是一个现代的APM,专门为云原生的、基于容器的分布式系统而设计。
使用 SkyWalking 时,用户可以看到服务与端点之间的拓扑结构以及每个服务、服务实例和端点的性能指标,还可以设置报警规则。
核心概念解释
服务(service):表示对请求提供相同行为的一组工作负载。在使用agent或 SDK 的时候,我们可以定义服务的名字。我们可以这样理解。
服务实例(service instance)上述的一组工作负载中的每一个工作负载称为一个实例, 当我们使用SkyWalking的agent 监控一个应用的时候,这个应用就是一个服务实例。一个服务可以包含一个或者多个与其对应的实例。
端点(Endpoint) :对于特定服务所接收的请求路径, 如HTTP的URI路径和gRPC服务的类名 + 方法签名,我们也可以理解为它是一个服务中的其中一个接口。我们可以理解为用户通过Endpoint触发了一个trace。
探针(agent):集成到目标系统中的代理或SDK库,它负责收集遥测数据,包括链路追踪和性能指标。
进程(process): 一个操作系统进程。在某些情况下,实例(service instance)不是一个进程,就像一个 Kubernetes中的pod可能包含多个进程。
层(layer):层表示计算机科学中的抽象框架,例如操作系统(OS_LINUX层)和Kubernetes(k8s层)。层是服务(service)的抽象集合。一个服务通常只属于一个层,但在某些场景中,一个服务可以属于多个层。例如,一个服务可以部署在一个Istio服务网格中,它可以属于网格和mesh-dp(网格数据平面)层。
追踪(Trace):是指一个请求或者一个操作从开始到结束的完整路径。它涵盖了分布式系统中所有相关组件的调用关系和性能信息。它不是一个具体的数据模型,而是多个 Segment 串起来表示的逻辅对象。在一条链路中 (Trace) ,无论请求分布于多少不同的进程中,这个 Traced 都不会改变。
追踪片段(TraceSegment ):是一个介于 Trace 与 Span 之间的概念,它是一条Trace 的一段,是组成 Trace 的基本单元,Trace 里可以包含多个 TraceSegment 。我们可以理解为TraceSegment 表示一个JVM(以Java应用为例) 进程内的一个线程中的所有操作的集合。
跨度(Span):是Trace的组成部分之一, 表示具体的某一个操作,可以是一个方法调用、一个HTTP请求或者其他类型的操作。一个TraceSegment 包含多个Span,而组合多个TraceSegment 就可以构成一个完整的Trace。Span可以包含多种类型,包括:
- Entry Span(入口跨度):表示请求进入系统的第一个组件,通常是客户端发起的请求。
- Exit Span(出口跨度):表示请求离开系统的最后一个组件,通常是系统对外提供的服务。
- Local Span(本地跨度):表示请求在系统内部的一个组件间的调用。
关于Trace、Span和TraceSegment更详细的信息可以参考文章
一文搞定SkyWalking 中Trace、Tracesegment 和 Span 的关系,非常中重要!-CSDN博客
观测性相关概念解释
Tracing: 支持SkyWalking原生数据格式以及v1和v2格式的Zipkin跟踪。
Metrics: SkyWalking支持成熟的度量格式,包括原生度量格式、OTEL度量格式和Telegraf格式。SkyWalking与Service Mesh平台(通常为Istio和Envoy)集成,以在数据平面或控制平面中构建可观测性。此外,SkyWalking本机代理可以在指标模式下运行,这大大提高了性能。
Logging: 包括从磁盘或通过网络收集的日志。本地代理可以自动将跟踪上下文与日志绑定,或者使用SkyWalking通过文本内容绑定跟踪和日志。
Profiling:Profiling是一个强大的度量分析工具,可以帮助开发人员从代码行的角度理解应用程序的性能。SkyWalking提供捆绑在本地语言代理和独立ebpf代理中的profiling功能。
Event:事件是一种特殊的数据,用于记录系统中的重要时刻,如版本升级、配置变更等。将事件与指标联系起来可以帮助解释指标中的波峰或波谷,将事件与跟踪和日志联系起来可以帮助排除根本原因。
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!