CMDB 和自动化运维
传统运维和自动化运维的对比
1.企业中,项目的发布流程
产品经理调研需求 —-》三方开会讨论(开发,产品,运维,测试) —–> 开发进行开发产品
—-> 测试流程 (黑盒和白盒测试) —–> 上线
传统的上线流程:
SVN 开发将代码压缩一下发给运维,运维拿到代码之后,然后将代码解压缩,部署到服务
器上,启动服务好处:流程比较简单
坏处: 服务器多的话,部署就非常的慢,影响上线的进度
自动化运维的流程
搞一个 web 的系统,勾选发布的机器,上传代码, 进行发布
2.监控系统
需要监控服务器的 CPU 使用率,磁盘大小(>90%,报警),内存使用率
CMDB
通过上面的例子,需要做一个基石项目,提供服务器的基础信息(服务器的磁盘,cpu,
内存等),这个基石项目叫做 CMDB Configure Manage DataBase 中文叫 配置管理数
据库,主要用来收集服务器的基础信息
架构图介绍
CMDB 的几种实现方式
Agent 实现方式
Agent 方式,可以将服务器上面的 Agent 程序作定时任务,定时将资产信息提交到指定 API 录入数据库
将待采集的服务器看成一个agent,然后再服务器上使用python的subprocess模块执行linux相关的命令,然后分析得到的结果,将分析得到的结果通过requests模块发送给API,API获取到数据之后,进行二次比对数据,最后将比对的结果存入到数据库中,最后django起一个webserver从数据库中将数据获取出来,供用户查看
优点:速度快
缺点:需要为每台服务器部署一个Agent程序
ssh 实现方式(基于 Paramiko)
在中控机服务器上安装一个模块叫paramiko模块,通过这个模块登录到带采集的服务器上,然后执行相关的linux命令,最后返回执行的结果,将分析得到的结果通过requests模块发送给API,API获取到数据之后,进行二次比对数据,最后将比对的结果存入到数据库中,最后django起一个webserver从数据库中将数据获取出来,供用户查看
优点:不用 每一台都部署 Agent
缺点:速度慢
如果在服务器较少的情况下,可应用此方法
import paramiko # 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='c1.salt.com', port=22, username='root', password='123') # 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read() # 关闭连接
ssh.close()
saltstack 方式
问:如何使用 Python 代码来执行 linux 的命令?
答:subproces s模块来执行 linux 命令
问:为啥post中没有收到数据,而body中有
答:django 根据你 http 协议的头信息来判断,
如果是 content-type: application/form-url-encode的话,django 会将 body 中的数据付
给 post。如果 content-type: application/json 的话,django 不会将 body 中的数据付给 post
总结:整个架构方案分 3 个部分:客户端采集,API 数据分析,数据展示
最新文章
- 【笔记】js操作cookie
- 数据库的Disk Space usage
- 匈牙利算法 DFS模板(了解度+1)
- 【BZOJ-3337】ORZJRY I 块状链表
- DMSFrame 之简单用法(一)
- CPU GPU天梯图
- 重置mysql的root密码
- gcc常用命令介绍
- 动态规划:NOI2013 快餐店
- js Web存储方式
- javascript设计模式——享元模式
- RxSwift(一)
- 详解linux进程间通信-消息队列
- sed的替换元字符的语法
- python中使用queue实现约瑟夫环(约瑟夫问题)求解
- MYSQL查询优化:使用索引
- Chrome Adobe Flash Player 因过期而 阻止
- 如何使用g++编译调用dll的c++代码
- Spring学习笔记--自动装配Bean属性
- LAMP安全加固
热门文章
- tcp/ip 学习(一)
- 手把手教你用Python网络爬虫获取网易云音乐歌曲
- 不会看 Explain执行计划,劝你简历别写熟悉 SQL优化
- 你 MySQL 中重复数据多吗,教你一招优雅的处理掉它们!
- Java并发编程3-抽象同步队列AQS详解
- zookeeper安装部署步骤
- centOS 6.8下使用Gparted进行分区扩容
- 蒲公英 · JELLY技术周刊 Vol.08 -- 技术周刊 · npm install -g typescript@3.9.3
- Python的自定义属性访问跟描述器以及ORM模型的简单介绍
- Object类及其equals()方法