2020年一场疫情打乱了很多人的节奏,我也因此第一次在北京过年了。
过年的这段时间,因约景点的时间有点晚了,所以很多的景点都没有去成,因此我基本上是在北京的出租房里憋了一个假期。
去年,也就是2020年,我开源了自己的第一个项目 ferry,得到了不少的认可,github的star也马上突破 3k 了。
因此在过年的时候,我就想着把自己构思了一段时间的另外一个项目CMDB写一写。
后来我看到了腾讯开源的CMDB,发现我构思的项目很多地方跟这个项目是类似的,但是没有腾讯开源的这个项目完善,因此就不准备重新开发了,毕竟非定制化的需求,重复造轮子还是没有太大必要的,于是我就开始研究腾讯的这个项目的源码,发现,这个项目是真的复杂呢,微服务的结构设计思路,让这个项目的代码规模有点大,而且还比较绕。程序编译成功后需要运行十几个二进制文件。
还有需要注意的就是必须使用指定版本的Mongodb、Redis、Zookeeper,反正我尝试使用新版本的这几个软件是不行的。单单是本地环境就折腾了好久,因为遇到了好多问题。且非常重要的一点就是这个项目运行起来的话非常吃资源。
本地环境部署完成后,就开始研究源码了。
腾讯开源的这个CMDB,单论CMDB的功能来说的话还是非常不错的。但是我发现很多地方都是依赖腾讯的蓝鲸PaaS平台的,而且就连登陆都是直接写死在程序里的,且没有权限系统(也是依赖于蓝鲸PaaS的)。
我尝试着进行了二次开发,包括登陆、权限及一些新功能的添加,但是我发现真的太麻烦了,登陆部分完成后,权限部分我实在是不想继续写下去了,前端用的是蓝鲸的UI,很多想加的功能点都不能直接用,后端的代码管理也没有用go mod,我还是比较习惯用这个的,整体来说,就是不习惯,于是,我就萌生了仿照这个项目,重新写一个的想法,并且实施了。把自己想要的功能和这个项目现在不错的功能点结合一下。
如果你发现这个项目非常像蓝鲸CMDB,别喷,就是仿照这个项目写的。
项目前端使用的是Vue + Element UI,后端就是Go + Gorm,数据存储方面目前就是MySQL,后面集成ES实现全局搜索。
因为还没有完全完善,因此现在就主要截图展示一下,后续完善后,会看情况是否进行开源。
页面比较多,截图部分页面有问题,有想法,欢迎评论交流。
Github:https://github.com/lanyulei/fiy
觉得不错的话,给个star呗。
模型列表
模型详情
资源目录
资源列表
资源详情
云账号管理
方便进行云资源数据同步
新建服务模板
新建集群模板
服务分类
业务拓扑
本文为原创文章,未经授权禁止转载本站文章。
原文出处:兰玉磊的个人博客
原文链接:https://www.fdevops.com/2021/02/18/cmdb-23974
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。
评论列表(26条)
蓝鲸的cmdb确实不错,但是监测只能agent,能否开发个snmp的?
@315218236:后续有时间的话,会逐步完善。
期待磊哥开源。蓝鲸确实太庞大了,而且二次开发真的搞不来
期待磊哥开源。蓝鲸不是很适合小型环境,而且二次开发需要蛮多人支持的
您好,能否分享一下您这个cmdb的代码,我最近想依照腾讯lanjing开发一个cmdb平台。谢谢。
@溪溪爸:还在完善agent,完善好后,会开源的。
期待开源
能说下怎么部署安装的么
@运维001:我最近抽时间,整理一下部署文档吧。
@兰玉磊:你好 啥时候能出个部署文档呀 期待
@carlson:尽快哈。
@兰玉磊:你好 我把源码下载下来,打成了docker镜像 通过配置settings.yml文件 跑起来了 但是数据库并没有出现在我指定的库中,请问是还要再哪里配置?
配置文件信息:
settings:
application:
# dev开发环境 test测试环境 prod线上环境
mode: dev
# 服务器ip,默认使用 0.0.0.0
host: 0.0.0.0
# 服务名称
name: testApp
# 端口号
port: 8000 # 服务端口号
readtimeout: 1
writertimeout: 2
# 数据权限功能开关
enabledp: false
logger:
# 日志存放路径
path: temp/logs
# 控制台日志
stdout: true
# 日志等级
level: all
# 业务日志开关
enabledbus: true
# 请求日志开关
enabledreq: false
# 数据库日志开关 dev模式,将自动开启
enableddb: false
# 自动任务日志开关 dev模式,将自动开启
enabledjob: false
jwt:
# token 密钥,生产环境时及的修改
secret: fiy
# token 过期时间 单位:秒
timeout: 3600
database:
# 数据库类型 mysql,sqlite3, postgres
driver: mysql
# 数据库连接字符串 mysql 缺省信息 charset=utf8&parseTime=True&loc=Local&timeout=1000ms
source: root:Admin!@tcp(****:3307)/fiy?charset=utf8mb4&parseTime=True&loc=Local&timeout=1000ms
gen:
# 代码生成读取的数据库名称
dbname: fiy
# 代码生成是使用前端代码存放位置,需要指定到src文件夹,相对路径
frontpath: ../fiy-ui/src
sync:
cloud: 5
es:
open: false
host: http://127.0.0.1:9200
user:
password:
index: cmdb_resource_data
@carlson:配置好配置文件后,执行这个命令试试,go run main.go migrate -c config/settings.dev.yml。
@carlson:你部署的问题解决了吗,我遇到了和你一样的问题,数据库中不生成表
有部署文档吗
@eweq:还么有,不过很多人问了,我打算最近出一个部署文档。
@兰玉磊:可以考虑搞个视频,卖钱
@一米八大高个:录视频有点麻烦,十几分的视频,有时候需要折腾挺长时间。
云账户支持阿里云吗
@潜龙勿用:支持
求部署文档
演示画面验证码挂了
@ki:OK,我看下。
磊哥,演示页面验证码挂了
@瓜皮:好的,我看下。
演示网站挂了,还有就是我拉代码跑本地报了个错误:Error: requires at least one arg;刚接触go,可以给一个解答吗,谢谢