CMDB资产采集方案

CMDB 资产采集的方案总共有四种

  • Agent
  • SSH类
  • Saltstack
  • Puttet

方案设计,从性能上考虑

下面前三种是用Python开发的,目标是兼容三种采集方式的软件

原理要明白

如何实现自动采集?

subprocess

Linux基本命令

v = subprocess.getoutput('ls')

1 Agent方式

  • API:Django接收数据并入库
  • 程序:放置在每台服务器

应用场景:机器多的时候

每台服务器都有程序,程序实现采集数据(执行subprocess),然后把数据发送到api

API 接收数据并入库(Django)

  • url
  • 发送数据格式
  • 返回值

agent程序放在每台服务器

agent程序放在每台服务器,这是采集本机的数据,速度快,采集完后发送到API

subprocess.getoutput('ifconfig')

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程序

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注释

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

CMDB资产采集方案的更多相关文章

  1. CMDB资产采集笔记

    一.资产采集四种方式 1. Agent方式 API:Django接收数据并入库 程序:放置在每台服务器 应用场景:针对服务器较多的公司 步骤一: #执行本地命令的库 import subprocess ...

  2. CMDB资产采集的四种方式

    转 https://www.cnblogs.com/guotianbao/p/7703921.html 资产采集的概念 资产采集的四种方式:Agent.SSH.saltstack.puppet 资产采 ...

  3. CMDB资产采集

    Agent(方式) 1:服务器每台都需要安装Agent 达到采集速度快,简单:造成性能损耗 获取每台服务器的资产并有返回值:v=subprocess.getoutput('dir')或者ipconfi ...

  4. CMDB资产采集方式

    一:Agent方式 原理:在每台服务器装上agent客户端程序,定时向数据库发送指定的资产信息. 优点:速度快. 缺点:服务器上需要多装一个软件 import subprocess import re ...

  5. CMDB02/ 单例模式、资产采集参考命令、日志处理

    CMDB02/单例模式.资产采集参考命令.日志处理 目录 CMDB02/单例模式.资产采集参考命令.日志处理 1. 单例模式 1.1 多例模式 1.2 单例模式 1.2.1 单例模式/错误 1.2.2 ...

  6. CMDB服务器管理系统【s5day91】:资产采集相关问题

    资产采集唯一标识和允许临时修改主机名 class AgentClient(BaseClient): def exec(self): obj = PluginManager() server_dict ...

  7. CMDB学习之八,完成所有资产采集信息的收集

    #!/usr/bin/env python # -*- coding:utf-8 -*- import traceback from .base import BasePlugin from lib. ...

  8. Python之CMDB资产管理系统

    最近正好在给公司做CMDB资产管理系统,现在做的也差不多了,现在回头吧思路整理下. CMDB介绍 CMDB --Configuration Management Database 配置管理数据库, C ...

  9. CMDB03 /今日未采集的资产、资产入库、资产变更记录、资产采集

    CMDB03 /今日未采集的资产.资产入库.资产变更记录.资产采集 目录 CMDB03 /今日未采集的资产.资产入库.资产变更记录.资产采集 1. 获取今日未采集的服务器 2. server资产入库以 ...

随机推荐

  1. 洛谷P3003 [USACO10DEC]苹果交货Apple Delivery

    P3003 [USACO10DEC]苹果交货Apple Delivery 题目描述 Bessie has two crisp red apples to deliver to two of her f ...

  2. [Xcode 实际操作]七、文件与数据-(2)创建文件夹

    目录:[Swift]Xcode实际操作 本文将演示如何创建文件夹. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit class ViewC ...

  3. 坑爹的 Java 可变参数,把我整得够惨。。

    最近在写一个功能点,用了 Java 中的可变参数,真是把我搞得够惨.. 什么是可变参数? 就是方法参数用 Object... args 三个点形式,一个参数可以接收多个参数. 实际的代码就不帖了,来看 ...

  4. 一、接口测试——HTTPRunner二次开发之参数化一

    目前项目中在使用开源框架HTTPRunner,时间使用过程中会用到生成随机信息的方法,如生成随机姓名.随机手机号.身份证号.姓名.地址等.以下对二次开发的过程进行简要描述. 一.需求 1.需要测试的接 ...

  5. 如何备份Chrome浏览器收藏夹

    前言:最近,由于工作需要,要卸载当前Chrome版本,并安装最新版Chrome.卸载前,意识到之前收藏在收藏夹里的很多知识链接还未备份,于是有了今天的话题:如何备份Chrome浏览器的收藏夹? 主题: ...

  6. PostgreSQL - invalid input syntax for type timestamp with time zone

    问题 在执行以下sql时报错: select COALESCE(null,null,now(),''); 报错如下: SQL Error [22007]: ERROR: invalid input s ...

  7. JavaScript进阶 - 第3章 一起组团(数组)

    第3章 一起组团(数组) 3-1 一起组团(什么是数组) 我们知道变量用来存储数据,一个变量只能存储一个内容.假设你想存储10个人的姓名或者存储20个人的数学成绩,就需要10个或20个变量来存储,如果 ...

  8. [題解](函數下整點個數?)luogu_P4132_BZOJ_2659_算不出的等式

    兩個都是一次函數,下取整就是整點個數,兩個函數k剛好成倒數,所以最後發現會組合成一個矩形 (為啥要考慮重複與否的問題???) 然而這樣會不會重複計算點數呢 我們發現因為取的是圖像下的整數點 所以要想重 ...

  9. Jenkins+Maven+Jmeter接口自动化持续集成测试

    在上一篇<利用xsltproc转换jtl报告到html报告>中,解决了html报告的问题.本篇主要还是利用Jenkins来做持续集成测试. Jenkins需要安装的插件 Maven Int ...

  10. css圆角不圆和1px方案

    1.圆角不圆 比如需要我们画一个 r 为 5px 的圆,如果我们使用 rem 作为单位,我们很快会发现在一些机型上的图案不圆,会呈现椭圆形.这是由于 rem 转 px 会存在精度丢失问题. 所以这个时 ...