CMDB资产采集

  一、浅析

  就目前而言,现在对资产采集一共有四种方式,分别是:

  • Agent
  • SSH类,如:paramiko
  • saltstack
  • puppet(ruby开发)

  对于前面三个都是由Python语言开发,最后一个为Ruby开发,因此我们重点介绍前面三个的具体内容。

  二、Agent

  1、特点及应用场景:

    适用于服务器多,由每一个服务器端将数据发送至API接口,API与数据库交互完成数据通信,性能相对比较高,速度快,但是每一个服务器都必须安装Agent。

  2、用法:

import subprocess
import requests
#每一个服务器,都有这么一个py文件。
v1=subprocess.getoutput('ipconfig') #执行Windows命令,返回信息赋值给v1
value=v1[68:88] #字符串切片取值

v2=subprocess.getoutput('dir') #同上
value2=v2[0:10]

url="http://127.0.0.1:8000/asset.html" #API接口URL
response=requests.post(url,data={'k1':value,'k2':value2}) #向API通过post方式,data以字典方式传值,返回一个对象。
print(response.text) #打印对象的text信息

  三、SSH类  (如:paramiko)

  1、特点及应用场景:

    适用于服务器少,性能要求不高,它主要通过中控机上安装paramiko实例出对象,由对象对每一台服务器通信获取数据,相对耗时,属于串联,上一个结束后,进行下一个。

  2、用法:

import paramiko
import requests

# 创建SSH对象
ssh = paramiko.SSHClient()
#允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接其中一台服务器
ssh.connect(hostname='192.168.145.142',port=22,username='root',password='123321')
# 发送执行命令
stdin,stdout,stderr = ssh.exec_command('ifconfig')
# 获取命令结果
result=stdout.read()
# 关闭连接
ssh.close()
value=result[68:88] #字符串切片
print(value)

# 向API以POST方式发送数据
url='http://127.0.0.1:8000/asset.html'
response=requests.post(url,data={'k1':value})
print(response.text) #打印API返回信息

  三、SaltStack

  1、概述:SaltStack简单来说是一个基础架构管理工具,这个比较抽象,说白就是一个运维管理工具,底层是使用python实现,C/S架构,支持分布式部署,据说可以轻松管理上W台服务器,和Puppet这类工具很类似,其主要的功能:

  • 基于Key的远程连接并执行命令;
  • 强大的搜索器,多种方式过滤服务器;
  • 灵活的远程部署实现方式;
  • 基于YMAL格式对文件,用户,用户组及服务等资源灵活管理;

  2、特点及应用场景:

    当前应用场景已经使用SaltStack,服务器数量多,它主要是在中控机安装salt-master,服务器安装salt-minion,通过队列完成通信,获取数据。

  3、安装及配置

yum -y install salt-master    /安装
rpm -aq|grep salt-master    /检测
salt-master配置文件: /etc/salt/master
服务端安装
yum -y install salt-minion   /安装
rpm -aq|grep salt-minion   /检测
salt-minion配置文件: /etc/salt/minion
客户端安装
salt-key -L    /列出所有key,key格式是minion-id,如果没有配置minion-id,则是主机名
salt-key -A    /接受所有key
salt-key -a  “ZK-YJY-APP-01”   /接受指定的key
salt-key -R    /拒绝所有未接受的key
salt-key -D     /删除所有key
salt-key -d  “ZK-YJY-APP-01”   /删除指定的key
添加客户端及授权

  4、安装注意事项:

  • 是否安装gcc?    (yum install gcc -y)
  • 是否关闭防火墙?   (systemctl stop firewalld.service)
  • 配置后是否重启服务?   (service salt-master restart  或  service salt-minion restart   --配置完成都要重启一下)

  5、用法:

  在master服务器上对salve进行远程操作:

1、基于shell的命令

salt '主机名或配置的ID' cmd.run  '被执行的命令'

2、基于Salt连接API

import salt.client
local = salt.client.LocalClient()
result = local.cmd('主机名或配置的ID', 'cmd.run', ['被执行的命令'])

  

  其他内容详情请戳友情链接 ☛:猛戳这里

    

原文地址:https://www.cnblogs.com/Michael--chen/p/7241828.html