CMDB是运维自动化的基础,它为日志系统,发布系统,监控系统等运维系统(ELK,zabbix,open-falcon)提供接口函数,
第一种方式:agent方法实现,agent不能直接访问数据库,因为agent端有可能被入侵,入侵之后,黑客可以获取数据库权限,造成删库等损失,所以得用url方式
当然subprocess不能用于CMDB采集数据,因为这个模块通常用于本机
>>> import subprocess
>>> subprocess.getoutput(‘ipconfig‘)
‘\nWindows IP 配置\n\n\n无线局域网适配器 无线网络连接 2:\n\n 媒体状态 . . . .
. . . . . . . . : 媒体已断开\n 连接特定的 DNS 后缀 . . . . . . . : \n\n以太网
适配器 Bluetooth 网络连接:\n\n 媒体状态 . . . . . . . . . . . . : 媒体已断开\
n 连接特定的 DNS 后缀 . . . . . . . : \n\n以太网适配器 本地连接:\n\n 媒体状
态 . . . . . . . . . . . . : 媒体已断开\n 连接特定的 DNS 后缀 . . . . . . . :
\n\n无线局域网适配器 无线网络连接:\n\n 连接特定的 DNS 后缀 . . . . . . . : \n
本地链接 IPv6 地址. . . . . . . . : fe80::e4c6:c03b:e89:a02%11\n IPv4 地址
. . . . . . . . . . . . : 192.168.1.100\n 子网掩码 . . . . . . . . . . . . :
255.255.255.0\n 默认网关. . . . . . . . . . . . . : 192.168.1.1\n\n以太网适配
器 VMware Network Adapter VMnet1:\n\n 连接特定的 DNS 后缀 . . . . . . . : \n
本地链接 IPv6 地址. . . . . . . . : fe80::486e:2200:8997:bcdb%18\n IPv4 地址
. . . . . . . . . . . . : 192.168.65.1\n 子网掩码 . . . . . . . . . . . . : 2
55.255.255.0\n 默认网关. . . . . . . . . . . . . : \n\n以太网适配器 VMware Net
work Adapter VMnet8:\n\n 连接特定的 DNS 后缀 . . . . . . . : \n 本地链接 IPv
6 地址. . . . . . . . : fe80::d851:ee0a:c90a:db52%19\n IPv4 地址 . . . . . . .
. . . . . : 192.168.117.1\n 子网掩码 . . . . . . . . . . . . : 255.255.255.0
\n 默认网关. . . . . . . . . . . . . : \n\n隧道适配器 isatap.localdomain:\n\n
媒体状态 . . . . . . . . . . . . : 媒体已断开\n 连接特定的 DNS 后缀 . . . .
. . . : \n\n隧道适配器 isatap.{7F17396E-53DB-47A4-BD5C-9EADDC5E9FAC}:\n\n 媒
体状态 . . . . . . . . . . . . : 媒体已断开\n 连接特定的 DNS 后缀 . . . . . .
. : \n\n隧道适配器 Teredo Tunneling Pseudo-Interface:\n\n 连接特定的 DNS 后缀
. . . . . . . : \n IPv6 地址 . . . . . . . . . . . . : 2001:0:9d38:6ab8:2882:
ac2:49ed:92f9\n 本地链接 IPv6 地址. . . . . . . . : fe80::2882:ac2:49ed:92f9%1
4\n 默认网关. . . . . . . . . . . . . : ::\n\n隧道适配器 isatap.{5200D41D-66DB
-404B-B054-927048C61572}:\n\n 媒体状态 . . . . . . . . . . . . : 媒体已断开\n
连接特定的 DNS 后缀 . . . . . . . : \n\n隧道适配器 isatap.{24E33A31-E0FB-45FF
-B380-39AD751E3A09}:\n\n 媒体状态 . . . . . . . . . . . . : 媒体已断开\n 连
接特定的 DNS 后缀 . . . . . . . : \n\n隧道适配器 isatap.{28CBEECB-4F9E-4214-B9CA
-E42439ECC9D4}:\n\n 媒体状态 . . . . . . . . . . . . : 媒体已断开\n 连接特
定的 DNS 后缀 . . . . . . . : ‘
>>>
>>> import requests >>> requests.get(‘http://www.cnblogs.com/wupeiqi/articles/6192986.html‘) #也可以是POST请求 <Response [200]> >>> ret = requests.get(‘http://www.cnblogs.com/wupeiqi/articles/6192986.html‘)>>> ret.text#把整个页面都渲染出来,相当于一个字符串
第二种方式:用SSH方式实现,用中控机采集资产, 下图的中间部分就是中控机
很多运维工具基于Python的paramiko模块做了封装,比如fabric,ansible,saltstack,最新的ansible用了另外的方式实现
第三种方式:依赖第三方工具fabric,ansible,saltstack
以saltstack为例,在saltstack-master上可以远程执行命令,然后利用RPC采集资产
RPC的本质是维护一个队列
RPC方式比SSH要快
第四种方式:基于puppet方式采集:
同时使用前三种方式:通过修改配置文件实现前三种方式的切换 (前三种必须要会,第四种了解)
一般设置每天采集一次数据
CMDB要解决的就是自动收集