2018-10-22-Python全栈开发-day73-CMDB-信息采集方式介绍


CMDB针对自动化运维,减少人工干预,降低人员成本。可以帮助运维人员在页面上完成运维,减少错误率。

自动化的方向:

      资产管理

      操作管理(命令/机录/监控)

1.CMDB开发目的

  流程:自动装机    自动初始化    自动发布    自动监控

    将这些信息放在cmdb中供运维人员使用

2.agent

  后台服务器--web服务器---子机器(安装agent)

  agent程序可以定时采集子机器的数据,并且发送给web服务器,web服务器筛选后,在写入数据库。

  优点:速度快

  缺点:不是太安全,且每个子机器都要安装agent

  web服务器:为了防止子机器直接写入数据库,提高数据库的安全性。

3.ssh

  paramiko模块

  后台---web服务器---ssh服务器(安装paramiko模块)---子机器

  通过ssh服务器,对每个子机器进行远程操作,然后执行命令获取数据,通过格式化之后,以get或者post方式提交给web服务器,再经过筛选写入服务器

  优点:子机器中不需要安装agent

  缺点:速度比较慢,不适合大型场所

4.saltstack

  后台---web----第三方工具(saltestack)----子机器(saltstack)

  第三方工具会形成一个队列,子机器会将这个队列中的命令拿来检查是不是自己这个机器需要运行,如果是自己机器的话,则运行并且获取返回值,交到一个新的队列中,此时第三方工具再从这个新队列中拿数据,并且格式化,提交给web服务器,再写入数据库

  优点:快,开发成本低

  缺点:如果公司没有这个第三方工具就比较坑爹

5.puppet

  后台----web---puppet---子机器(salve程序)

  子机器可以定时向puppet发送数据,puppet筛选并且格式化后发给web服务器,

  优点:速度快,自动汇报

  缺点:是使用ruby语言编写的,对于我们来说用不上。

二:各种采集方式的使用方法

  agent

import subprocess,requests
v=subprocess.getoutput('df')
requests.post('url',data=v)

  ssh

import paramiko

ssh1=paramiko.SSHClient()#创建ssh对象
ssh1.set_missing_host_key_policy(paramiko.AutoAddPolicy)#允许连接不在know_hosts中的主机
ssh1.connect(hostname='url',port=22,username='ye',password='123')
stdin,stdout,stderr=ssh1.exec_command('df')
result=stdout.read()

  saltstack

#服务端和客户端都需要安装saltstack
#安装master
#vim /ect/salt/master
    #interface 设置为目前的主机ip
    
    #启动master
    #/ect/init.d/salt-matser start
    
    
#客户端安装并连接
    #vim /etc/salt/minion
    #运行
    #/ect/init.d/salt-minion start
    
#此时虽然客户端向服务端发出连接,但是服务端不一定接受


#服务端接受

#salt -key -a user

#运行命令

#salt 'user; cmd.run 'df'

  salt通过python方式进行运行

import salt.Client

local= salt.client.localclient()
ret= local.cmd('user','cmd.run','df')