CMDB资产采集方案
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
应用场景:公司在使用,
参考:
http://www.cnblogs.com/wupeiqi/articles/6415436.html
CMDB资产采集方案的更多相关文章
- CMDB资产采集笔记
一.资产采集四种方式 1. Agent方式 API:Django接收数据并入库 程序:放置在每台服务器 应用场景:针对服务器较多的公司 步骤一: #执行本地命令的库 import subprocess ...
- CMDB资产采集的四种方式
转 https://www.cnblogs.com/guotianbao/p/7703921.html 资产采集的概念 资产采集的四种方式:Agent.SSH.saltstack.puppet 资产采 ...
- CMDB资产采集
Agent(方式) 1:服务器每台都需要安装Agent 达到采集速度快,简单:造成性能损耗 获取每台服务器的资产并有返回值:v=subprocess.getoutput('dir')或者ipconfi ...
- CMDB资产采集方式
一:Agent方式 原理:在每台服务器装上agent客户端程序,定时向数据库发送指定的资产信息. 优点:速度快. 缺点:服务器上需要多装一个软件 import subprocess import re ...
- CMDB02/ 单例模式、资产采集参考命令、日志处理
CMDB02/单例模式.资产采集参考命令.日志处理 目录 CMDB02/单例模式.资产采集参考命令.日志处理 1. 单例模式 1.1 多例模式 1.2 单例模式 1.2.1 单例模式/错误 1.2.2 ...
- CMDB服务器管理系统【s5day91】:资产采集相关问题
资产采集唯一标识和允许临时修改主机名 class AgentClient(BaseClient): def exec(self): obj = PluginManager() server_dict ...
- CMDB学习之八,完成所有资产采集信息的收集
#!/usr/bin/env python # -*- coding:utf-8 -*- import traceback from .base import BasePlugin from lib. ...
- Python之CMDB资产管理系统
最近正好在给公司做CMDB资产管理系统,现在做的也差不多了,现在回头吧思路整理下. CMDB介绍 CMDB --Configuration Management Database 配置管理数据库, C ...
- CMDB03 /今日未采集的资产、资产入库、资产变更记录、资产采集
CMDB03 /今日未采集的资产.资产入库.资产变更记录.资产采集 目录 CMDB03 /今日未采集的资产.资产入库.资产变更记录.资产采集 1. 获取今日未采集的服务器 2. server资产入库以 ...
随机推荐
- Vue实现一个MarkDown编辑器
Vue实现一个markdown编辑器 前段时间做项目的时候,需要一个Markdown编辑器,在网上找了一些开源的实现,但是都不满足需求 说实话,这些开源项目也很难满足需求公司项目的需求,与其实现一个大 ...
- time元素 pubdate属性
time元素和pubdate属性 https://blog.csdn.net/ziy10231207/article/details/51883397
- linux下安装QQ等EXE文件
安装好linux系统后,发现linux很多自带的软件用起来很不习惯,于是去网上下载QQ等在Windows下经常使用的exe文件. 发现这些文件无法安装,在网上找了一些解决办法,须下载wine,然后才可 ...
- MySQL学习中,遇到的问题记录
一.安装mysql时,报错:1045 原因:因为之前安装过mysql,之后再安装会出现这个问题. 解决: 删除之前的残留就好了 方法:清除mysql之前的历史残留
- 小a和uim之大逃离(luogu P1373 dp)
小a和uim之大逃离(luogu P1373 dp) 给你一个n*m的矩阵,其中元素的值在1~k内.限制只能往下和往右走,问从任意点出发,到任意点结束,且经过了偶数个元素的合法路径有多少个.在此题中, ...
- codevs1052 地鼠游戏
1052 地鼠游戏 题目描述 Description 王钢是一名学习成绩优异的学生,在平时的学习中,他总能利用一切时间认真高效地学习,他不但学习刻苦,而且善于经常总结.完善自己的学习方法,所以他总能在 ...
- crm项目整理概要
一.开发背景 由于公司人员的增多,原来通过excel表格存取方式过于繁琐,而且对于公司人员的调配和绩效考核等不能做到精确处理,所以开发crm系统,开始开发只是针对销售人员和客户,后面陆续加上一些操作, ...
- 编译最新linux内核(version 4.4.2)
环境:centos6.4 内核版本为2.6.32 目标:编译4.4.2内核,升级到 4.4.2 准备工作: 安装开发库和ncurses库 # yum groupinstall "Develo ...
- Linux下从零开始学习Python之环境搭建
我本人用的是Centos7.4版本,下载地址 archive.kernel.org/centos-vault/7.4.1708/isos/x86_64/CentOS-7-x86_64-DVD-1708 ...
- Linux 中 ip netns 命令
通过 ip netns help 可以查看所有关于ip netns的命令: network namespace 在逻辑上是网络堆栈的一个副本,它有自己的路由.防火墙规则和网络设备. ip netns ...