自动采集数据( custom前都会先做一个CMDB,建模和采集数据)
优采云 发布时间: 2022-02-23 13:22自动采集数据(
custom前都会先做一个CMDB,建模和采集数据)
很多企业在搭建自动化运维平台之前,都会先搭建一个CMDB。构建 CMDB 的第一步是建模和采集数据。对于采集数据,为了避免过度人工干预导致数据准确率低,采集方法一般分为两种:
手动输入一小部分静态数据
大多数数据的程序 采集
第二部分,有的公司用shell实现了一套,有的公司用脚本语言实现了一套,有的公司在需要的时候主动采集一次,有的公司定期自动采集。
汽车之家的方法是“傀儡因素脚本”+“期间自动采集”。我们已将其开源并在 Github (Assets_Report) 上与您分享。
下面我们详细解释其原理和用法。
二、原理介绍
众所周知,Puppet 是一套配置管理工具和一个 Client/Server 模型架构,可以用来管理软件、配置文件和服务。然后,在 Puppet 生态中有一个叫 Facter 的工具,它运行在 Agent 端,可以和 Puppet 紧密配合,完成数据采集工作。不过Facter采集提供的数据毕竟是有限的,一些底层硬件数据是没有采集的,而这些数据也是我们需要的,这也是我们开发这个工具的动力.
Facter采集的数据虽然有限,但是Facter本身是一个很好的框架,很容易扩展,所以我们在Facter的基础上进行了扩展,并配合Puppet Master的Report Processor将结果转换为采集上报给汽车银行(这是汽车之家的CMDB代码,可以参考《运维数据库-建立CMDB方法》)完成一个完整的采集逻辑。
这是 Puppet 的服务器和代理之间的工作流程
在发送请求以请求目录的阶段,代理将向船长报告其所有事实。Master接收到数据后,可以使用自己的Report Processor对其进行二次处理,比如转发到其他地方。
基于以上原理,我们开发了自己的报表处理器:assets_report,通过HTTP协议将事实发布到AutoBank的http接口进行存储。
有兴趣开发自定义事实的同学可以参考 fact_overview 和自定义事实。
如上所述,我们的 Assets_Report 项目收录以下两个组件来实现整个逻辑
assets_report 模块:一个纯 Puppet 模块,带有内置的报告处理器和一些自定义的 Facter 插件,部署在 Master 端。
报告处理器在主端运行。
Facter插件会通过Master下发到Agent,运行到采集本地资产数据
api_server:负责接收资产数据并存储
三、采集插件的功能介绍
与Facter内置的facts相比,这个插件提供了更多的硬件数据,比如
CPU 数量,型号
内存容量、序列号、制造商、插槽位置
网卡绑定的ip、mask、mac、model,支持一张网卡绑定多个ip的场景
RAID卡数量、型号、内存容量、RAID级别
磁盘数量、容量、序列号、制造商、RAID 卡、插槽位置
操作系统类型、版本
服务器供应商,SN
高级特性:为了避免重复上报大段相同的数据,减少AutoBank的数据库压力,本插件具有Cache功能,即如果一个服务器的资产数据没有变化,只有not_modify将报告标志。
本插件支持的操作系统是(系统必须是64位的,因为本插件中的采集工具是64位的)
CentOS-6
CentOS-7
视窗 2008 R2
该插件支持的服务器有:
生命值
戴尔
思科
四、采集如何安装插件
安装操作在 Puppet Master 端进行。
假设您的模块目录是 /etc/puppet/modules
cd ~git clone :AutohomeOps/Assets_Report.gitcp -r Assets_Report/assets_report /etc/puppet/modules/
在你自己的 puppet.conf 中(假设默认路径是 /etc/puppet/puppet.conf)添加
报告 = assets_report
然后在site.pp中添加如下配置,让所有Node安装assets_report模块
节点默认 { # 包括 assets_report 类 {'assets_report': }}
配置完成后,采集工具会自动下发到Agent进行安装。该插件将在下次 Puppet Agent 运行时正常工作。
五、报表组件配置方法
配置操作在 Puppet Master 端进行。
配置文件为 assets_report/lib/puppet/reports/report_setting.yaml
范围
意义
例子
report_url 报告接口地址,可以修改为自己的url
auth_required接口是否收录认证true/false,默认为false,认证码需要在auth.rb中实现
用户认证用户名如果auth_required为真,则需要填写
passwd 认证密码 如果auth_required为真,需要填写
enable_cache 是否启用缓存功能 true/false,默认为false
六、报表接口服务配置方法
配置操作在 Puppet Master 端进行。
这个接口服务api_server是基于一个用Python编写的Web框架Django开发的,包括数据库设计和http api的实现。因为各个公司的数据库设计不一致,所以本项目只实现了最简单的数据建模,所以这个组件的存在只作为Demo使用,不能用于生产环境。读者应注意。
首先,我们需要安装一些依赖项。这里假设你的操作系统是 CentOS/RedHat
$ cd ~/Assets_Report/api_server install pip,用它来安装python模块 $ sudo yum install python-pip install python module dependencies $ pip install -r requirements.txt
初始化数据库,可以参考Django用户手册
$ python manage.py makemigrations apis$ python manage.py migrate 数据库为当前目录下的db.sqlite3