ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

蓝鲸CMDB扩展开发实操指南:自定义监控插件从代码到验证

蓝鲸CMDB扩展开发实操指南:自定义监控插件从代码到验证 蓝鲸CMDB扩展开发实操指南自定义监控插件从代码到验证【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址: https://gitcode.com/gh_mirrors/bk/bk-cmdb蓝鲸CMDB是腾讯开源的企业级配置管理平台bk-cmdb把主机、模型、拓扑等配置数据统一管起来。这篇蓝鲸CMDB扩展开发文章不讲概念直接带你写一个自己的监控上报插件改哪几个文件、跑哪条命令、看什么现象算成功照着做完就能在自己环境里跑通。先把插件框架的位置和内置实现摸清楚动手前花十分钟看清框架比闷头写代码省事。监控组件的插件代码集中在 src/thirdparty/monitor/plugins/ 目录里面已有两个现成实现可以抄作业blueking把告警数据上报到蓝鲸监控noop空实现数据直接丢弃是当前的默认行为。选插件的逻辑在plugins.go的GetPlugin函数里按插件名走 switch 分支查不到的名字一律静默回退到 noop——这就是扩展点的接线位置。你要加新插件本质上就是实现一个接口 在这里加一个分支。数据侧的契约定义在src/thirdparty/monitor/meta/Content接口约定了流转中的数据格式内置的Alarm结构体就是默认实现你完全可以在插件里对不同类型的数据做不同处理。验证点用grep -r monitor src/scene_server/*/etc/*.yaml之类的命令在配置模板里确认插件名字段的位置知道线上是用什么名字在选插件。开发环境怎么准备仓库、Go 工具链和构建入口环境只需要三样东西Go 工具链按仓库go.mod要求的版本安装保证go version能正常输出MongoDB本地起一个即可CMDB 元数据和实例数据都落在 MongoDB代码仓库clone 下来git clone https://gitcode.com/gh_mirrors/bk/bk-cmdb代码主体在src/下服务分拆得很细apiserver对外提供 REST 接口scene_server/下是 topo_server、host_server 等各业务服务source_controller/是 coreservice 这类核心库。你写监控插件主要只在src/thirdparty/monitor/这一小块活动但构建要在全局层面做。构建入口是 src/Makefile只编译后端二进制用server目标cd src make server产物会落到bin/目录。配置模板在 docs/support-file/config/templates/改配置前先从这里拿一份干净的模板不要拿线上配置直接试。自定义监控插件怎么写一个接口加一处注册整个插件接口只有一行定义在 src/thirdparty/monitor/plugins/plugin.gotype Plugin interface { Report(c meta.Content) error }也就是说你的全部插件逻辑就是实现Report方法拿到一条Content默认是Alarm结构体带 request_id、type、detail、module、dimension 五个字段决定把它发到哪。参考 plugins/blueking/ 的写法它实现了Report把告警数据组装后发给蓝鲸监控。你的版本可能是发到 Webhook、日志平台或内部告警通道结构完全一样。写完后做三件事在plugins.go的GetPlugin里给你的插件加一个 case 分支并像noop/blueking那样提供NewXxx()构造函数插件名常量放在src/common/definitions.go现在那里定义了noop和blueking两个常量保持命名一致每个新增文件保留仓库统一的 MIT License 头这是这个项目的硬性规范。插件改完了怎么验证编译、构建、看运行现象验证分三层从快到慢层次动作通过标准编译期go build ./src/thirdparty/monitor/...无编译错误构建期cd src make serverbin/下各服务二进制正常产出运行期把配置里的插件名改为你的插件启动服务日志中出现你的Report打出的内容且不再是 noop 的静默行为运行期最容易踩的坑就是前面提到的静默回退配置里的插件名拼错、或者你忘了在GetPlugin加分支系统不会报错只会退回 noop现象是什么都没发生。所以运行验证时先在你的Report里打一行带明显标记的日志确认框架真的把你的实现选上了。数据侧也可以独立验证meta/type.go里定义了redis_fatal_error、mongo_ddl_fatal_error等监控类型常量这些就是流转到你Report方法里的数据分类对着它们自测一遍各类型都能正确处理就可以交付了。交付之后还能接着做什么企业里把内部资产系统接进 CMDB优先走 docs/apidoc/apigw/open/ 下的开放接口文档而不是去改 CMDB 前端页面想看数据怎么在采集、流转、上报之间走读 src/thirdparty/monitor/README.md它说清了内存队列和频率配置这两个可调参数想继续扩展其他方向比如接入内部鉴权、审计入口在 docs/ 和src/scene_server/各服务的logics/目录里。先把自己插件的Report跑通再回头去抄 blueking 的完整实现是最短的路径。【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址: https://gitcode.com/gh_mirrors/bk/bk-cmdb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表