目录:前端
1.为啥要作cmdb👀python
2.开发cmdb的思路和大概作法👀linux
3.cmdb的四套方案👀git
产品经理调研需求 ===》定一个时间开发 ===》测试 ===》产品项目上线(运维)web
运维解压文件(以邮件的形式发给运维),将代码部署到相对应的服务器目录下面。若是是由100等的话就是写shell脚本,后面跟着一串服务器的列表,而后把项目代码部署分发到每一个服务器上,而后再用一个命令进行解压shell
--效率不高数据库
--不能实现覆盖Bug的代码(代码须要完bug以后就要从新走一套流程,效率极低)django
代码上线系统:json
前端展现给用户页面,用户可选择要上传的代码,页面还展现了公司全部的服务器和对应的ip地址能够进行勾选,而后点击上传便可。ubuntu
这样就不须要交给运维人员了,运维只要告诉你有什么权限,而后分配了哪几台机器,再去选择须要发布的服务器,上传交给后端(使用django去改写shell脚本的那一套)
若是须要修改代码的话,也是直接发布提交,而后后台会自动的进行代码之间的比较
-------------------必要的条件:服务器的IP地址,硬盘空间,CPU的使用率,内存等
(🔯监控服务器的报警信息:公司的服务器运行好多程序,会有好多的图表,就是监控这个服务|应用|网址的状态码等的一些变化信息♍)
shell脚本执行命令
--不能实时
--不能自动化
后台用python去作,收集一下服务的元信息(IP地址,硬盘大小,内存)
前台配合kibana
(👍服务器操做系统(centos):将服务器格式化以后装成咱们本身想要的系统而且还须要装公司定制的服务👍)
自动装机服务(将网线插入,而后输入指令就会自动装机,并且是并发的执行)
服务器的元信息,IP地址
使用excel统计服务器(ip地址,内存,硬盘大小等等)
--不能实时,须要对变动进行记录(哪台服务器哪一天由谁操做从250G变成了50G)
统计资产的系统
服务器的各类信息,须要实时的汇报变动记录
😊资产管理系统(以上的全部的系统都须要smdb做为前提,包括服务器的ip,硬盘,cpu等等,以上的系统能够向cmdb要数据,也就是cmdb写接口,而后其余系统能够调用cmdb使用,cmdb管理服务器各类信息包括变动记录也是实时汇报)
业界方案都差很少
本质上就是:收集服务器的各类信息😜
总:
-实现运维自动化,而CMDB是实现运维自动化的基石
-以前公司统计资产的时候,使用Excel来统计,为了年末资产审计方便,所以须要作CMDB
--使用python代码执行linux的命令,而且获取服务器上的对应信息
--使用Http协议发送执行好的数据
采集的服务器们(客户端)都是gent,而后咱们须要在每一台服务器上去部署这个采集的脚本,把采集的脚本叫agent脚本,agent脚本主要是写python代码的
python就是执行linux命令的,使用的是subprocess 模块执行命令,接下来就是将执行的结果传给(使用requests模块post方法)服务端API,
API拿到结果以后,都须要进行二次分析,将分析好的数据传给db数据,而后我能够起一个django的web服务去db中取数据
建立django项目中test文件进行测试:
# 1.agent方案 import json #导模块快捷键,按alt+enter,再按enter import subprocess res=subprocess.getoutput('ipconfig') #采集windows这台机器的ip地址 print(res[30-40]) #这台服务器的信息,res最终类型就是字符串,使用字符串的一些方法将其获取 data = json.dumps(res[30-40]) import requests ret = requests.post('http://127.0.0.1/8000',data=data)
优势:速度快
缺点:每次都须要部署
适用的场景:
服务器数量特别多的状况
中控机的paramiko ,本质就是采用ssh协议22端口逐个的去连到采集的服务器上,就会执行命令,而后将结果返回给中控机,中控机仍是经过request中的post
将数据交给API,API拿到数据以后再进行一个处理,而后将数据存到db里面,起django服务链接db
建立django项目中test文件进行测试:
#2.ssh类方案 import paramiko # 建立SSH对象 ssh = paramiko.SSHClient() # 容许链接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 链接服务器 ssh.connect(hostname='47.102.110.185', port=22, username='root', password='yayayaya20.') # 执行命令 stdin, stdout, stderr = ssh.exec_command('df') #stdin 是当xshell链接到服务器后安装软件yum ...会问你是否要安装也就是y/n,而stdin就是接受这个结果的 # 获取命令结果 result = stdout.read() print(result) # 关闭链接 ssh.close() import requests ret = requests.post("http://127.0.0.1/8000", data=data)
缺点:使用paramiko登陆服务器的话, 速度比较慢
优势: 不须要部署agent脚本
适用场景:
服务器比较少 (100)
第一套方案:
-agent模式:
优势:速度快
缺点:每次都须要部署
适用的场景:服务器数量特别多的状况
-ssh类模式:
缺点:使用paramiko登陆服务器的话,速度比较慢
优势:不须要部署agent脚本
适用场景:服务器比较少
(😁也是一个采集的架构,中控机上装着一个软件saltstack,是用python写的,而后也是须要saltstack里面装着saltack-master.
须要在待采集的多台服务器上装一个软件salt-minion
中控机是这样采集的salt'cmd.config'ip地址'‘ifconfig’
本质就是,中控机先连上这些服务器去发linux相关的命令,发完以后,多台服务器会将结果返回给中控机,而后中控机拿到这些消息以后,
post给API,而后API去连一下DB数据库,而后django起一个web服务去链接db数据,而后管理员就能够看到了😁)
原理:
中控机底层原理,将命令放到一个队列里面,叫zeromq,而后连上的服务端从zeromq里面取服务器要执行的而命令,而后又起了一个zeromq这样的队列,将结果放到新的zeromq里面,
而后中控机去这里面取它的结果,
优势:
不用写python代码
使用场景:
-服务器上已经部署了salt-stack或想要使用salt-stack
使用:
sudo apt-get remove sudo apt-get remove salt-master
ubuntu的配置文件怎么删除
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P 软件
apt autoremove
链接服务器,建立一个会话,个人是阿里云ubuntu ,而后部署salt-master
先下载apt-get salt-master
而后启动服务service salt-master start 重启的话是service salt-master restart
查看 service salt-master status
再下载apt-get salt-minion
启动service salt-minion start
查看 ps aux | grep salt
salt-key -L
salt-key -A
salt "*"cmd.run 'ifconfig'
❗❗❗💥
开发的时候选择哪套方案
三套方案都实现
将三套方案集成一份代码里面,只须要在配置文件中修改配置就能够换方案,三套方案不同的地方就是数据采集这里
https://lupython.gitee.io/2018/05/05/CMDB介绍/
ruby on rails
puppet每隔30分钟会定时执行任务,跟方案都是同样的
自动化运维的目的和愿景:
将以前人工介入的全部的操做,所有变成各种系统
下降人力成本
小总结:
1. 为何要作CMDB?
- 实现运维自动化, 而CMDB是实现运维自动化的基石
- 以前公司统计资产的时候,使用Excel来统计, 为了年末资产审计方便,所以须要作CMDB
2. CMDB的架构方案是什么?
- 调研的几套方案
- agent
- ssh类
- saltstack
3. 大家公司选用的是第几套方案?
根据公司的规模来去说
小公司的话, 第二套或者第三套
大公司的话, 第一套方案