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寫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM