CMDB资产采集的四种方式

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写
posted @ 2018-12-20 17:27  Roygood  阅读(1561)  评论(0编辑  收藏  举报