一、为什么要做CMDB
a.项目开发和上线场景:
流程:
产品经理调研需求 =====> 定一个时间开发 ======> 测试() ====> 产品项目上线(运维)
传统做法:
运维解压文件, 部署到相对应的服务器目录下面
存在问题:
效率不高
不能实现覆盖有Bug的代码
解决方法:
代码上线系统
必要条件:
服务器的IP地址, 硬盘空间, CPU的使用率, 内存等
b.监控服务器:
传统做法:
shell脚本来去做
问题:
不能实时
不能自动化
现在做法:
后台用Python去做, 收集一下服务的元信息(IP地址, 硬盘大小, 内存)
前台配合kibana
c. 装机服务:
服务器装操作系统 (centos)
现在做法:
自动装机服务
也得知道一下, 服务的元信息 IP地址
d. 年底统计:
之前做法:
使用excel统计
存在问题:
不能实时, 需要对变更进行记录
现在做法:
统计资产的系统
还得需要收集服务器的各种信息, 需要实时的汇报变更记录
二、CMDB:资产管理系统
1、本质:收集服务器的各种信息
2、开发CMDB的思路和大概做法:
使用Python代码执行linux的命令, 并且获取服务器上的对应信息
使用Http协议发送执行好的数据
3、CMDB的四套方案
①agent模式
优点:速度快 缺点:每次都需要部署 适用的场景:服务器数量特别多的情况
架构:
在待采集的服务器上部署agent脚本,利用agent采集服务器信息,
采集完成之后,通过requests模块中post方法,将数据post到API中,
API拿到数据进行二次分析,分析完成之后连接数据库将数据存储到数据库中,数据库中的信息就是我们想要的数据,
为了让用户方便的查看数据,用django的web管理服务将数据展示到前端,用户可以通过界面来管理服务器中所有的信息。
②ssh类模式
缺点:使用paramiko登录服务器的话, 速度比较慢 优点: 不需要部署agent脚本 适用场景:服务器比较少 (100台以下)
架构:
有一台服务器充当中控机,在中控机上需要安装一个paramoko模块,通过paramiko模块可以登录待集的服务器上执行命令,执行完命令之后,会把命令的执行结果返回到中控机上,中控机上就有采集的信息。
中控机通过requests模块中post方法,将数据post到API中,
API拿到数据进行二次分析,分析完成之后连接数据库将数据存储到数据库中,数据库中的信息就是我们想要的数据,
为了让用户方便的查看数据,用django的web管理服务将数据展示到前端,用户可以通过界面来管理服务器中所有的信息。
③saltstack模式
优点: 不用写Python代码 使用场景: 服务器上已经部署了salt-stack或者想要使用salt-stack
架构:
有一台服务器充当中控机,需要在中控机上安装salt-master,需要在要采集的服务器上安装salt-minion,中控机连接要采集的服务器,并发送linux相关命令,待采集的服务器将执行结果返回给中控机。
中控机通过requests模块中post方法,将数据post到API中,
API拿到数据进行二次分析,分析完成之后连接数据库将数据存储到数据库中,数据库中的信息就是我们想要的数据,
为了让用户方便的查看数据,用django的web管理服务将数据展示到前端,用户可以通过界面来管理服务器中所有的信息。
saltstack安装配置:
①安装和配置
master端
1、安装salt-master
yum install salt-master
2. 修改配置文件:vim /etc/salt/master
interface: 10.0.0.100 # 表示Master的IP
3. 启动
service salt-master start
slave端
1、安装salt-minion
yum install salt-minion
2. 修改配置文件:vim /etc/salt/minion
master: 10.0.0.100 # 表示Master的IP
3. 启动
service salt-minion start
②授权
[root@zgs ~]# salt-key -L # 查看已授权和未授权的slave Accepted Keys: Denied Keys: Unaccepted Keys: zgs Rejected Keys: [root@zgs ~]# salt-key -A # 把未授权的授权 The following keys are going to be accepted: Unaccepted Keys: zgs Proceed? [n/Y] y Key for minion zgs accepted. [root@zgs ~]# salt-key -L Accepted Keys: zgs Denied Keys: Unaccepted Keys: Rejected Keys:
③执行命令:在master服务器上对salve进行远程操作
[root@zgs ~]# salt "*" cmd.run 'ifconfig' # 查看ip