CMDB资产采集方式
Posted 孙小龙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CMDB资产采集方式相关的知识,希望对你有一定的参考价值。
一:Agent方式
原理:在每台服务器装上agent客户端程序,定时向数据库发送指定的资产信息。
优点:速度快。
缺点:服务器上需要多装一个软件
1 import subprocess 2 import requests 3 # pip3 install requests 4 5 # ################## 采集数据 ################## 6 # result = subprocess.getoutput(\'ipconfig\') 7 # result正则处理获取想要数据 8 9 # 整理资产信息 10 # data_dict ={ 11 # \'nic\': {}, 12 # \'disk\':{}, 13 # \'mem\':{} 14 # } 15 16 # ################## 发送数据 ################## 17 # requests.post(\'http://www.127.0.0.1:8000/assets.html\',data=data_dict)
二:SSH方式
原理:中间组件主动向服务器获取资产信息,然后由中间件向数据库添加数据(通过api)
优点:服务器端不用安装客户端版软件
缺点:慢
1 # 基于paramiko模块, pip3 install paramiko 2 import requests 3 import paramiko 4 5 # ################## 获取今日未采集主机名 ################## 6 #result = requests.get(\'http://www.127.0.0.1:8000/assets.html\') 7 # result = [\'c1.com\',\'c2.com\'] 8 9 10 # ################## 通过paramiko连接远程服务器,执行命令 ################## 11 # 创建SSH对象 12 ssh = paramiko.SSHClient() 13 # 允许连接不在know_hosts文件中的主机 14 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 15 # 连接服务器 16 ssh.connect(hostname=\'192.168.14.36\', port=22, username=\'wupeiqi\', password=\'123\') 17 18 # 执行命令 19 # stdin, stdout, stderr = ssh.exec_command(\'df\') 20 21 # 获取命令结果 22 # result = stdout.read() 23 24 # 关闭连接 25 # ssh.close() 26 # print(result) 27 28 # data_dict = {result} 29 30 # ################## 发送数据 ################## 31 # requests.post(\'http://www.127.0.0.1:8000/assets.html\',data=data_dict)
三:Saltstack方式
原理:和第二种类似,只不过基于第三方软件,中间件向队列中放请求,客户端向队列中不停接收请求,一旦接收到请求,服务器解析后发现需要自己返回资产信息,就执行命令并将返回结果放入另一个队列,中间件从结果队列中取数据,然后通过API存入数据库
优点:速度快,开发成本低
缺点:依赖第三方软件
1 # 1. 安装saltstack 2 # rpm --import https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub 3 # 4 # 5 """ 6 Master: yum install salt-master 7 Master准备: 8 a. 配置文件,监听本机IP 9 vim /etc/salt/master 10 interface: 本机IP地址 11 b. 启动master 12 /etc/init.d/salt-master start 13 14 15 Slave: yum install salt-minion 16 Slave准备: 17 a. 配置文件,连接那个master 18 vim /etc/salt/minion 19 master: 远程master地址 20 b. 启动slave 21 /etc/init.d/salt-minion start 22 23 2. 创建关系 24 查看 25 Master:salt-key -L 26 Accepted Keys: 27 Denied Keys: 28 Unaccepted Keys: 29 c1.com 30 c2.com 31 c3.com 32 Rejected Keys: 33 接受 34 Master:salt-key -a c1.com 35 Accepted Keys: 36 c1.com 37 c2.com 38 Denied Keys: 39 Unaccepted Keys: 40 c3.com 41 Rejected Keys: 42 43 44 3. 执行命令 45 master: 46 salt \'c1.com\' cmd.run \'ifconfig\' 47 48 import salt.client 49 local = salt.client.LocalClient() 50 result = local.cmd(\'c2.salt.com\', \'cmd.run\', [\'ifconfig\']) 51 52 """ 53 # ################## 获取今日未采集主机名 ################## 54 #result = requests.get(\'http://www.127.0.0.1:8000/assets.html\') 55 # result = [\'c1.com\',\'c2.com\'] 56 57 58 # ################## 远程服务器执行命令 ################## 59 # import subprocess 60 # result = subprocess.getoutput("salt \'c1.com\' cmd.run \'ifconfig\'") 61 # 62 # import salt.client 63 # local = salt.client.LocalClient() 64 # result = local.cmd(\'c2.salt.com\', \'cmd.run\', [\'ifconfig\']) 65 66 67 # ################## 发送数据 ################## 68 # requests.post(\'http://www.127.0.0.1:8000/assets.html\',data=data_dict)
四:puppet
原理:服务器端主动向中间件发送数据,中间件将数据通过API存入数据库。
优点:自动向中间件服务器提供数据
缺点:中间件puppet使用ruby开发
以上是关于CMDB资产采集方式的主要内容,如果未能解决你的问题,请参考以下文章