Skip to content

feat: 提供 APM 关联数据绑定 API --story=137160935 - #12011

Merged
ZhuoZhuoCrayon merged 5 commits into
TencentBlueKing:masterfrom
wuw-Mercury:feat/apm_associated_data_binding_api/#1010158081137160935
Aug 19, 2026
Merged

feat: 提供 APM 关联数据绑定 API --story=137160935#12011
ZhuoZhuoCrayon merged 5 commits into
TencentBlueKing:masterfrom
wuw-Mercury:feat/apm_associated_data_binding_api/#1010158081137160935

Conversation

@wuw-Mercury

Copy link
Copy Markdown
Collaborator

No description provided.

@wuw-Mercury wuw-Mercury added feat A new feature. Correlates with MINOR in SemVer project/apm project apm labels Aug 17, 2026
@wuw-Mercury

wuw-Mercury commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator Author

用于测试服务及初始配置准备:

service 测试数据准备 ------ 测试数据准备 结果 ------ initial

关联数据绑定:

关联数据绑定 API ------ after

重复请求幂等、空数组和基础参数请求(不修改配置):

重复调用
关联数据绑定 API ------ 重复验证 ------ 重复验证1
空数组和基础请求
空数组请求 ------ 基础参数请求 ------ 空数组及基础参数验证 ------ 空数组及基础参数验证1

@ZhuoZhuoCrayon ZhuoZhuoCrayon left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

汇总评论

不建议合入。 1 个 P0(外部写入的容器负载关联会被 SaaS 保存清空),2 个 P1。根因是外部写入与 SaaS 全量保存共用同一份 EventServiceRelation.relations,两侧都按全量语义写。

CI 无后端单测信号:unittest.yml 只跑 bklog/,testpaths 不含 packages/apm_web/tests,新增的 369 行测试不会执行。

已存在未解决 review 线程的解决情况

评论 / 线程 位置 状态 处理动作 证据
pulls/12011/comments/reviews 均为空,仅有作者一条含测试截图的 issue comment

已核对无问题

检查项 结论 证据
serializers.py:134 字段裁剪是否改变前端行为 无回归 配置页每次保存无条件下发 event_relation,full_relation_fields 恒非空,pop 分支对前端永不触发
前端是否依赖"缺省即清空" 依赖,不可放宽 log_relation_list 仅在非空时下发,删光日志关联靠默认值 [] 生效
CICD 增量写入是否会被前端丢弃 不会 pipeline-select-panel.tsx:50ISendValue 与增量写入结构一致
perform_requestApplication.objects.getDoesNotExist 无需处理 鉴权层 get_application_id_by_app_name 已先行查询并抛 ValueError(f"application({app_name}) not found")
from apm_web.tasks import ... 提到模块级是否循环导入 apm_web.tasks 未直接或间接导入 apm_web.service.resources
APIGW 资源与后端路由 匹配 后端 post /api/v4/service_web/service_config/ 对应 kernel_api/views/v4/apm.py:51;doc 文件名与 operationId 一致

Comment thread bkmonitor/packages/apm_web/service/resources.py
Comment thread bkmonitor/packages/apm_web/service/resources.py
Comment thread bkmonitor/packages/apm_web/service/views.py Outdated
Comment thread bkmonitor/packages/apm_web/tests/service/test_service_config.py
Comment thread bkmonitor/packages/apm_web/service/serializers.py Outdated
Comment thread bkmonitor/packages/apm_web/service/serializers.py Outdated
Comment thread bkmonitor/support-files/apigw/resources/internal/app/apm.yaml
@wuw-Mercury

Copy link
Copy Markdown
Collaborator Author

自测场景补充:

1. 空白状态,通过 API 增加关联,服务配置页面能看到 k8s 关联,支持编辑追加:
服务接入2 ------ 服务发现后2 ------ 初始事件关联配置 ------ 事件关联绑定 ------ 事件关联绑定后配置详情 ------ 编辑追加关联事件 ------ 编辑追加关联事件2
2. 无服务:配置可以写入,服务发现后能关联上
测试前应用 ------ 服务发现前绑定配置 ------ Trace 数据上报 ------ 服务发现后 ------ 配置关联

@ZhuoZhuoCrayon ZhuoZhuoCrayon left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

汇总评论

可以合入。上一轮 P0(增量写入后配置页保存清空 Workload)、权限回退、字段长度和 select_for_update 都已修好。

剩余一项不阻塞,后续再修:

bkmonitor/packages/apm_web/service/resources.py:561 [P1]

_prepare_event_relations 在全量保存遇到 k8s_event + 空 relations + is_auto: true 时,会把存量 Workload 写回并强制 is_auto=False。配置页「恢复自动关联」下发的就是这条 payload,保存后刷新会停在手动模式。增量路径已经把 is_auto 写成 False,刷新后的正常保存不会误清空;真正会走到这条分支的是用户主动恢复自动关联。

建议后续删掉这段拦截,event_relation 继续走 _prepare_default。若产品就是要外部绑定在恢复自动关联后仍保留,给外部关系打标记,并改配置页文案或禁用该按钮。

@ZhuoZhuoCrayon
ZhuoZhuoCrayon merged commit 69b68cf into TencentBlueKing:master Aug 19, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feat A new feature. Correlates with MINOR in SemVer project/apm project apm

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants