CMDB资产采集方案
2017-07-26 18:52
148 查看
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程序
import subprocess v1 = subprocess.getoutput('ipconfig') # 查看的是本机IP v2 = subprocess.getoutput('dir') # 查看本机 import requests url = 'http://127.0.0.1:8000/asset.html' response = requests.post(url, data={'k1': v1, 'k2': v2}) # 使用request模块进行post进行访问 print(response.text)
api程序
from django.shortcuts import render,HttpResponse def asset(request): if request.method == "POST": print(request.POST) # 打印接收的内容 return HttpResponse("1001") # 返回值 else: return HttpResponse("用post访问")
当agent程序访问的时候,api就接收到了数据,这里还有一点是,Django中先把csrf注释
2 SSH类
场景:paramiko(机器少)
- API:Django接收数据并入库
- 程序:放在中控机,中控机远程连接机器,这里借助paramiko
或者
- Paramiko,中控机放一份 远程连接服务器,执行命令,获取结果
- 将结果发送API
ssh方式 封装了Python的paramiko fabric ansible
中控机
远程连接服务器,执行,
结果发送到api
中控机连接中的程序
- 注意端口和密码
- 接收到的数据是字节,需要decode
import paramiko # 创建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()) # 把字节数据转换 import requests 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 install salt-master 2. 修改配置文件:/etc/salt/master interface: 0.0.0.0 # 表示Master的IP 3. 启动 service salt-master start
Minion
1. 安装salt-minion yum install salt-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
参考:
http://www.cnblogs.com/phennry/p/5419451.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资产采集笔记
- CMDB资产采集
- CMDB资产采集SaltStack
- 完整的WEB站点信息采集方案
- 友善之臂视频监控方案源码学习(6) - 视频采集
- 基于安霸方案的标清SD视频采集H.264编码设备
- 浅谈视频采集方案
- 嵌入式高速大缓存AD采集方案(基于ARM9的嵌入式解决方案)
- 信息采集实现原理Curl一揽子方案
- 【视频采集方案】
- 怎样设计网站信息采集方案
- 某资产配置平台系统方案建设规划
- 用Directshow从摄像头(采集卡设备)采集图像并录制成AVI、MP4文件的实现方案
- 基于V4L2+OPENCV的摄像头采集与图像处理方案
- 基于ARM高精度数据采集及网络传输方案
- PHP CMS采集分页文章时相对路径问题解决方案
- 公开课|如何做好一个资产系统(CMDB)
- 后端数据采集方案总结
- Python 结合Ansible 把管理资产信息自动插入到CMDB中
- cmdb-资产管理