资讯详情

蓝鲸配置平台(bk-cmdb)接口指南:查询主机所属服务模板 ID(list_host_service_template_id)

📅 2026/10/13 21:11:44 | 华诺云谱 👁 阅读
蓝鲸配置平台(bk-cmdb)接口指南:查询主机所属服务模板 ID(list_host_service_template_id)
后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载一、接口概览与适用场景list_host_service_template_id是蓝鲸配置平台BlueKing CMDB仓库路径gh_mirrors/bk/bk-cmdb中用于根据主机 ID 反查其所属服务模板 IDservice_template_id列表的专用查询接口。该接口承载的是主机 → 模块 → 服务模板的链路查询能力常见于节点管理NodeMan等场景当需要判断一台主机是否纳管了某项服务、或者依据模板维度批量梳理主机归属时无需逐台拉取主机详情只需提交一批bk_host_id即可一次拿到对应的模板 ID 集合。需要特别留意的是该接口在官方文档中明确标注为节点管理专用接口可能会随时调整其他服务请勿使用且存在版本与权限前提版本要求v3.10.11权限要求主机池主机查看权限Host pool host view permission适用范围单次最多查询200 台主机超出会被拒绝。从接口能力上看它与仓库内 find_host_by_service_template.md按服务模板查主机互为逆向操作一个是模板 → 主机一个是主机 → 模板。阅读本文后读者将掌握该接口的完整调用姿势、参数约束、返回结构以及其背后的数据链路与实现原理。二、请求方式与参数说明2.1 请求路径与调用方式该接口在 ESB企业服务总线侧暴露的映射地址为/v2/cc/find_host_service_template/内部转发至 CMDB 的dest_path: /api/v3/findmany/hosts/service_template请求方法为 POST。该映射关系定义在 docs/apidoc/cc/cc.yaml 中第 1237–1246 行并在其中标记了is_hidden: true说明它可以通过 ESB 调用但不会在 ESB 的接口文档页面中展示——这与节点管理专用的定位一致。在 CMDB 侧该路由由 host_server 服务注册见 src/scene_server/host_server/service/service_initfunc.goutility.AddHandler(rest.Action{Verb: http.MethodPost, Path: /findmany/hosts/service_template, Handler: s.ListServiceTemplateIDsByHost})同时src/ac/parser/host.go 中将其登记为权限解析规则findHostsServiceTemplatesPattern参与后续的鉴权匹配。2.2 公共参数与接口参数调用该接口需要两类参数1公共参数common_args_desc即 ESB 级别的认证参数通常包括字段类型必选描述bk_app_codestring是应用 ID调用方在蓝鲸应用中心的标识bk_app_secretstring是应用密钥用于应用级鉴权bk_usernamestring否操作者用户名用于用户级鉴权bk_tokenstring否登录态 token用于用户级鉴权实际必选组合以部署环境为准通常为bk_app_code bk_app_secret应用级或bk_username / bk_token用户级中的一组。2接口参数Interface Parameters字段类型必选描述bk_host_idarray是主机 ID 列表最多 200 个bk_host_id无默认值必须显式传入若传入空数组或超过 200 个接口会直接报错详见下文参数校验。2.3 请求参数示例{ bk_app_code: esb_test, bk_app_secret: xxx, bk_username: xxx, bk_token: xxx, bk_host_id: [ 258, 259 ] }三、返回结果结构与字段说明3.1 返回结果示例{ result: true, code: 0, message: success, permission: null, request_id: e43da4ef221746868dc4c837d36f3807, data: [ { bk_host_id: 258, service_template_id: [ 3 ] }, { bk_host_id: 259, service_template_id: [ 1, 2 ] } ] }3.2 通用返回字段response字段类型描述resultbool请求成功与否。true请求成功false请求失败codeint错误码。0 表示 success0 表示失败错误码messagestring请求失败时返回的错误信息permissionobject权限信息request_idstring请求链 ID用于全链路日志追踪dataarray请求结果3.3 data 明细字段字段类型描述bk_host_idint主机 IDservice_template_idarray该主机所属的服务模板 ID 列表返回语义上需要注意几点service_template_id是数组而非单个标量。原因是同一台主机可能同时挂载在多个模块下例如同时存在于多个业务模块而这些模块分别关联不同的服务模板因此一台主机可对应多个模板 ID结果中的service_template_id列表已做去重同一台主机关联同一模板多次时只保留一个主机所在的模块如果没有绑定任何服务模板即service_template_id为 0 的普通模块则该模块对应的模板 ID 不会出现在结果中返回的data中每个元素只包含请求过的主机 ID未请求的主机不会出现。四、源码级实现原理主机与服务模板的关联链路该接口虽然参数简单但其内部数据链路涉及 CMDB 多个模块的协作。对应核心实现位于 src/scene_server/host_server/service/findhost.go 的ListServiceTemplateIDsByHost以及 src/scene_server/host_server/logics/host.go 的ListServiceTemplateHostIDMap。4.1 参数校验最多 200 台主机在进入业务逻辑前ListServiceTemplateIDsByHost首先将请求体解码到input结构体其中bk_host_id被映射为[]int64input : struct { ID []int64 json:bk_host_id }{} if err : ctx.DecodeInto(input); err ! nil { ... } if len(input.ID) 200 { ctx.RespAutoError(ctx.Kit.CCError.CCErrorf(common.CCErrCommValExceedMaxFailed, common.BKHostIDField, 200)) return }超过 200 个主机 ID 时会返回错误码CCErrCommValExceedMaxFailed定义见 src/common/errInfo.go错误信息形如bk_host_id field exceeds maximum value 200。4.2 数据链路主机关系 → 模块 → 服务模板ListServiceTemplateHostIDMap是整个查询的核心其执行链路分三步第一步查询主机-模块关系。构造HostModuleRelationRequest仅取出bk_module_id与bk_host_id两个字段调用GetHostRelations获取主机挂载的模块列表实现见 src/scene_server/host_server/logics/host.go内部实际经由CoreAPI.CoreService().Host().GetHostModuleRelation访问 coreservice。第二步按模块批量读取service_template_id。收集上一步得到的所有模块 ID构造QueryCondition对模块实例common.BKInnerObjIDModule发起in条件查询只取bk_module_id与service_template_id两个字段DisableCounter: true表示不返回总条数建立moduleID → serviceTemplateID的映射。第三步聚合为主机 → 模板 ID 数组。遍历主机-模块关系将同一台主机的多个模块所对应的模板 ID 追加到同一个切片中当模块的service_template_id为 0普通模块、未绑定模板时直接跳过最终通过util.IntArrayUnique对模板 ID 去重输出bk_host_id service_template_id键值对集合result : make([]mapstr.MapStr, 0) for host, sv : range hostSvTmp { result append(result, mapstr.MapStr{ common.BKHostIDField: host, common.BKServiceTemplateIDField: util.IntArrayUnique(sv), }) }字段常量service_template_id定义在 src/common/definitions.go。该接口全程不直接读服务模板表而是通过主机-模块关系表 模块实例上的服务模板字段间接推导因此返回的是主机当前所处模块所关联的模板属于实时快照查询。五、调用注意事项与最佳实践基于文档约束与源码实现调用该接口时建议遵循以下实践遵守专用接口约束接口明确为节点管理专用且可能随时调整业务系统不应将它的返回结构固化为长期依赖上游 docs/apidoc/cc/cc.yaml 中is_hidden: true也印证了它不对外稳定承诺的特性。控制批量大小单次bk_host_id最多 200 个超出即报错大批量主机请自行分批如按 200 个一组切分再并发或串行调用。理解去重与空值语义返回的service_template_id已去重普通模块未绑定服务模板不会产生模板 ID若某台主机返回空数组表示其当前模块均未关联任何服务模板。核对版本与权限确认环境版本不低于 v3.10.11且调用方持有主机池主机查看权限权限规则由 src/ac/parser/host.go 登记鉴权失败时permission字段会携带需要的权限信息code对应权限错误码。善用 request_id 排查返回的request_id是请求链 ID可用于跨服务日志串联CMDB 各服务日志如 host_server 的blog.Errorf均携带rid字段排查超限、模块缺失等问题时可据此定位。六、相关接口与延伸阅读该接口属于 CMDB 服务模板Service Template接口体系的一员仓库中与之配套的文档与代码还包括反向查询按模板查主机find_host_by_service_template.md对应 CMDB 侧实现FindHostsByServiceTemplatessrc/scene_server/host_server/service/findhost.go服务模板生命周期管理create_service_template.md、update_service_template.md、delete_service_template.md、get_service_template.md服务模板的同步与差异sync_service_template_to_service_instance.md、list_service_template_difference.md、list_service_template_sync_status.md接口文档与 ESB 映射关系的整体说明docs/apidoc/cc/README.md。如需在本地编译、运行 CMDB 以验证该接口可参考 docs/overview/source_compile.md 与 docs/overview/installation.md 中的部署指引。总结list_host_service_template_id以极小的入参仅bk_host_id数组完成了主机 → 服务模板的批量反查其内部通过主机-模块关系 → 模块实例上的服务模板字段 → 去重聚合三层链路实现既体现了 CMDB 主机与模板之间多对多的真实数据模型也暴露了 200 台上限、专用接口等使用约束。在节点管理及模板驱动的场景中理解该接口的语义与边界有助于准确、高效地完成主机模板归属梳理与批量判断。赞分享后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载相关推荐bk-cmdb 主机服务模板 ID 查询接口list_host_service_template_id详解bk cmdb 主机服务模板 ID 查询接口list_host_service_template_id详解 导读 list_host_service_tem后端企业应用运维蓝鲸配置平台 bk-cmdb 服务模板查询指南list_proc_template 接口详解蓝鲸配置平台 bk cmdb 服务模板查询指南list_proc_template 接口详解 导读 list_proc_template 是蓝鲸智云配置平台后端企业应用运维蓝鲸配置平台 bk-cmdb 集群模板主机查询接口 find_host_by_set_template 实战指南蓝鲸配置平台 bk cmdb 集群模板主机查询接口 find_host_by_set_template 实战指南 本文基于 bk cmdb 官方开放接口文档后端企业应用运维创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑