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)
agent实现方式

 

 

二: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)
SSH采集方式

 

 

 三: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)
Saltstack

 

 四:puppet

原理:服务器端主动向中间件发送数据,中间件将数据通过API存入数据库。

优点:自动向中间件服务器提供数据

缺点:中间件puppet使用ruby开发

 

以上是关于CMDB资产采集方式的主要内容,如果未能解决你的问题,请参考以下文章

CMDB资产采集方式

CMDB资产采集方式之puppet

CMDB资产采集方式之ssh

CMDB资产采集方式之saltstack

Day73-CMDB(资产管理采集)的三种实现方式

CMDB项目管理