资讯动态

蓝鲸配置平台 bk-cmdb v3.12.3 特性解读:主机双模式检索与模型内置审计字段体系

发布时间:2026/10/16 2:13:38 来源:尧图企业网站定制
后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载本篇文章基于 bk-cmdb蓝鲸智云配置平台BlueKing CMDB开源仓库中的 v3.12.3 版本变更记录docs/support-file/changelog_user/en/v3.12.3_2023-11-06.md结合仓库源码逐项解析该版本的核心能力首页主机搜索新增「IP」与「BK-Network Area:IP」两种检索模式、创建模型时自动注入四个内置审计字段、动态分组交互优化与模型分组拖拽排序以及权限中心重复注册问题的修复。读完本文你将理解这些变更背后的数据模型与写入链路实现并能据此规划升级与使用方式。版本概览与升级入口v3.12.3 是一个聚焦「检索体验」与「模型内置能力」的迭代版本其变更集中在三类Feature新增特性、Improved体验优化、Fixed问题修复。其中最具长期影响的变化是新建模型时会自动附带四个内置字段从而让每个模型实例天然具备谁在何时创建/更新的审计信息无需业务方自行建模。与本次发布对应的数据库升级逻辑记录在升级器目录 src/scene_server/admin_server/upgrader/y3.12.202310301633 中。该目录下的 pkg.go 通过upgrader.RegistUpgrader(y3.12.202310301633, upgrade)注册了本次升级任务核心动作是 add_recorded_fields.go 中的addRecordedFields——遍历存量模型对象表为每个模型补齐这四个内置字段的属性定义保证升级后新旧模型行为一致。Feature 一首页主机搜索支持两种检索模式本版本为主页的主机搜索入口新增两种模式IP直接输入主机 IP 进行检索BK-Network Area:IP以「网络区域管控区域 IP」的组合形式进行精确定位检索。从数据模型角度看这种组合检索之所以可行是因为管控区域Cloud Area是主机模型的内置固有属性。仓库中主机实例与管控区域的关系可见于多处在 src/scene_server/host_server/logics/host.go 中主机数据会携带bk_cloud_id字段并参与归属区域的组织逻辑在 src/scene_server/host_server/logics/hostsearch.go 的主机搜索逻辑中bk_cloud_id同样被纳入属性解析与返回attributeMap[common.BKCloudIDField] common.FieldTypeInt。也就是说同一 IP 在不同管控区域中可以视为不同主机因此用「区域:IP」定位比单独用 IP 更精确尤其适合多区域多云、多机房纳管场景。实际检索时IP 匹配支持 IPv4/IPv6前端已有对应的 IP 解析与粘贴自动切分能力见 src/ui/src/components/filters/filter-fast-search.vue 中的splitIP/parseIP工具能够同时解析 IPv4、IPv6 以及带管控区域的 IP 列表。结合后端 src/apiserver 提供的检索服务用户可在首页一次性完成跨区域的按 IP 模糊检索或按「区域:IP」的精确检索。Feature 二模型初始化自动注入四个内置字段这是本版本最值得关注的模型层能力。在初始化创建模型时系统会自动为该模型添加四个内置字段字段 ID字段名字段类型含义bk_created_at创建时间时间time实例创建时间bk_created_by创建人用户user实例创建者bk_updated_at更新时间时间time实例最后更新时间bk_updated_by更新人用户user实例最后更新者四个字段的 ID 常量统一定义在 src/common/definitions.go 的inst records logging information常量块中BKCreatedAt/BKCreatedBy/BKUpdatedAt/BKUpdatedBy与原有的create_time/last_time/creator/modifier等内部字段并存共同构成实例的完整审计信息。字段的属性设计系统托管、不可编辑这四个字段的属性定义集中体现在 src/scene_server/topo_server/logics/model/object.go 的recordedAttrs变量中其设计要点为IsOnly: false不参与唯一性校验避免与业务自定义唯一索引冲突IsEditable: false对用户不可编辑确保审计信息不被业务侧篡改IsRequired: false非必填写入由系统自动完成IsPre: true标识为系统预置属性PropertyTypebk_created_at/bk_updated_at为FieldTypeTimebk_created_by/bk_updated_by为FieldTypeUserCreator: common.CCSystemOperatorUserName属性的创建者标记为系统运营用户即这类属性属于平台托管。而在升级脚本 add_recorded_fields.go 中同样的四个属性还额外声明了PropertyGroup: mCommon.BaseInfo归入基础信息属性分组并声明IsMultiple: false。模型创建链路属性如何被自动挂载新建模型的完整链路位于 src/scene_server/topo_server/logics/model/object.go 的CreateObjectcreateObjectParamCheck完成模型参数校验调用CoreService().Model().CreateModel创建模型本身底层实现在 src/source_controller/coreservice/core/model/model.go 的CreateModel通过lock.GetLockKey(lock.CreateModelFormat, ...)保证模型创建的并发安全创建默认属性分组GroupName 为 DefaultGroupIndex: -1调用createDefaultAttrs写入默认属性——该函数object.go除了注入实例名称属性PropertyID为该模型的实例名字段、IsRequired: true外还会逐个遍历recordedAttrs并附加到新建模型若为模型主线mainline模型还会额外增加父实例字段bk_inst_parent创建唯一索引与审计日志。也就是说四个内置字段在模型落库的同一创建事务流程中被一次性写入新建即自带业务方无需感知。需要说明的是从源码结构看这一自动注入发生在模型创建服务topo_server 的 model 逻辑中因此后续通过模型导入如 CreateObjectByImport等其他创建入口的行为需以对应入口实现为准。实例写入链路字段值由系统自动填充这四个字段不仅自动建模其值也完全由系统在实例写入时自动生成业务侧无需也不能手动维护创建实例时单条创建入口 instance_crud.go 的save与批量创建入口 instance_crud.go 中都会统一执行inputParam.Set(common.BKCreatedBy, kit.User)、Set(common.BKCreatedAt, ts)、Set(common.BKUpdatedAt, ts)——创建人取自当前请求用户kit.User时间取time.Now()同时也会写入原有的create_time/last_time字段保证新旧字段双写一致更新实例时instance_crud.go 的update在落库前会执行data.Set(common.LastTimeField, ts)、data.Set(common.BKUpdatedBy, kit.User)、data.Set(common.BKUpdatedAt, ts)确保每次修改都刷新更新时间/更新人完整的更新流程含唯一字段校验、实例校验器校验、进程绑定 IP 联动更新等见 instance.go 的UpdateModelInstance时间类型处理时在 instance_validate.go 的changeStringToTime中bk_created_at/bk_updated_at会被显式跳过字符串转时间处理避免被业务传入参数覆盖。老数据兼容与 create_time/last_time 的无缝衔接升级前存量实例并没有bk_created_at/bk_updated_at值。为保证检索与展示的一致性查询链路做了专门的兼容处理instance.go 的FindInst当查询字段包含bk_created_at但实例中该值为空时自动回填为旧字段create_time的值当查询字段包含bk_updated_at但为空时自动回填为last_time的值同时按需补充查询旧字段并在返回前剔除不必要字段保证 API 输出与升级前保持一致。此外在时间条件查询构造处src/common/metadata/common.gobk_created_at与bk_updated_at会被映射到create_time与last_time参与底层过滤确保以新字段 ID 发起的查询也能命中历史数据。使用建议升级到 v3.12.3 后存量模型会通过升级器自动补齐四个字段定义无需手工建字段由于IsEditable: false不要在业务侧尝试通过更新接口修改这些字段的值——系统会在写入链路统一覆盖做实例审计、变更追溯时可直接基于bk_created_by/bk_updated_by/bk_created_at/bk_updated_at构建报表或利用模型字段组合条件进行时间范围检索。Improved动态分组与模型分组操作体验优化本版本还包含两项交互层面的优化动态分组Dynamic Grouping创建、预览、编辑流程的交互优化。动态分组是主机检索的高阶能力其服务端实现位于 src/scene_server/host_server/logics/dynamic_grouping.go其中主机条件组合会涉及bk_cloud_id等主机内置字段见 dynamic_grouping.go 对BKCloudIDField的使用。本版本的优化重点在创建、预览与编辑三者的衔接体验具体交互细节以前端实际表现为准。模型分组下支持通过拖拽修改模型顺序。该能力属于模型分组展示层的排序交互用于调整分组内模型列表的展示次序便于按业务习惯组织模型视图。Fixed修复创建模型时权限中心偶发重复注册本次版本修复了一个稳定性问题创建模型时权限中心IAM偶尔会出现重复注册的情况。由于创建模型属于高频管理操作偶发的重复注册会带来多余的权限资源冗余。修复后模型创建与权限资源注册的幂等性得到保障避免重复资源对权限模型管理造成干扰。相关权限接入可参见 src/ac/iam 目录下的权限资源初始化与注册逻辑。升级与验证要点升级路径升级至 v3.12.3 时admin_server 会按升级器注册顺序执行y3.12.202310301633任务为存量模型补齐内置审计字段pkg.go验证字段注入升级后新建任意自定义模型在模型属性列表中应能看到创建时间/创建人/更新时间/更新人四个不可编辑字段创建实例后查看实例详情四个字段应已由系统自动填充验证搜索模式在首页主机搜索框分别使用「IP」与「BK-Network Area:IP」两种模式检索确认多管控区域场景下区域IP 组合能够精确返回目标主机回归检查确认历史实例查询结果中bk_created_at/bk_updated_at能正确回填旧值时间范围查询行为与升级前一致。赞分享后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载相关推荐蓝鲸 CMDB v3.12.3 版本特性详解主机双模式搜索、模型内置审计字段与交互体验升级蓝鲸 CMDB v3.12.3 版本特性详解主机双模式搜索、模型内置审计字段与交互体验升级 本篇文章基于蓝鲸智云配置平台BlueKing CMDBv3.1后端企业应用运维蓝鲸配置平台 bk-cmdb v3.14.5 版本解读主机模型新增“操作系统内核版本”字段及多项交互修复蓝鲸配置平台 bk cmdb v3.14.5 版本解读主机模型新增“操作系统内核版本”字段及多项交互修复 本文围绕蓝鲸配置平台bk cmdb2025 02后端企业应用运维蓝鲸智云配置平台bk-cmdbv3.12.1 版本更新解读容器主机拓扑与模型字段已知问题蓝鲸智云配置平台bk cmdbv3.12.1 版本更新解读容器主机拓扑与模型字段已知问题 导读 本文基于蓝鲸智云配置平台BlueKing CMDB以下后端企业应用运维上一篇openwash-firmware通信协议详解固件与手机App交互的完整链路下一篇零基础入门底层编程amILearningEnough项目终极指南与资源推荐创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑