一、为什么要做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