CMDB資產採集方案

CMDB資產採集方案

CMDB 資產採集的方案總共有四種

  • Agent
  • SSH類
  • Saltstack
  • Puttet

方案設計,從性能上考慮html

下面前三種是用Python開發的,目標是兼容三種採集方式的軟件python

原理要明白django

如何實現自動採集?
subprocess
Linux基本命令
v = subprocess.getoutput('ls')vim

1 Agent方式

  • API:Django接收數據併入庫
  • 程序:放置在每臺服務器

應用場景:機器多的時候centos

每臺服務器都有程序,程序實現採集數據(執行subprocess),而後把數據發送到apiapi

API 接收數據併入庫(Django)

  • url
  • 發送數據格式
  • 返回值

agent程序放在每臺服務器

agent程序放在每臺服務器,這是採集本機的數據,速度快,採集完後發送到API
subprocess.getoutput('ifconfig')ruby

agent程序服務器

import subprocess

v1 = subprocess.getoutput('ipconfig')  # 查看的是本機IP

v2 = subprocess.getoutput('dir')  # 查看本機

import requests

url = 'http://127.0.0.1:8000/asset.html'
response = requests.post(url, data={'k1': v1, 'k2': v2})  # 使用request模塊進行post進行訪問
print(response.text)

api程序dom

from django.shortcuts import render,HttpResponse

def asset(request):
    if request.method == "POST":
        print(request.POST)  # 打印接收的內容
        return HttpResponse("1001")  # 返回值
    else:
        return HttpResponse("用post訪問")

當agent程序訪問的時候,api就接收到了數據,這裏還有一點是,Django中先把csrf註釋ssh

2 SSH類

場景:paramiko(機器少)

  • API:Django接收數據併入庫
  • 程序:放在中控機,中控機遠程鏈接機器,這裏藉助paramiko

或者

  • Paramiko,中控機放一份 遠程鏈接服務器,執行命令,獲取結果
  • 將結果發送API
ssh方式
    封裝了Python的paramiko
    fabric
    ansible

中控機

遠程鏈接服務器,執行,
結果發送到api

中控機鏈接中的程序

  • 注意端口和密碼
  • 接收到的數據是字節,須要decode
import paramiko

# 建立SSH對象
ssh = paramiko.SSHClient()
# 容許鏈接不在know_hosts文件中的主機
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 鏈接服務器
ssh.connect(hostname='192.168.11.126', port=8888, username='root', password='密碼')

# 執行命令
stdin, stdout, stderr = ssh.exec_command('ls')
# 獲取命令結果
result = stdout.read()

# 關閉鏈接
ssh.close()


print(result.decode())  # 把字節數據轉換


import requests

url = 'http://127.0.0.1:8000/asset.html'
response = requests.post(url, data={'k1': result})  # 使用request模塊進行post進行訪問
print(response.text)

3 Saltstack

場景:機器多的時候,公司正在用

salt-master 的interface設置成主機的IP,salt-minionshe

安裝

參考: http://repo.saltstack.com/#rhel

Master

1. 安裝salt-master
    yum install salt-master
2. 修改配置文件:/etc/salt/master
    interface: 0.0.0.0    # 表示Master的IP 
3. 啓動
    service salt-master start

Minion

1. 安裝salt-minion
    yum install salt-minion

2. 修改配置文件 /etc/salt/minion
    master: 10.211.55.4           # master的地址
    或
    master:
        - 10.211.55.4
        - 10.211.55.5
    random_master: True

    id: c2.salt.com                    # 客戶端在salt-master中顯示的惟一ID
3. 啓動
    service salt-minion start

注意:

在修改配置文件的時候,interface master 冒號後面要有空格

查看啓動狀態

systemctl status salt-master systemctl status salt-minion

配置

配置主要是/etc/salt/master 和 /etc/salt/minion

minion要指定指定的IP是主的IP

受權

salt-key -L                    # 查看已受權和未受權的slave
salt-key -A     所有受權   
salt-key -a  salve_id      # 接受指定id的salve
salt-key -r  salve_id      # 拒絕指定id的salve
salt-key -d  salve_id      # 刪除指定id的salve

遇到錯誤:
Minion did not return. [No response]

解決:
rm -fr pki/minion/minion_master.pub

重啓服務:
systemctl restart salt-minion

參考:
http://www.cnblogs.com/phennry/p/5419451.html

centos 修改主機名

vim /etc/hostname 
經過nmtui修改,以後重啓hostnamed
systemctl restart systemd-hostnamed

salt '*' cmd.run 'ls'

salt原理:
RPC
默認維護了消息隊列

發送:master --》消息隊列-》minon1/minon2

接收:minon1/minion2--》臨時隊列--》master

4 puppet(ruby開發的)

slive 每30分鐘自動執行,而後發送到master

應用場景:公司在使用,

參考:
http://www.cnblogs.com/wupeiqi/articles/6415436.html

相關文章
相關標籤/搜索