对常见的4种资产采集方案比较分析——应用于CMDB
CMDB 资产采集的方案总共有四种
· Agent
· SSH类
· Saltstack
· Puttet
方案设计,从性能上考虑
下面前三种是用Python开发的,目标是兼容三种采集方式的软件
原理要明白
如何实现自动采集?
subprocess
Linux基本命令
v = subprocess.getoutput('ls')
1 Agent方式
· API:Django接收数据并入库
· 程序:放置在每台服务器
应用场景:机器多的时候
每台服务器都有程序,程序实现采集数据(执行subprocess),然后把数据发送到api
API 接收数据并入库(Django)
· url
· 发送数据格式
· 返回值
agent程序放在每台服务器
agent程序放在每台服务器,这是采集本机的数据,速度快,采集完后发送到API
subprocess.getoutput('ifconfig')
agent程序
importsubprocess
v1 = subprocess.getoutput('ipconfig') # 查看的是本机IP
v2 = subprocess.getoutput('dir') # 查看本机
importrequests
url = 'http://127.0.0.1:8000/asset.html'
response = requests.post(url, data={'k1': v1, 'k2': v2}) # 使用request模块进行post进行访问
print(response.text)
api程序
fromdjango.shortcuts importrender,HttpResponse
defasset(request):
ifrequest.method == "POST":
print(request.POST) # 打印接收的内容
returnHttpResponse("1001") 5b4 # 返回值
else:
returnHttpResponse("用post访问")
当agent程序访问的时候,api就接收到了数据,这里还有一点是,Django中先把csrf注释
2 SSH类
场景:paramiko(机器少)
· API:Django接收数据并入库
· 程序:放在中控机,中控机远程连接机器,这里借助paramiko
或者
· Paramiko,中控机放一份远程连接服务器,执行命令,获取结果
· 将结果发送API
ssh方式
封装了Python的paramiko
fabric
ansible
中控机
远程连接服务器,执行,
结果发送到api
中控机连接中的程序
· 注意端口和密码
· 接收到的数据是字节,需要decode
importparamiko
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='192.168.11.126', port=8888, username='root', password='密码')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls')
# 获取命令结果
result = stdout.read()
# 关闭连接
ssh.close()
print(result.decode()) # 把字节数据转换
importrequests
url = 'http://127.0.0.1:8000/asset.html'
response = requests.post(url, data={'k1': result}) # 使用request模块进行post进行访问
print(response.text)
3 Saltstack
场景:机器多的时候,公司(乐维)正在用
salt-master 的interface设置成主机的IP,salt-minionshe
安装
参考: http://repo.saltstack.com/#rhel
Master
1. 安装salt-master
yum installsalt-master
2. 修改配置文件:/etc/salt/master
interface: 0.0.0.0 # 表示Master的IP
3. 启动
service salt-masterstart
Minion
1. 安装salt-minion
yum installsalt-minion
2. 修改配置文件/etc/salt/minion
master: 10.211.55.4 # master的地址
或
master:
- 10.211.55.4
- 10.211.55.5
random_master: True
id: c2.salt.com # 客户端在salt-master中显示的唯一ID
3. 启动
service salt-minion start
注意:
在修改配置文件的时候,interface master 冒号后面要有空格
查看启动状态
systemctl status salt-master systemctl status salt-minion
配置
配置主要是/etc/salt/master 和/etc/salt/minion
minion要指定指定的IP是主的IP
授权
salt-key-L # 查看已授权和未授权的slave
salt-key-A 全部授权
salt-key-a salve_id # 接受指定id的salve
salt-key-r salve_id # 拒绝指定id的salve
salt-key-d salve_id # 删除指定id的salve
遇到错误:
Minion did not return. [No response]
解决:
rm -fr pki/minion/minion_master.pub
重启服务:
systemctl restart salt-minion
参考:
https://www.geek-share.com/detail/2672253325.html
centos 修改主机名
vim/etc/hostname
通过nmtui修改,之后重启hostnamed
systemctl restart systemd-hostnamed
salt '*' cmd.run 'ls'
salt原理:
RPC
默认维护了消息队列
发送:master--》消息队列-》minon1/minon2
接收:minon1/minion2--》临时队列--》master
4 puppet(ruby开发的)
slive 每30分钟自动执行,然后发送到master
转自
(出处: 乐维论坛)
- 常见文章、图文素材采集软件优缺点比较分析
- CMDB资产采集方案
- c++几种常见STL容器比较和分析 hashmap, map, vector, list
- TI、海思、NXP、安霸方案比较分析
- Freesacle主板方案,CVBS四路模拟视频主板,仪器|仪表|数据采集|数据分析|信号控制|硬件定制,单片机
- 几种常见的中文分词包的分析与比较
- 3.9重建二叉树(各种方案的分析比较及扩展问题的分析)
- WEB打印系列教程之一--基于Web的打印方案比较分析
- Redis常见集群方案、Codis实践及与Twemproxy比较
- E1配置与分析(4种常见E1组网结构)-史上最全
- 国内常见开源免费PHP CMS内容管理系统比较分析【转】
- 【转】.NET深入学习笔记(2):C#中判断空字符串的4种方法性能比较与分析
- 各大热补丁方案分析和比较
- MySQL可靠性方案分析与比较
- 几种常见 容器 比较和分析 hashmap, map, vector, list ...hash table
- 3.9重建二叉树(各种方案的分析比较及扩展问题的分析)
- 图论中的常见算法分析比较和模板
- XML格式的网站配置文件常见读写方案比较 (来源Internet)
- 几种常见容器比较和分析 hashmap, map, vector, list, hash table
- [信盈达推荐]嵌入式开发中几种常见开源协议比较分析