目录

1.为啥要做cmdb

2.开发cmdb的思路和大概做法

3.cmdb的四套方案

一、为啥要做CMDB

a.项目发开和上线场景

流程:

产品经理调研需求 ===》定一个时间开发 ===》测试 ===》产品项目上线(运维)

传统做法:

运维解压文件(以邮件的形式发给运维),将代码部署到相对应的服务器目录下面。如果是由100等的话就是写shell脚本,后面跟着一串服务器的列表,然后把项目代码部署分发到每个服务器上,然后再用一个命令进行解压

存在问题:

--效率不高

--不能实现覆盖Bug的代码(代码需要完bug之后就要重新走一套流程,效率极低)

解决方法:

代码上线系统:

前端展示给用户页面,用户可选择要上传的代码,页面还展示了公司所有的服务器和对应的ip地址可以进行勾选,然后点击上传即可。

这样就不需要交给运维人员了,运维只要告诉你有什么权限,然后分配了哪几台机器,再去选择需要发布的服务器,上传交给后端(使用django去改写shell脚本的那一套)

如果需要修改代码的话,也是直接发布提交,然后后台会自动的进行代码之间的比较

-------------------必要的条件:服务器的IP地址,硬盘空间,CPU的使用率,内存等

b.监控服务器

(监控服务器的报警信息:公司的服务器运行好多程序,会有好多的图表,就是监控这个服务|应用|网址的状态码等的一些变化信息)

传统做法:

shell脚本执行命令

问题:

--不能实时

--不能自动化

现在做法:

后台用python去做,收集一下服务的元信息(IP地址,硬盘大小,内存)

前台配合kibana

c.装机服务

(服务器操作系统(centos):将服务器格式化之后装成我们自己想要的系统并且还需要装公司定制的服务)

做法:

自动装机服务(将网线插入,然后输入指令就会自动装机,而且是并发的执行)

必要条件:

服务器的元信息,IP地址

d.年底统计

之前的做法:

使用excel统计服务器(ip地址,内存,硬盘大小等等)

存在问题:

--不能实时,需要对变更进行记录(哪台服务器哪一天由谁操作从250G变成了50G)

现在的做法:

统计资产的系统

必要条件:

服务器的各种信息,需要实时的汇报变更记录

cmdb:

资产管理系统(以上的所有的系统都需要smdb作为前提,包括服务器的ip,硬盘,cpu等等,以上的系统可以向cmdb要数据,也就是cmdb写接口,然后其他系统可以调用cmdb使用,cmdb管理服务器各种信息包括变更记录也是实时汇报)

业界方案都差不多

本质上就是:收集服务器的各种信息

总:

-实现运维自动化,而CMDB是实现运维自动化的基石
-之前公司统计资产的时候,使用Excel来统计,为了年底资产审计方便,因此需要做CMDB

二、开发cmdb的思路和大概做法

--使用python代码执行linux的命令,并且获取服务器上的对应信息

--使用Http协议发送执行好的数据

三、cmdb的四套方案

---agent模式

采集的服务器们(客户端)都是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)



优点:速度快

缺点:每次都需要部署

适用的场景:
服务器数量特别多的情况

---ssh类模式

中控机的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模式

(也是一个采集的架构,中控机上装着一个软件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 install salt-master
编辑vim /etc/salt/master
然后启动服务service salt-master start 重启的话是service salt-master restart
查看 service salt-master status
再下载apt-get install salt-minion
启动service salt-minion start
编辑vim /etc/salt/minion
查看 ps aux | grep salt
salt-key -L
salt-key -A (授权给中控机)
salt-key -L (再次查看)
salt "*"cmd.run 'ifconfig' (执行命令)
开发的时候选择哪套方案
三套方案都实现
将三套方案集成一份代码里面,只需要在配置文件中修改配置就可以换方案,三套方案不一样的地方就是数据采集这里
https://lupython.gitee.io/2018/05/05/CMDB介绍/
 
 

---puppet模式(比较传统,不常用)

ruby on rails
puppet每隔30分钟会定时执行任务,跟方案都是一样的 自动化运维的目的和愿景:
将之前人工介入的所有的操作,全部变成各类系统
降低人力成本

 小总结:

1. 为什么要做CMDB?

   - 实现运维自动化, 而CMDB是实现运维自动化的基石
- 之前公司统计资产的时候,使用Excel来统计, 为了年底资产审计方便,因此需要做CMDB 2. CMDB的架构方案是什么?
- 调研的几套方案
- agent
- ssh类
- saltstack 3. 你们公司选用的是第几套方案? 根据公司的规模来去说 小公司的话, 第二套或者第三套
大公司的话, 第一套方案

cmdb简介的更多相关文章

  1. Ansible - 简介和应用自动化基础实践

    installAnsible简介和应用自动化基础实践 一.引入: 1.1  如官方定义,Ansible is The simplest way to automate apps and IT infr ...

  2. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  3. 巧用Salt,实现CMDB配置自动发现

    随着互联网+新形势的发展,越来越多的企业步入双态(稳敏双态)IT时代,信息化环境越来越复杂,既有IOE三层架构,也有VCE.Openstack等云虚拟化架构和互联网化的分布式大数据架构.所以,企业急需 ...

  4. 双态运维分享之:业务场景驱动的服务型CMDB

    最近这几年,国内外CMDB失败的案例比比皆是,成功的寥寥可数,有人质疑CMDB is dead?但各种业务场景表明,当下数据中心运维,CMDB依然是不可或缺的一部分,它承载着运维的基础,掌握运维的命脉 ...

  5. 双态运维分享之二: 服务型CMDB的消费场景

    近年来,CMDB在IT运维管理中的价值逐步得到认可,使用CMDB的期望值也日益增长.然而,CMDB实施和维护的高成本却一直是建设者们的痛点.那么今天,我们来探讨一下如何通过消费来持续驱动CMDB的逐步 ...

  6. CMDB经验分享之 – 剖析CMDB的设计过程

    作为IT管理的核心,CMDB逐渐成为系统管理项目实施的热点.在很多的案例中,由于忽视了CMDB的因素,ITIL的深入应用受到了极大的挑战.同时,由于CMDB是IT管理信息的集中,CMDB也是一个重要的 ...

  7. 最大开源代码sourceforge 简介 及视音频方面常用的开源代码

    所有的音视频凯源代码在这里:http://sourceforge.net/directory/audio-video/os:windows/,你可以下载分析,视频不懂请发邮件给我,帮你分析. 0.视频 ...

  8. Ansible CMDB

    Ansible CMDB CMDBAnsible-CMDB CMDB 文章目录 1. 简介 2. 安装 2.1. 1. 安装 ansible 2.2. 2. 下载并安装 ansible-cmdb 3. ...

  9. python简介及详细安装方法

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

随机推荐

  1. python登陆接口编写

    #coding:utf-8 import getpass,sys i=0 j=0 while i<3: username=raw_input('username:') #输入用户名 life_1 ...

  2. 添加找回鼠标右键新建菜单里的新建office2003/2007/2010文档的简洁方法

    鼠标右键新建菜单里的新建office文档丢失了怎么办?我们可以通过一些优化设置软件如优化大师来定制,但更简单的方法是只需要导入相应的注册表设置就行了. 下面即在鼠标右键新建菜单里添加新建office2 ...

  3. 【基础篇】hexo博客搭建教程

    [基础篇]搭建hexo博客(一) 作者:Huanhao bilibili:Mrhuanhao 前言 你是否想拥有属于自己的博客?你是否无奈与自己不会写网站而烦恼? 不要担心,本系列教程将会实现你白嫖的 ...

  4. 线程状态,BLOCKED和WAITING有什么区别

    线程可以通过notify,join,LockSupport.park方式进入wating状态,进入wating状态的线程等待唤醒(notify或notifyAll)才有机会获取cpu的时间片段来继续执 ...

  5. python正则表达式之re模块方法介绍

    python正则表达式之re模块其他方法 1:search(pattern,string,flags=0) 在一个字符串中查找匹配 2:findall(pattern,string,flags=0) ...

  6. 【MySQL 原理分析】之 Explain & Trace 深入分析全模糊查询走索引的原理

    一.背景 今天,交流群有一位同学提出了一个问题.看下图: 之后,这位同学确实也发了一个全模糊查询走索引的例子: 到这我们可以发现,这两个sql最大的区别是:一个是查询全字段(select *),而一个 ...

  7. Java实现生产者消费者(一)

    问题描述:生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时 ...

  8. django models中字段

    AutoField:一个自动递增的整型字段,添加记录时它会自动增长.你通常不需要直接使用这个字段:如果你不指定主键的话,系统会自动添加一个主键字段到你的model.(参阅自动主键字段) Boolean ...

  9. LCN解决分布式事务原理解析+项目实战(原创精华版)

    写在前面: 原创不易,如果觉得不错推荐一下,谢谢! 由于工作需要,公司的微服务项目需解决分布式事务的问题,且由我进行分布式事务框架搭建和整合工作. 那么借此机会好好的将解决分布式事务的内容进行整理一下 ...

  10. Python包的应用

    包的简介 你们听到的包,可不是女同胞疯狂喜欢的那个包,我们来看看这个是啥包 官方解释: ? 1 2 3 4 5 6 7 8 9 Packages are a way of structuring Py ...