蓝鲸智云配置平台 bk-cmdb API 实战:bind_host_agent 将 GSE Agent 绑定到主机

发布时间:2026/10/12 2:17:26
蓝鲸智云配置平台 bk-cmdb API 实战:bind_host_agent 将 GSE Agent 绑定到主机 后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载导读bind_host_agent是蓝鲸智云配置平台bk-cmdb提供的开放 API 之一用于将 GSE蓝鲸 Agent的bk_agent_id与 CMDB 中的主机bk_host_id建立绑定关系是平台自动纳管、Agent 归位与主机标识管理的关键链路。本文基于 bind_host_agent.md 展开结合仓库内 hostserver 服务源码、API 网关资源定义与集成测试完整讲解接口参数、请求/响应格式、批量限制、底层执行流程与边界行为帮助开发者正确接入并排查问题。一、接口概览1.1 接口能力与定位该接口的核心作用是将指定的 AgentID 绑定到指定主机上。绑定完成后主机的bk_agent_id字段被更新CMDB 后续可基于该标识关联 GSE 上报的数据、主机快照与进程信息。项目说明接口名称bind_host_agent将 agent 绑定到主机上适用版本v3.10.25所需权限主机 AgentID 管理权限Host AgentID Management PermissionHTTP 方法POST网关路径/api/v3/host/bind/agent后端路径/host/bind/agenthostserver 服务1.2 网关资源定义在 API 网关资源配置 bk_apigw_resources_bk-cmdb.yaml约第 3517 行起中该接口的operationId为bind_host_agent后端类型为 HTTP方法为 POST路径/api/v3/host/bind/agent并且配置了bk-rate-limit限流插件默认每 1 秒 100 个 token。该资源isPublic: false、allowApplyPermission: true即默认不公开需要申请权限后方可调用。二、请求参数详解接口请求体为 JSON 对象核心结构是一个批量关系列表NameTypeRequiredDescriptionbk_host_idintYes要绑定 Agent 的主机 IDbk_agent_idstringYes要绑定到指定主机的 Agent IDlistarrayYes上述「主机 ID Agent ID」关系对的批量列表请求体中的每个元素由bk_host_id与bk_agent_id组成一对绑定关系list数组支持一次提交多条。2.1 参数校验规则源码级从源码 hostserver.goHostAgentRelation与BindAgentParam约第 1090-1143 行可以看到服务端对入参的严格校验每个bk_host_id必须为正整数HostID 0时返回参数缺失错误CCErrCommParamsNeedSet每个bk_agent_id不能为空字符串长度必须大于 0list数组不能为空list数组长度不能超过单次写入上限BKMaxWriteOpLimit该常量在 definitions.go 中定义为200即单次最多批量绑定 200 台主机。字段常量定义同样位于 definitions.goBKHostIDField bk_host_id第 362 行、BKAgentIDField bk_agent_id第 815 行。三、请求示例与调用方式3.1 请求示例原文{ list: [ { bk_host_id: 1, bk_agent_id: xxxxxxxxxx }, { bk_host_id: 2, bk_agent_id: yyyyyyyyyy } ] }3.2 实际调用方式请求通过蓝鲸 API 网关转发至 CMDB hostserver 服务网关统一路径为POST /api/v3/host/bind/agent以 curl 为例认证凭证需按蓝鲸 API 网关接入规范在请求头中携带应用凭据或用户 tokencurl -X POST https://bk-apigw-domain/api/v3/host/bind/agent \ -H Content-Type: application/json \ -H X-Bk-App-Code: your_app_code \ -H X-Bk-App-Secret: your_app_secret \ -d { list: [ { bk_host_id: 1, bk_agent_id: xxxxxxxxxx }, { bk_host_id: 2, bk_agent_id: yyyyyyyyyy } ] }说明网关域名与鉴权头字段以实际部署环境为准请求体内容与文档示例完全一致可直接复用。四、响应结构与响应参数4.1 响应示例原文{ result: true, code: 0, message: , permission: null, }4.2 响应参数说明NameTypeDescriptionresultbool请求是否成功。true成功false失败codeint错误码。0 表示成功0 表示失败错误码messagestring请求失败时返回的错误信息permissionobject权限信息成功时返回result: true、code: 0任一主机不存在、参数校验不通过或底层更新失败时将返回对应错误码与错误信息。五、底层实现原理与调用链5.1 路由注册hostserver 服务在 service_initfunc.go第 399-400 行中注册了该接口的路由utility.AddHandler(rest.Action{Verb: http.MethodPost, Path: /host/bind/agent, Handler: s.BindAgent}) utility.AddHandler(rest.Action{Verb: http.MethodPost, Path: /host/unbind/agent, Handler: s.UnbindAgent})5.2 处理流程核心处理逻辑位于 agent.go 的BindAgent方法第 30-104 行完整调用链如下解析入参通过ctx.DecodeInto(input)将请求体反序列化为metadata.BindAgentParam参数校验调用input.Validate()校验list非空、长度 ≤ 200、每个关系对的bk_host_id 0且bk_agent_id非空主机存在性校验调用validateHostByAgentRelations按bk_host_id IN (...)查询主机若查到的数量与请求数量不一致存在不存在的主机返回CCErrHostNotFound事务内批量更新通过AutoRunTxn开启事务逐个处理若主机当前的bk_agent_id与请求值一致直接跳过幂等否则生成审计日志AuditUpdate类型记录更新字段bk_agent_id通过 coreservice 的Instance().UpdateInstance更新 host 对象实例的bk_agent_id字段保存审计日志事务内统一写入审计日志保证主机更新与审计记录的一致性返回结果成功时响应result: true, code: 0。5.3 幂等与覆盖语义源码注释明确指出if the host has already bound another agent, change to this one——即如果主机已绑定了其他 Agent再次调用本接口会直接覆盖为新的 AgentID如果绑定的就是当前 AgentID则跳过不做任何变更。这一语义使接口可安全重试适用于 Agent 重装、迁移或换绑等运维场景。5.4 客户端封装对于内部服务间的调用apis.go第 843-864 行提供了BindAgent客户端方法封装了POST /host/bind/agent的请求发送与错误处理其他服务模块可直接通过 hostserver clientset 调用。六、边界行为与测试验证仓库集成测试 host_test.go第 1643 行起覆盖了该接口的主要场景场景预期行为批量绑定两台主机成功主机bk_agent_id与请求一致重复绑定相同 AgentID成功幂等跳过更新主机的 AgentID成功字段被覆盖为新的 AgentID绑定空bk_agent_id报错参数校验拦截绑定不存在的主机报错主机存在性校验拦截解绑时 AgentID 不匹配报错解绑接口校验测试同时验证了绑定后可通过SearchHostWithNoAuth查询到主机字段已被正确更新。这些用例印证了参数校验与主机存在性校验在实际链路中确实生效。七、配套接口解绑主机 Agent与bind_host_agent配套的unbind_host_agent/api/v3/host/unbind/agent用于解除绑定其实现位于同一文件 agent.go 的UnbindAgent方法第 107-201 行。解绑时的约束与绑定不同目标主机必须未绑定任何 Agentbk_agent_id字段不存在或绑定的 AgentID 与请求一致否则报错对未绑定 Agent 的主机执行解绑时直接跳过不产生变更解绑操作同样通过AutoRunTxn事务执行并记录审计日志。八、版本与字段演进背景bk_agent_id字段并非自始存在。仓库内的数据库升级脚本 add_agent_id_and_ipv6_attr.go 显示在 v3.10 版本对应的升级步骤中为 host 对象新增了bk_agent_id以及 IPv6 相关属性为该字段补充了唯一规则addHostAgentIDAndIPv6Unique与数据库索引addHostAgentIDAndIPv6Index。这也解释了为何接口要求v3.10.25更低版本的主机模型可能尚未具备bk_agent_id属性。结合唯一规则与索引可推断平台对主机 AgentID 的标识一致性有强约束避免同一 AgentID 被重复绑定到多台主机。九、使用建议与注意事项合理设置批量大小单次请求最多 200 条绑定关系BKMaxWriteOpLimit大批量场景请分批提交关注幂等特性重复绑定相同 AgentID 不会报错可放心重试换绑场景直接传入新 AgentID 即可完成覆盖注意权限申请该接口需要「主机 AgentID 管理权限」且网关资源默认非公开isPublic: false调用前需完成权限申请配合解绑接口使用在 Agent 下架、主机回收或 Agent 迁移场景中先解绑再绑定可保证标识唯一与审计完整审计可追溯每次实际变更都会生成更新类审计日志可通过审计功能回溯 AgentID 的变更历史。参考文件索引接口文档原文bind_host_agent.mdAPI 网关资源定义bk_apigw_resources_bk-cmdb.yaml服务端实现与解绑逻辑agent.go路由注册service_initfunc.go参数结构与校验规则hostserver.go字段与批量上限常量definitions.go客户端封装apis.go集成测试用例host_test.go字段升级脚本add_agent_id_and_ipv6_attr.go赞分享后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载相关推荐蓝鲸智云配置平台bk-cmdbAPI 实战查询主机详情及其拓扑信息list_host_detail_topology蓝鲸智云配置平台bk cmdbAPI 实战查询主机详情及其拓扑信息list_host_detail_topology 本文面向蓝鲸智云配置平台Blu后端企业应用运维蓝鲸智云配置平台 bk-cmdb 主机身份查询接口 search_hostidentifier 实战指南蓝鲸智云配置平台 bk cmdb 主机身份查询接口 search_hostidentifier 实战指南 本指南以蓝鲸智云配置平台bk cmdb对外 API后端企业应用运维蓝鲸配置平台 bk-cmdb 云主机管理 API 实战add_cloud_host_to_biz 批量导入与原理剖析蓝鲸配置平台 bk cmdb 云主机管理 API 实战add_cloud_host_to_biz 批量导入与原理剖析 本文以 bk cmdb 官方 API 文后端企业应用运维上一篇只支持DLSS的游戏跑起FSR 3.1还加上帧生成OptiScaler 完整使用指南下一篇drawio-mcp 无 MCP 零安装方案用 Claude Project 指令让 AI 直接生成 draw.io 图表链接创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询