已合并
[Metrics] 支持用户单目录多 YAML 及外部 Handler #439
ChaseChe77创建于 29 天前
[Metrics] 支持用户单目录多 YAML 及外部 Handler #439
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 ChaseChe77 的贡献)atomgit-bot
29 天前 评论:
29 天前 评论:
变更摘要
本次 PR 主要围绕 Metrics 系统扩展用户自定义能力并增强健壮性:一是扩展 MS_SERVICE_METRIC_CONFIG_PATH 支持单目录下多个 YAML 配置文件的加载与合并;二是新增受控外部 Handler 加载机制,允许用户在配置根目录放置自定义 Handler 文件而无需修改 PYTHONPATH;三是为 vLLM Metrics 插件入口增加 fail-open 保护,使初始化失败时仅禁用 Metrics 而不阻断服务启动。同时包含 shutdown 流程加固、Handler 指纹扩展以及全面的安全校验和测试覆盖。
主要改动
- 多 YAML 目录加载:
SymbolConfig._load_config_path方法从仅支持单文件扩展为兼容目录,扫描根目录下.yaml/.yml文件并按文件名稳定排序后逐一加载合并,忽略子目录和非 YAML 文件,复用原有的语义去重逻辑。 - 外部 Handler 加载器:新增
external_handler_loader.py模块,提供resolve_external_handler_root和load_external_handler_module两个函数,实现从用户配置根目录按module.path:function_name加载 Handler 模块,不修改sys.path,并对模块路径、目录穿越和符号链接逃逸进行安全校验,模块以真实路径哈希缓存在进程内。 - vLLM 插件 fail-open:
initialize_vllm_metric函数增加try-except保护,初始化失败时记录异常日志、调用adapter.shutdown()清理半初始化状态并继续启动,不再向上传播异常阻断 vLLM 服务。 - Handler 指纹与导入扩展:
MetricHandler.from_config、_fingerprint_config和_import_handler新增user_handler_root参数,非内置允许模块时委托load_external_handler_module加载,同时将user_handler_root纳入配置指纹计算,确保不同外部根目录的 Handler 具备不同标识。 - shutdown 流程加固:
VLLMMetricAdapter.shutdown改为先保存_manager引用并置空再执行manager.shutdown(),避免半初始化状态下_initialized为False时跳过清理,且支持对已部分初始化的 Manager 进行安全清理。


不准确?
AtlasAccount
29 天前 评论:
29 天前 评论:
atomgit-bot
29 天前 评论:
29 天前 评论:
29 天前 添加了label:stat/needs-squash
此处折叠了92条消息 查看更多
ascend-robot
28 天前 评论:
28 天前 评论:
The MR can not be merged, because of CodeReview discussion not resolved
If you want to solve this problem, you can click here to do it in the FAQs.


28 天前 解决了最后一个问题
28 天前 关闭了关联的issue
28 天前 合入了pull request
ascend-robot
28 天前 评论:
28 天前 评论:
Pull Request 已合并或已关闭。
If you want to solve this problem, you can click here to do it in the FAQs.


1. 修改描述
修改原因:
当前用户自定义指标仅支持通过
MS_SERVICE_METRIC_CONFIG_PATH指定单个 YAML;自定义 Handler 还需要修改、安装 Python 包或调整PYTHONPATH,不利于用户按模块组织和维护自定义指标。同时,vLLM Metrics 插件初始化异常会向上传播,依赖缺失等 Metrics 故障可能导致
vllm serve启动失败,不符合 Metrics 可选观测能力的 fail-open 原则。修改内容:
MS_SERVICE_METRIC_CONFIG_PATH,兼容原有单 YAML,并支持指定单目录下多个.yaml/.yml文件。module.path:function_name写法,无需修改PYTHONPATH或安装额外 Handler 包。sys.path。2. 功能验证
112 passed, 1 skipped。execute_handler.pyhandlers/prepare_handler.pyvllm_profiling_user:external_execute_model:duration_count = 100vllm_profiling_user:external_prepare_inputs_total = 80/metrics获取。3. 代码检视
要求:
4. 安全自检
典型安全编码问题
5. 变更知会
资料修改:
已更新:
ms_service_metric/README.mddocs/design/ms_service_metric_Refactor_Design.md变更通知(消息知会 + 邮件知会):
6. 冒烟修改
PR 来源: