zoukankan      html  css  js  c++  java
  • 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写
  • 相关阅读:
    Kotlin Native
    大数据技术原理与应用【点个赞】
    TypeScript的概要和简介
    Windows 10 运行原生Bash【Ubuntu】
    Kotlin的参考资料
    Javascript前端和JAVA后端对加密库的处理实例
    bootstrap杂记
    原生JS实现各种经典网页特效——Banner图滚动、选项卡切换、广告弹窗等
    博文目录 | 杰瑞教育原创系列文章目录一览
    MUI框架开发HTML5手机APP(二)--页面跳转传值&底部选项卡切换
  • 原文地址:https://www.cnblogs.com/roygood/p/10150696.html
Copyright © 2011-2022 走看看