美文网首页
CMDB总结

CMDB总结

作者: aq_wzj | 来源:发表于2019-01-09 19:26 被阅读0次

1. 为啥要使用cmdb?

因为现在统计资产,使用的是Excel表格,资产变更的时候在上面记录一下
但是随着业务的增加,Excel表越来越乱, 到后面就没法看了
最致命的问题是:
有些人不遵守这个规则, 在某台服务器上插了硬盘他不去记录
所以这时候excel表没法用了

目标:
    让所有的资产收集全部自动化

2. cmdb四种采集方案?(重点是在前三)

详细: https://www.jianshu.com/p/50f5b0ac8a90

1. agent
    在各个服务器部署用python代码写的agent脚本
    脚本内容:
        通过subprocess模块执行命令拿到结果, 通过requests模块返回给API
    定时执行这个脚本
    
    适用于服务器多的公司
    优: 快
    缺: 每加一台新的服务器都需要部署脚本
    
2. ssh(paramiko模块)
    中控机上的paramiko通过ssh登录到服务器,
    发送命令给服务器执行,拿到结果,通过requests模块发送给API
    
    适用于服务器不是很多的公司
    优:不用部署脚本
    缺:慢
    
3. salt-stack
    有一个中控机,装salt-master,各个服务器装salt-minion
    中控机通过master发送命令给服务器执行, 拿到结果,通过requests模块发送给API
    
    适用于之前已经在用salt-stack的公司
    优:不用部署脚本,快
    缺:依赖第三方软件

3. 分块

一共分为三块
    1. 数据采集: 服务器数据到API这部分
    2. 写数据: API到数据库
    3. 展示: 通过Django将数据库数据展示给页面

4. 开发过程中遇到的困难:

技术问题: 
    salt.client模块只能在py2上跑
    采用了subprocess模块发送salt 'c2.salt.com' cmd.run  'ifconfig'这种命令
    不过技术问题都不叫问题, 都能百度或谷歌到, 业务问题才是比较麻烦的
  


业务问题:
    问题一: 唯一索引问题
        问题描述: 之前用的唯一索引是SN号, 但是开虚拟机的话, 虚拟机与实体机SN号相同
        解决方法: 用主机名作为唯一索引, 
        前提条件: 流程必须规范化, 主机名不能随意改变`不能重复
        
    问题二: agent模式下, 主机名需要改变
        问题描述: 某项业务确实需要改变主机号, 时间正好卡在agent脚本执行时
        解决方法: 在第一次执行脚本时将主机名写入文件, 以后的主机名以文件中的为准

API的验证

client加密方式: 
    MD5(设定的字符串+时间戳)|时间戳
server验证:
    截取token的时间戳,用设定的字符串+时间戳MD5加密,与传过来的对比
    
验证token是否过期,10秒
    防止拿十年前的token
    
比对token
    防止伪造
    
另外对数据进行了AES加密

验证token是否使用过
    防止黑客在十秒内拿到token并发送请求
    验证通过后将token存入Redis,过期时间十秒

特点

可插拔式的
    模仿Django的中间件, 不想搜集磁盘信息就注掉,想收集就加上
    
三种方案都可以实现,通过配置文件自由切换
三种方案.png

相关文章

网友评论

      本文标题:CMDB总结

      本文链接:https://www.haomeiwen.com/subject/ppzgrqtx.html