Skip to content

Tracing MCP 新增服务列表工具 —— 实施方案

基于 README.md 制定。

0x01 新增 ServiceListResource

a. 位置

  • 接口:apm_web.service.resources.ServiceListResource
  • 路由:apm_web.service.views,新增 ResourceRoute

b. 数据组装

所有字段通过 EntitySet 获取,不引入额外数据源。

字段来源
service_nameservice_names
service_language_service_node_map 中的 extra_data.language
systemget_system(改造后,见 0x02-b)
platformget_workloads,固定 name=k8s
log_relationsget_log_relations(新增,暴露 _service_log_indexes_map

0x02 优化改造

a. 日志索引映射与选取

_service_log_indexes_map:每条记录追加 bk_biz_id——应用数据源取 self.bk_biz_id,关联日志取 relation.related_bk_biz_id。新增字段不影响现有下游。

get_first_log_index_set_id_or_none:选取优先级改为——

  1. is_app_datasource=True
  2. bk_biz_id == self.bk_biz_id
  3. 兜底取第一条

返回类型不变(int | None),调用方无需改动。

b. system 提取通用化

核心决策:

  • get_rpc_service_config_or_none 改名 get_system,从节点 systemsdk 字段提取 {name, sdk, temporality},不限于 RPC 服务。
  • 无 system 返回 {}(不是 None),消费方无需空判断。
  • RPC 判断从 ServiceHandler 收敛到 Vendor:新增 Vendor.is_rpc_system,集中维护 RPC 系统集合(trpc、tars)。

改造范围:

  • ServiceHandler.get_rpc_service_config_or_none:改名、调整返回结构。
  • EntitySet.get_rpc_service_config_or_none:同步改名,委托 ServiceHandler.get_system

消费方适配:

消费方适配要点
enricher.RPCSystemDiscoverer改调 get_system,用 Vendor.is_rpc_system 判断
enricher.RPCEnricher从返回值读 temporality,用 Vendor.is_rpc_system 判断
builtin.apm.discover_caller_calleeVendor.is_rpc_system 设置 exists

c. MetricTemporality

保持原有 get_metric_config(temporality) 方法不变,调用方统一使用 MetricTemporality.get_metric_config(temporality) 获取 server_config

d. 移除冗余接口

删除 apm_web.meta.resources.ServiceConfigResource 及其在 apm_web.meta.views 中的路由和 import。

注意与 apm_web.service.resources.ServiceConfigResource 同名但职责不同,后者保留。


0x03 变更清单

变更位置
新增 ServiceListResourceapm_web.service.resources
注册路由apm_web.service.views
EntitySet 扩展apm_web.strategy.dispatch.entity
ServiceHandler 改造apm_web.handlers.service_handler
Vendor 扩展constants.apm
MetricTemporality 常量化constants.apm
enricher 适配apm_web.strategy.dispatch.enricher
builtin/apm 适配monitor_web.scene_view.builtin.apm
trpc metric group 适配apm_web.handlers.metric_group.groups.trpc
移除 ServiceConfigResourceapm_web.meta.resourcesapm_web.meta.views

制定日期:2026-03-24