【SkyWalking从入门到精通】第74篇:SkyWalking 9.x新特性——K8s原生集成、Continuous Profiling与Layer概念

发布时间:2026/7/29 1:49:30
【SkyWalking从入门到精通】第74篇:SkyWalking 9.x新特性——K8s原生集成、Continuous Profiling与Layer概念 !-title: “SkyWalking 9.x新特性——K8s原生集成、Continuous Profiling与Layer概念”series: “Apache SkyWalking实战全解析”episode: 74publish_date: “2026-07-02”author: “技术博客作者”tags: [“SkyWalking”, “9.x”, “Kubernetes”, “Continuous Profiling”, “eBPF”, “Layer”]description: “深入解析SkyWalking 9.x版本的重大特性Kubernetes原生指标集成、基于eBPF的持续性能分析、全新UI设计、Layer概念引入与网络监控功能展望SkyWalking的未来发展方向。”prev_article: “文章073_SkyWalking_8x新特性全解析.md”next_article: “文章075_SkyWalking生产实践避坑指南.md”–下一篇【第73篇】SkyWalking 8.x新特性全解析——浏览器监控、eBPF、MAL与Satellite上一篇【第75篇】SkyWalking生产实践避坑指南——填坑记之Agent不上报、Trace丢失、告警不触发一、9.x的定位——从APM到全栈可观测性平台8.x可以称为扩展期在APM的基础上增加了前端、eBPF、MAL和Satellite。而9.x是平台化的版本——它不再只是一个针对应用的监控工具而是能够覆盖从内核到应用、从基础设施到业务的完整可观测性平台。用一句时髦的话说SkyWalking 9.x的目标是成为可观测性的唯一面板。二、Kubernetes原生指标集成2.1 K8s Cluster → SkyWalking 的映射------------------------------------------------------------------ | Kubernetes资源到SkyWalking Layer的映射 | ------------------------------------------------------------------ | | | Kubernetes域 SkyWalking域 | | ─────────────────────────────────────────────────────────────── │ | | | ┌──────────────────┐ ┌──────────────────┐ │ | │ Namespace │ │ ServiceGroup (新)│ │ | │ (default/prod) │ ──────→ │ e.g. production │ │ | └──────────────────┘ └──────────────────┘ │ | | | ┌──────────────────┐ ┌──────────────────┐ │ | │ Service │ │ Service │ │ | │ (k8s service) │ ──────→ │ (已有概念) │ │ | └──────────────────┘ └──────────────────┘ │ | | | ┌──────────────────┐ ┌──────────────────┐ │ | │ Deployment │ │ ServiceInstance │ │ | │ (deploy/stateful)│ ──────→ │ (已有概念) │ │ | └──────────────────┘ └──────────────────┘ │ | | | ┌──────────────────┐ ┌──────────────────┐ │ | │ Pod │ │ Process (新) │ │ | │ │ ──────→ │ (进程级粒度) │ │ | └──────────────────┘ └──────────────────┘ │ | | ------------------------------------------------------------------2.2 接入K8s监控# 部署SkyWalking K8s ExporterapiVersion:apps/v1kind:Deploymentmetadata:name:skywalking-k8s-exporternamespace:monitoringspec:replicas:1selector:matchLabels:app:skywalking-k8s-exportertemplate:metadata:labels:app:skywalking-k8s-exporterspec:serviceAccountName:skywalking-k8s-exportercontainers:-name:exporterimage:apache/skywalking-kubernetes-event-exporter:9.7.0env:-name:SW_OAP_ADDRESSvalue:skywalking-oap.monitoring:11800-name:SW_K8S_CLUSTER_NAMEvalue:prod-cluster-01-name:SW_K8S_WATCH_NAMESPACESvalue:default,production,staging-name:SW_K8S_SYNC_PERIODvalue:60# 每60秒同步一次2.3 K8s监控指标K8s原生监控指标 集群级别: - k8s_cluster_cpu_usage # 集群CPU使用率 - k8s_cluster_memory_usage # 集群内存使用率 - k8s_cluster_pod_count # Pod数量 节点级别: - k8s_node_cpu_usage # 节点CPU - k8s_node_memory_usage # 节点内存 - k8s_node_disk_usage # 节点磁盘 Pod级别: - k8s_pod_cpu_usage # Pod CPU - k8s_pod_memory_usage # Pod内存 - k8s_pod_restart_count # Pod重启次数 部署级别: - k8s_deployment_replicas # 副本数 - k8s_deployment_ready_replicas # 就绪副本数三、Continuous Profiling —— 持续性能分析8.x的Profiling是按需触发手动或条件触发9.x进化到了持续进行。3.1 持续Profiling的架构------------------------------------------------------------------ | Continuous Profiling 架构 | ------------------------------------------------------------------ | | | ┌───────────────────────────────────────────────────────────┐ │ | │ Kubernetes Node │ │ | │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ | │ │ Pod A │ │ Pod B │ │ Pod C │ │ │ | │ │ Rover │ │ Rover │ │ Rover │ │ │ | │ │ (eBPF) │ │ (eBPF) │ │ (eBPF) │ │ │ | │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ | │ │ │ │ │ │ | │ │ on-CPU / │ │ │ │ | │ │ off-CPU │ │ │ │ | │ │ profiling │ │ │ │ | │ │ │ │ │ │ | └───────┼──────────────┼──────────────┼────────────────────────┘ │ | │ │ │ │ | └──────────────┼──────────────┘ │ | │ │ | ↓ │ | ┌───────────────────────────────────────────────────────────┐ │ | │ OAP Server │ │ | │ ┌─────────────────────────────────────────────────────┐ │ │ | │ │ Profiling Data Analyzer │ │ │ | │ │ - 聚合周期性采样数据 │ │ │ | │ │ - 生成火焰图 │ │ │ | │ │ - 计算CPU/内存热点 │ │ │ | │ │ - 持续追踪性能变化 │ │ │ | │ └─────────────────────────────────────────────────────┘ │ │ | └───────────────────────────────────────────────────────────┘ │ | | ------------------------------------------------------------------3.2 持续Profiling vs 按需Profiling------------------------------------------------------------------ 两种Profiling模式的对比 ------------------------------------------------------------------ | | | 维度 按需Profiling 持续Profiling (9.x) | | ─────────────────────────────────────────────────────────────── │ | 触发方式 手动/条件 持续运行 | | 数据窗口 固定(如5分钟) 无限(轮转) | | 历史数据 只有触发的时段 完整的性能历史 | | 趋势分析 无法做 可以做! | | 资源开销 0(不运行时) 低(持续但轻量) | | 实现方式 Java线程栈 eBPF内核采样 | | | | 典型场景: | | ┌──────────────────────────────────────────────────────────┐ │ | │ 按需: 这个接口为什么突然变慢了 │ │ | │ 持续: 这个服务的性能在过去一周有什么变化趋势 │ │ | │ 昨天发布后的CPU热点变化是什么 │ │ | └──────────────────────────────────────────────────────────┘ │ | | ------------------------------------------------------------------3.3 部署Rover (eBPF Profiling Agent)# 部署SkyWalking Roverhelm repoaddskywalking https://apache.jfrog.io/artifactory/skywalking-helm helm upgrade--installrover skywalking/rover\--namespacemonitoring\--setbackend.addrskywalking-oap:11800\--setprofiling.enabledtrue\--setprofiling.onCputrue\--setprofiling.offCputrue\--setprofiling.interval10# 采样间隔秒四、Layer概念 —— 重新定义服务层级4.1 为什么需要LayerSkyWalking 9.x引入了Layer这一全新概念------------------------------------------------------------------ Layer概念的引入 ------------------------------------------------------------------ | | | 9.x之前没有Layer | | ┌──────────────────────────────────────────────────────┐ │ | │ 所有服务混在一起显示 │ │ | │ 无法区分这是一个K8s Node还是Java微服务 │ │ | │ 拓扑图杂乱信息密度过高 │ │ | └──────────────────────────────────────────────────────┘ │ | | | 9.x之后引入Layer | | ┌──────────────────────────────────────────────────────┐ │ | │ Layer 1: K8S Layer │ │ | │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ | │ │ Node1 │ │ Node2 │ │ Node3 │ │ │ | │ └──────────┘ └──────────┘ └──────────┘ │ │ | │ │ │ | │ Layer 2: Service Mesh Layer │ │ | │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ | │ │ Envoy A │ │ Envoy B │ │ Envoy C │ │ │ | │ └──────────┘ └──────────┘ └──────────┘ │ │ | │ │ │ | │ Layer 3: General Layer (Application) │ │ | │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ | │ │Order Svc │ │User Svc │ │Pay Svc │ │ │ | │ └──────────┘ └──────────┘ └──────────┘ │ │ | └──────────────────────────────────────────────────────┘ │ | | ------------------------------------------------------------------4.2 Layer的定义# Layer类型定义# SkyWalking 9.x 预定义了以下Layer:K8S:# Kubernetes层-k8s-cluster-k8s-node-k8s-service-k8s-podMESH:# Service Mesh层-envoy-proxyMESH_DP:# Mesh控制面-istiodGENERAL:# 通用应用层-所有微服务应用FAAS:# 函数计算层-lambda functionsDATABASE:# 数据库层-mysql-postgresqlCACHE:# 缓存层-redisMQ:# 消息队列层-kafka-rabbitmq# 自定义Layer通过Agent配置agent.service_layerGENERAL五、全新UI5.1 UI的重大改进------------------------------------------------------------------ | SkyWalking 9.x UI的主要改进 | ------------------------------------------------------------------ | | | 改进1: Dashboard | | ┌────────────────────────────────────────────────────────────┐ │ | │ 新增: │ │ | │ - 可自定义的Dashboard │ │ | │ - 服务列表视图卡片列表模式 │ │ | │ - Layer切换器快速切换不同层级 │ │ | │ - Kubernetes拓扑图 │ │ | └────────────────────────────────────────────────────────────┘ │ | | | 改进2: 拓扑图 | | ┌────────────────────────────────────────────────────────────┐ │ | │ 新增: │ │ | │ - 多层级拓扑K8s/Mesh/App独立显示 │ │ | │ - 节点标注健康状态、错误率 │ │ | │ - 时间轴回放 │ │ | │ - 导出功能 │ │ | └────────────────────────────────────────────────────────────┘ │ | | | 改进3: Trace查询 | | ┌────────────────────────────────────────────────────────────┐ │ | │ 新增: │ │ | │ - Trace列表页改版 │ │ | │ - 支持多条件组合查询 │ │ | │ - Trace对比功能 │ │ | │ - Profiling结果嵌入Trace页面 │ │ | └────────────────────────────────────────────────────────────┘ │ | | ------------------------------------------------------------------六、网络监控功能# 9.x的网络监控# 通过eBPF实现网络层可观测性# 监控维度:# 1. 网络延迟network_latency_avg# 平均网络延迟network_latency_p99# P99网络延迟# 2. 网络流量network_bytes_sent# 发送字节数network_bytes_recv# 接收字节数# 3. 网络错误network_errors# 网络错误数network_retrans# TCP重传次数重要!# 4. 连接状态network_connections# 连接数network_new_connections# 新连接速率七、9.x升级指南# # 从8.x升级到9.x的注意事项# # 1. 存储变更# - 新增Layer相关的索引# - Process指标新增# - 建议使用干净的ES集群# 2. Agent配置变更agent.service_layerGENERAL# 新增: 设置Layeragent.kubernetes.namespacedefault# 新增: K8s感知# 3. OAP配置变更# - envoy-mesh 变为 mesh# - 新增 k8s-event 模块# 4. UI变更# - Dashboard模板有较大的JSON格式变化# - 自定义Dashboard需要手动迁移八、总结SkyWalking 9.x标志着从APM到全栈可观测性平台的关键转变特性价值K8s原生集成统一基础设施应用监控Continuous Profiling持续的性能洞察Layer概念多层级清晰展示新UI更好用的操作体验网络监控更底层的可观测性下一篇【第73篇】SkyWalking 8.x新特性全解析——浏览器监控、eBPF、MAL与Satellite上一篇【第75篇】SkyWalking生产实践避坑指南——填坑记之Agent不上报、Trace丢失、告警不触发