https://www.cnblogs.com/guotianbao/p/7703921.html

资产采集的概念

资产采集的四种方式:Agent、SSH、saltstack、puppet

资产采集

Configuration Management Database 简称CMDB,CMDB存储与管理企业IT架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧密相联,支持这些流程的运转、发挥配置信息的价值,同时依赖于相关流程保证数据的准确性。CMDB可以实现高度的自动化,减少人为错误的发生、降低人员成本,CMDB是实现运维自动化的基础。

Agent方式

API:Django接收数据并入库
程序:放置在每台服务器
应用场景:针对服务器较多的公司 步骤一:
#执行本地命令的库
import subprocess
sub = subprocess.getoutput("要执行的命令名")
每台机器通过用户名密码链接数据库,获取要执行的命令 步骤二: 采集数据
import subprocess
# 采集到本机运行ipconfig命令的输出结果
result = subprocess.getoutput("ipconfig")
print(result) 步骤三: 筛选整理数据
# 正则等方式
result_dic = {
"网络信息":result,
} 步骤四:发送数据到api
# 以post方式将数据发送到url
import requests
requests.post("url", result_dic)

SSH方式

import paramiko
#通过paramiko库链接各台机器,获取命令
#缺点是慢 API:Django接收数据并入库
程序:放在中控机
应用场景:针对服务器较少的公司 SSH方式有三种工具,paramiko、Fabric、Ansible,其中Fabric、Ansible内部原理也是通过paramiko来实现得。
paramiko安装:pip3 install paramiko andible,fabic等工具对paramiko进行了封装,方便使用 速度更快一些! import requests,paramiko
#获取今天未采集的主机名
#从url中获取信息
host_list = requests.get("url") #通过paramiko连接远程服务器执行命令
#创建ssh对象
ssh = paramiko.SSHClient() #允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #连接服务器
ssh.connect(hostname="hostname", port=22, username="root", password="password") #执行命令
stdin, stdout, stderr = ssh.exec_command("hostname") #获取结果
result = stdout.read()
print(result) #关闭连接
ssh.close() #筛选整理数据
result_dic = {
"网络信息":result,
} #发送获取的数据
requests.post("url", result_dic)

saltstack方式(python语言)

方式同ssh,原理不同
优点:提高速度,开发成本低
缺点:依赖saltstack工具
可以远程执行命令 http://www.cnblogs.com/wupeiqi/articles/6415436.html API:Django接收数据并入库 应用场景:针对服务器较多的公司【推荐】 master:
v = subprocess.getoutput('salt "*" cmd.run "ls"') saltstack内部原理是通过RPC来实现得消息队列 步骤一: 安装saltstack
rpm --import https://repo.saltstack.com/yum/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub
yum install salt-master 服务端
yum install salt-minion 客户端 步骤二: Master准备
a.配置文件,修改监听ip
/etc/salt/master
interface: 本机ip地址
b.启动Master
/etc/init.d/salt-master start 步骤三: Slave准备
a.修改配置文件,连接哪个master
/etc/salt/minion
master: 远程master的ip
b.启动Slave
/etc/init.d/salt-slave start 步骤四: 创建关系
Master:salt-key -L 查看哪些连接
salt-key -a 接受连接
salt-key -A 接收全部连接 步骤五: 执行命令
Master:salt "连接" cmd.run "命令" # salt 是一个.py文件
#!/usr/bin/python
# Publish commands to the salt system from the command line on the master. from salt.scripts import salt_main
if __name__ == '__main__':
salt_main() # 在Python文件中使用salt的方法(需要提前配置好)
import salt.client
local = salt.client.LocalClient()
result = local.cmd('对方ip', 'cmd.run', ['命令']) # result是一个字典
result.keys() # 命令
result.values() # 执行结果

puppet(ruby语言)

内部原理:puppet客户端每30秒钟自动汇报数据给puppet服务端。

应用场景:主要是针对已经在使用puppet的公司。

基于ruby

优点:自动汇报

缺点:要用ruby写

CMDB资产采集的四种方式的更多相关文章

  1. CMDB资产采集笔记

    一.资产采集四种方式 1. Agent方式 API:Django接收数据并入库 程序:放置在每台服务器 应用场景:针对服务器较多的公司 步骤一: #执行本地命令的库 import subprocess ...

  2. CMDB资产采集方案

    CMDB资产采集方案 CMDB 资产采集的方案总共有四种 Agent SSH类 Saltstack Puttet 方案设计,从性能上考虑 下面前三种是用Python开发的,目标是兼容三种采集方式的软件 ...

  3. C#批量插入数据到Sqlserver中的四种方式

    我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...

  4. 【Java EE 学习 80 下】【调用WebService服务的四种方式】【WebService中的注解】

    不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jd ...

  5. ASP.NET MVC之下拉框绑定四种方式(十)

    前言 上两节我们讲了文件上传的问题,关于这个上传的问题还未结束,我也在花时间做做分割大文件处理以及显示进度的问题,到时完成的话再发表,为了不耽误学习MVC其他内容的计划,我们今天开始好好讲讲关于MVC ...

  6. SWT组件添加事件的四种方式

    在我们CS日常开发过程中会经常去为组件添加事件,我们常用的为AWT与SWT.SWT的事件模型是和标准的AWT基本一样的.下面将按照事件的四种写法来实现它. 一.匿名内部类的写法 new MouseAd ...

  7. Java实现文件复制的四种方式

    背景:有很多的Java初学者对于文件复制的操作总是搞不懂,下面我将用4中方式实现指定文件的复制. 实现方式一:使用FileInputStream/FileOutputStream字节流进行文件的复制操 ...

  8. C#_批量插入数据到Sqlserver中的四种方式

    先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...

  9. java 20 -10 字节流四种方式复制mp3文件,测试效率

    电脑太渣,好慢..反正速率是: 高效字节流一次读写一个字节数组 > 基本字节流一次读写一个字节数组 > 高效字节流一次读写一个字节 > 基本字节流一次读写一个字节 前两个远远快过后面 ...

随机推荐

  1. web万维网 -- 基础概念

    Web(万维网World Wide Web的简称)是个包罗万象的万花筒,不同的人从不同的角度观察,对于Web究竟是什么会得出大不相同的观点. 百科:web(World Wide Web)即全球广域网, ...

  2. vue基于页面中按钮权限控制

    main.js // 权限 /** 权限指令,对按钮权限的控制 **/ Vue.directive('allow', { bind: function(el, binding) { // 通过当前按钮 ...

  3. podium micro-frontends 简单试用

    以下是一个简单的podium 试用,包含了layout 以及podlets,使用docker 运行 podium 主要包含了两大部分 podlets 片段服务 layouts 片段组合服务 环境准备 ...

  4. [技术博客] 用户验证码验证机制---redis缓存数据库的使用

    目录 问题引入 初识redis 实际应用 作者:马振亚 问题引入 在这次的开发过程中,我们的需求中有一个是普通用户可以通过特定的机制申请成为社长.因为只有部分人才能验证成功,所以这个最开始想了两种思路 ...

  5. [Beta阶段]第十次Scrum Meeting

    Scrum Meeting博客目录 [Beta阶段]第十次Scrum Meeting 基本信息 名称 时间 地点 时长 第十次Scrum Meeting 19/05/16 大运村寝室6楼 30min ...

  6. activeMQ 的启动 停止 查看状态

    1 启动 : 进入到activeMQ 的 bin 目录,执行   ./activemq start  开启 ,如下: 2  查看activeMQ 是不是启动的状态, ./activemq  statu ...

  7. HTTPS原理分析

    引言 随着互联网安全意识的普遍提高,对安全要求稍高的应用中,HTTPS的使用是很常见的,所以,无论是即时通讯IM还是其它应用,在网络安全意识增强的今天,很多场景下使用HTTPS是肯定没错的.对于即时通 ...

  8. [转]js判断数据类型的四种方法

    原文地址:https://www.cnblogs.com/crackedlove/p/10331317.html 1.typeof typeof是一个操作符,其右侧跟一个一元表达式,并返回这个表达式的 ...

  9. H5+js调用相机

    在机缘巧合之下,了解到用HTML5和javascript调用摄像头来实现拍照功能,今天就把大致原理写下来.页面布局很简单,就是一个input标签,两个HTML5元素video.canvas和一个but ...

  10. git冲突处理-Please move or remove them before you can merge

    参考:https://www.cnblogs.com/wenlj/p/5866356.html https://my.oschina.net/lixiaoyan/blog/1821947 #### 将 ...