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', ['被执行的命令'])
其他内容详情请戳友情链接 ☛:猛戳这里