运维,是公司中一个必不可缺的职位,它的工做指的是对已经搭建好的网络,软件,硬件进行维护。运维领域也是细分的,有硬件运维(基础运维)和软件运维(应用运维)。html
平常工做是比较繁琐的,研发同窗会常常须要到服务器上查日志,重启应用,或者是说今天上线某个产品,须要部署下环境。这些杂事是传统运维的大部分工做。python
再部署某应用后,应用不能访问,就会听到开发人员说,在个人环境运行很好的,怎么部署到测试环境后,就不能用了,由于各种环境的类库不统一
还有一种极端状况,运维人员习惯不一样,可能凭本身的习惯来安装部署软件,每种服务器上运行软件的目录不统一。mysql
部署项目或者应用时,运维人员须要登陆服务器上执行命令,不只仅效率很低,而且很是容易出现人为的错误,一旦出现人为的错误,追溯问题将会很是不容易。nginx
使用传统的运维,运维人员会常常收到不少报警信息,多数信息是无用的,形成运维人员常常屏蔽报警信息,这样又有有其余问题。另外若是应用的访问速度出了问题,老是须要从系统、网络、数据库、等一步步的查找缘由,效率很低。web
资产管理,服务管理常常记录在excel、文本文件或者wiki中,不便于管理,老员工由于比较熟,不注重这些文档的维护,只有靠每次有新员工入职时,资产才能更正一次。sql
CMDB系统是全部运维工具的数据基础docker
Agent方式实现CMDB,在每台服务器上部署Agent脚本,将服务器上的Agent程序做为定时任务,定时将资产信息提交到指定API,进行
数据分析与清洗后录入数据库。
其本质上就是在各个服务器上执行subprocess.getoutput()命令,而后将每台机器上的执行的结果,返回给主机API,而后主机
API接受到这些数据后,放入到数据库,最终经过web界面展示给用户。
优势:速度快数据库
缺点:须要为每台服务器都部署一个Agent程序ruby
应用场景:服务器较多的状况下推荐使用服务器
中控机经过Paramiko模块登陆到各个服务器上,而后以执行命令的方式去获取各个服务器上的信息。
优势:无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()
此方案本质上和第二种方案大体是差很少的流程,中控机发送命令给服务器。服务器将结果放入另一个队列中,中控机获取将服
务器信息发送至API主机而录入数据库。
优势:速度快,开发成本低
缺点:依赖于第三方工具
master端: """ 1.安装salt-master yum install salt-master 2.修改配置文件:/etc/salt/master interface:0.0.0.0 #表示Master的Ip 3.启动 server salt-master start """ minion端: """ 1.安装salt-minion yum install salt-minion 2.修改配置文件:/etc/salt/minion master:10.0.0.51 #master的ip地址 或者(多个master,随机选择) master: - 10.0.0.51 - 10.0.0.52 random_master:True id:c2.salt.com #客户端在salt-master中显示的惟一ID 3.启动 service salt-minion start """
""" salt-key -L #查看以受权和未受权的slave salt-key -a salve_id #接受指定id的salve salt-key -r salve_id #拒绝指定id的salve salt-key -d salve_id #删除指定id的salve """
在Master服务器上对salve进行远程操做
salt 'c2.salt.com' cmd.run 'ifconfig'
基于API的方式
import salt.client local = salt.client.LocalClient() result = local.cmd('c2.salt.com','cmd.run',['ifconfig'])
参考安装:
http://www.cnblogs.com/tim1blog/p/9987313.html
https://www.jianshu.com/p/84de3e012753
每隔30分钟,经过RPC消息队列将执行的结果返回给用户