cmdb面试题
CMDB的面试题
1、CMDB的架构是啥?
- agent方案
"""
将采集的脚本放置在每一台待采集的服务器上,这脚本本质上是使用了subprocess模快来执行Linux的命令,最终获取命令执行结果,进行第一次分析。然后将分析得到的结果通过requests的模块发送给API端。API端获取结果之后,进行数据分析和比对(二次分析),然后将数据入库,最后django起一个webserver将数据从数据库中获取出来,进行展示管理。建议:可以现场面试的时候画个架构图.
"""
- ssh类方案
"""
在中控机上安装paramiko模块,通过这个模块就可以登录到待采集的服务器上进行数据采集,然后执行Linux相关的命令,最后返回执行结果,将分析到的结果通过requests模块发送给API,API获取到数据以后进行二次数据比对,然后将比对的结果存入数据库中,最后起一个文本server从数据库中将数据获取出来,进行展示。
"""
2、总共分成几个部分?你负责哪一个部分?
"""
总共分成三个部分,需要三个人,采集端是一个人,API数据分析和入库是一个,前端是vue做的也需要一个人,完美这个项目总共做了半年的时间
你负责那一部分的整体回答原则是:拿着个项目最有含金量的部分去说
答:我主要哦负责数据的采集
"""
3、你负责这一部分的时候是怎么做的?遇到了那些问题?是怎么解决的?
"""
a.怎么做的?
我主要是参考了django的高级配置文件,然后将该项目也做成集成用户自定义的配置,以及全局的高级配置。代码中大量使用到了反射。
在采集信息的时候,使用到了高类聚低耦合的思想,将每一个服务器的信息做成一个个的独文件,比如CPU相关的信息,全放在该文件下,且该文件只包含CPU相关的信息,,这样的话方便后续功能的扩展和问题的查找
参考了django的中间件,实现了插件的可插拔式的采集 django的中间件(django的请求生命周期流程图)
b.你遇到了那些问题?是怎么解决的?
可以从技术的角度 eg:linux的有些命令还不是很熟悉,以及subprocess模块不熟悉等 解决:查资料,请教运维
沟通的角度 eg: 在遇到问题的时候,我及时的和团队成员沟通交流等,可自由发挥
"""
4、你从这个项目中获取到了啥?
"""
这个问题就是纯开放性的问题了,你可以自由发挥:
eg:比如通过这个项目我对Linux的命令又收获了很多
再比如做了这个项目之后我对自动化运维有了更深层次的了解
再比如技术提升的角度:以前我做项目可能更多的是面向过程的写法,现在更多的是考虑整体项目的规划
再比如提升了沟通的能力,对多人协作开发的能力等...
...
"""
上述的四个问题同样可以运用到其他的项目中,比如说xxxx
CMDB项目是一个ToB(面向企业用户)的项目, 即这种类型的项目做出来是给企业的员工用的,类似的有CRM,erp系统。因此此项目的优势是:每一个公司的方案都差不多。但是ToC的项目就不一样。
对自己简历上写的项目, 一定要熟练
Only you can control your future
You're not alone. You still have family,peopel who care for you and want to save you.