ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

SkyWalking Satellite 自观测仪表盘(SO11Y_SATELLITE)配置与定制实战指南

2026/9/20 1:29:19 拓冰建站 浏览量
SkyWalking Satellite 自观测仪表盘(SO11Y_SATELLITE)配置与定制实战指南 SkyWalking Satellite 自观测仪表盘SO11Y_SATELLITE配置与定制实战指南【免费下载链接】skywalkingAPM, Application Performance Monitoring System项目地址: https://gitcode.com/gh_mirrors/sky/skywalking导读本文围绕 SkyWalking 后端OAP Server内置的Satellite 自观测Self Observability仪表盘展开讲解 SkyWalking Satellite 遥测数据如何经由 OpenTelemetry Receiver 进入 OAP如何通过 MAL 表达式完成指标的计算、聚合与落库以及如何理解、校验和定制SO11Y_SATELLITE层的监控面板。读完本文你将掌握从数据链路、指标口径到面板 JSON 定制与端到端验证的完整方法可直接用于在生产环境监控 Satellite 自身的连接数、CPU、队列水位与事件吞吐。背景什么是 Satellite 自观测仪表盘SkyWalking Satellite 是一个面向云原生基础设施的遥测数据采集与转发组件它自身会以两种格式产出运行状态指标Prometheus 格式与SkyWalking 指标服务 protobuffer 格式。这些指标用于描述 Satellite 自身的连接、CPU、管道队列与事件收发状态。OAP Server 为此内置了名为Self-Observability-Satellite-Root的仪表盘Dashboard用于将上述指标可视化。从源码可见Satellite 自观测在 OAP 中被建模为一个独立的 Layer// oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java /** * Self Observability of OAP */ SO11Y_OAP(11, true), /** * Self Observability of Satellite */ SO11Y_SATELLITE(12, true),SO11Y_SATELLITE与SO11Y_OAP同属自观测体系位于 UI 左侧导航栏的Self Observability菜单分组下见 menu.yaml 中self_observability_satellite菜单项其layer即SO11Y_SATELLITE。当 OAP 收到属于该 Layer 的指标数据后仪表盘菜单会自动激活。数据流从 Satellite 到仪表盘的完整链路原文档给出的数据流分为两步结合仓库配置可以细化为如下完整链路采集与推送SkyWalking Satellite 在内部采集自身指标gRPC 连接数、CPU、队列状态、事件收发计数等并将指标推送给 SkyWalking OAP Server。接收与解析OAP Server 通过OpenTelemetry Receiverreceiver-otel接收这些指标随后按照 MALMetrics Analysis Language 表达式进行过滤、计算、聚合最终写入存储。展示UI 仪表盘以SO11Y_SATELLITE为 Layer、Service为实体类型读取聚合后的指标进行可视化。MAL 规则文件位于 meter-analyzer-config/satellite.yaml其开头的两个关键声明定义了指标的归属与命名expSuffix: service([service], Layer.SO11Y_SATELLITE) metricPrefix: satelliteexpSuffix所有指标表达式统一按service标签聚合并归属到Layer.SO11Y_SATELLITE层metricPrefix生成的指标名统一以satellite为前缀例如satellite_service_grpc_connect_count。环境搭建两处配置缺一不可1. 配置 Satellite 遥测导出器Telemetry Exporter首先需要在 SkyWalking Satellite 侧启用遥测导出器Telemetry Exporter使 Satellite 能以 SkyWalking 指标服务 protobuffer 格式或 Prometheus 格式将自身指标对外推送。具体配置方法参考 Satellite 项目文档中telemetry-exporter的 feature 示例README核心是让 Satellite 与 OAP 建立 gRPC 连接并周期上报指标。2. 启用 OAP 的 OpenTelemetry Receiver然后在 OAP 侧激活receiver-otel使 OAP 具备接收与解析该类指标的能力。原文档所指的配置详见 opentelemetry-receiver.md要点如下该 Receiver 通过OTLP gRPC 服务处理器otlphandler接收指标必须显式激活否则不生效receiver-otel: selector: ${SW_OTEL_RECEIVER:default} default: enabledHandlers: ${SW_OTEL_RECEIVER_ENABLED_HANDLERS:otlp-metrics} enabledOtelMetricsRules: ${SW_OTEL_RECEIVER_ENABLED_OTEL_METRICS_RULES:satellite}对应的环境变量等价形式export SW_OTEL_RECEIVERdefault export SW_OTEL_RECEIVER_ENABLED_HANDLERSotlp-metrics export SW_OTEL_RECEIVER_ENABLED_OTEL_METRICS_RULESsatellite需要注意receiver-otel因其推模式push mode特性只支持 MAL 规则文件中的group、defaultMetricLevel与metricsRules三个节点satellite.yaml恰好只用到了这三者中的核心部分。规则文件位于$CLASSPATH/otel-rules或meter-analyzer-config目录下OAP 在启动时加载若配置格式非法OAP 可能启动失败请务必在改动后做语法校验。自观测指标全景面板、单位与口径原文档将 Satellite 自观测建模为 OAP 中的一个Service落在Layer: SO11Y_OAP注原文此处标注为 SO11Y_OAP仓库中 satellite.yaml 的expSuffix实际归属为Layer.SO11Y_SATELLITELayer.java 中也定义了独立的SO11Y_SATELLITE(12, true)故实际应以SO11Y_SATELLITE为准。默认仪表盘共展示以下 7 项核心指标监控面板单位指标名说明数据来源Connection CountCountsatellite_service_grpc_connect_countgRPC 连接数SkyWalking SatelliteCPU (%)Percentagesatellite_service_server_cpu_utilizationCPU 使用率%SkyWalking SatelliteQueue Used CountCountsatellite_service_queue_used_count管道队列已使用数量SkyWalking SatelliteReceive Event CountCountsatellite_service_receive_event_count从下游接收的事件数SkyWalking SatelliteFetch Event CountCountsatellite_service_fetch_event_count从下游抓取的事件数SkyWalking SatelliteQueue Input CountCountsatellite_service_queue_input_count推入队列的事件数SkyWalking SatelliteQueue Output CountCountsatellite_service_send_event_count推送到上游的事件数SkyWalking Satellite指标背后的 MAL 表达式上述 7 个面板指标并非凭空而来而是由 satellite.yaml 中metricsRules逐条定义。原始指标名以sw_stl_开头来自 Satellite 暴露的底层计数/度量MAL 负责做标签聚合与语义转换metricsRules: - name: service_receive_event_count exp: sw_stl_gatherer_receive_count.sum([pipe, status, service]).increase(PT1M) - name: service_fetch_event_count exp: sw_stl_gatherer_fetch_count.sum([pipe, status, service]).increase(PT1M) - name: service_queue_input_count exp: sw_stl_queue_output_count.sum([pipe, status, service]).increase(PT1M) - name: service_send_event_count exp: sw_stl_sender_output_count.sum([pipe, status, service]).increase(PT1M) - name: service_queue_total_capacity exp: sw_stl_pipeline_queue_total_capacity.sum([pipeline, service]) - name: service_queue_used_count exp: sw_stl_pipeline_queue_partition_size.sum([pipeline, service]) - name: service_server_cpu_utilization exp: sw_stl_grpc_server_cpu_gauge - name: service_grpc_connect_count exp: sw_stl_grpc_server_connection_count对口径的理解要点事件吞吐类receive / fetch / queue input / send使用.sum([pipe, status, service])先按管道、状态、服务维度求和再通过.increase(PT1M)计算每分钟增量因此面板展示的是事件速率而非累计值队列水位类queue_total_capacity与queue_used_count按[pipeline, service]聚合求和反映当前队列的占用情况可直接用于评估背压与容量规划CPU 与连接数为 gRPC 服务端的即时度量gauge直接透传展示。值得注意的是MAL 规则中已定义了service_queue_total_capacity队列总容量指标虽然默认仪表盘未直接展示但你可以将其与service_queue_used_count配合在定制面板中计算出队列使用率。仪表盘定制so11y-root.json 结构与扩展方法原文档指出Satellite 自观测仪表盘面板配置位于/config/ui-initialized-templates/so11y_satellite/so11y-root.json仓库中的实际路径为 so11y-root.json。该文件是 OAP 启动时自动加载到 UI 的官方仪表盘模板之一整体结构如下[ { id: Self-Observability-Satellite-Root, configuration: { children: [ ... ], id: Self-Observability-Satellite-Root, layer: SO11Y_SATELLITE, entity: Service, name: Self-Observability-Satellite-Root, isRoot: true } } ]关键字段说明layerSO11Y_SATELLITE声明该仪表盘属于 Satellite 自观测层entityService仪表盘以服务为实体粒度展示指标对应satellite-serviceisRoottrue表示这是该 Layer 的根仪表盘即进入该层时的默认入口children面板的子组件列表包含Widget图表与Text说明文本两类。以首个图表 Widget 为例它通过expressions数组直接引用 MAL 生成的指标名{ x: 8, y: 2, w: 8, h: 14, i: 1, type: Widget, widget: { title: Connection Count }, graph: { type: Line, step: false, smooth: false, showSymbol: false, showXAxis: true, showYAxis: true }, expressions: [satellite_service_grpc_connect_count] }7 个指标 Widget 的布局x/y/w/h与表达式对应关系如下Widget标题表达式位置CPU (%)satellite_service_server_cpu_utilization(0,2) 8x14Connection Countsatellite_service_grpc_connect_count(8,2) 8x14Queue Used Countsatellite_service_queue_used_count(16,2) 8x14Receive Event Countsatellite_service_receive_event_count(0,16) 12x14Fetch Event Countsatellite_service_fetch_event_count(12,16) 12x14Queue Input Countsatellite_service_queue_input_count(0,30) 12x15Queue Output Countsatellite_service_send_event_count(12,30) 12x15另有 id 为8的Text组件作为面板顶部说明描述 Satellite 是“面向云原生基础设施的开源 Agent是遥测采集的推荐负载均衡器”见 backend-load-balancer.md。定制方式根据原文档你可以自定义自己的指标、表达式与仪表盘面板。实操上有两条路径修改官方模板直接编辑so11y-root.json或在 UI 的 Dashboard 编辑模式中调整但注意发行版默认禁用了仪表盘编辑需要设置环境变量SW_ENABLE_UPDATE_UI_TEMPLATEtrue才能激活编辑并保存到 OAP新增自定义仪表盘仿照模板结构新建 JSON 文件放入ui-initialized-templates目录或通过 UI 的Dashboards菜单新建。自定义 Widget 时可引用任何已由 MAL 生成的satellite_*指标也可先在satellite.yaml中扩展metricsRules定义新表达式。无论哪种方式都建议遵循 ui/README.md 中关于 Layer、Entity Type 与根仪表盘的约定只有Service/All实体类型的仪表盘可设为根同一 Layer 若存在多个根仪表盘UI 会随机选择其一因此不推荐设置多个根。验证与调试用 e2e 用例和 swctl 实测仓库的 e2e 测试为我们提供了验证 Satellite 自观测指标是否正常上报的标准姿势见 satellite-cases.yaml# 1. 校验 SO11Y_SATELLITE 层下存在服务列表 swctl --display yaml --base-urlhttp://${oap_host}:${oap_12800}/graphql service layer SO11Y_SATELLITE # 2. 校验 CPU 指标有值 swctl --display yaml --base-urlhttp://${oap_host}:${oap_12800}/graphql metrics exec \ --expressionsatellite_service_server_cpu_utilization --service-namesatellite-service # 3. 校验 gRPC 连接数指标有值 swctl --display yaml --base-urlhttp://${oap_host}:${oap_12800}/graphql metrics exec \ --expressionsatellite_service_grpc_connect_count --service-namesatellite-service预期的服务注册结果satellite-service.yml表明当 Satellite 指标成功上报后OAP 中会出现一个名为satellite-service、layers为[SO11Y_SATELLITE]的普通服务实体。也就是说只要在 UI 的Self Observability → Satellite菜单下能看到satellite-service及其图表数据即说明整条链路Satellite → OTLP → receiver-otel → MAL → 存储 → 仪表盘已打通。常见的排障方向若service layer SO11Y_SATELLITE查询不到服务优先检查 Satellite 的 Telemetry Exporter 是否已连接 OAP 的 gRPC 端口、receiver-otel是否已激活若服务存在但指标无值检查enabledOtelMetricsRules是否包含satellite规则、satellite.yaml中expSuffix是否与上报数据的service标签匹配修改 MAL 规则或仪表盘模板后需重启 OAP或按 OAP 的配置热加载机制重新加载并确认模板 JSON 合法否则可能导致 OAP 启动失败。总结SkyWalking 为 Satellite 提供了开箱即用的自观测能力数据经 OTLP 进入 OAP由 MAL 规则 完成聚合计算最终呈现在 so11y-root.json 定义的SO11Y_SATELLITE层仪表盘上。理解这 7 个核心指标的口径、掌握模板 JSON 的字段语义并复用仓库中现成的 swctl 验证命令你就能快速诊断 Satellite 的接入状态并据此定制适合自身场景的监控面板。【免费下载链接】skywalkingAPM, Application Performance Monitoring System项目地址: https://gitcode.com/gh_mirrors/sky/skywalking创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考