• 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写
  • 相关阅读:
    查找代码行数和查看域名版本
    iOS10里的通知与推送
    计算有多少个岛屿
    java.lang.NoClassDefFoundError: Could not initialize class com.haoyao.shop.common.XXX
    Windows 版本Mongodb 启动
    安装第三方库 报错Python version 2.7 required, which was not found in the registry
    Python 爬虫 报错 403 HTTP Error 403: Forbidden
    廖雪峰 练习 把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字
    利用Python 2.7打印杨辉三角
    MAVEN实战 读书笔记 第二章
  • 原文地址:https://www.cnblogs.com/roygood/p/10150696.html
Copyright © 2020-2023  润新知