自动采集数据( custom前都会先做一个CMDB,建模和采集数据)
优采云 发布时间: 2021-09-09 02:07自动采集数据(
custom前都会先做一个CMDB,建模和采集数据)
很多企业在搭建自动化运维平台之前,都会先搭建CMDB。构建 CMDB 的第一步是建模和采集data。说到采集数据,为了避免人工干预过多导致数据准确率低,采集方法一般分为两种:
手动输入一小部分静态数据
大多数数据使用程序采集
第二部分,有的公司用shell实现一套,有的用脚本语言实现一套,有的公司需要的时候主动收一次,有的公司定时自动收。
汽车之家的方法是“Puppet Facter脚本”+“定期自动采集”。我们已经将其开源并在 Github (Assets_Report) 上与您分享。
下面详细说明原理和用法。
二、原理介绍
众所周知,Puppet是一套配置管理工具,一种Client/Server模型架构,可以用来管理软件、配置文件和服务。然后,Puppet生态中有一个叫做Facter的工具,它运行在Agent端,可以和Puppet紧密配合完成数据采集的工作。但是,Facter采集 提供的数据毕竟是有限的。一些底层的硬件数据没有采集,而这些数据正是我们所需要的。这是我们开发此工具的动机。
虽然Facter采集的数据有限,但Facter本身是一个很好的框架,扩展起来非常容易,所以我们基于Facter进行了扩展,并把采集的结果和Puppet Master Report一起汇报处理器。给AutoBank(这是汽车之家的CMDB代码,可以参考《运维数据库-构建CMDB方法》)完成一个完整的采集逻辑。
这是Puppet的Server和Agent之间的工作流程
Agent 将在发送请求请求目录时向 Master 报告其所有事实。 Master收到数据后,可以使用自己的Report Processor进行二次处理,比如转发到别处。
基于上述原理,我们开发了自己的报表处理器:assets_report,并通过HTTP协议将事实发布到AutoBank的http接口进行存储。
有兴趣开发自定义事实的学生可以参考 fact_overview 和自定义事实。
如上所述,我们的 Assets_Report 项目收录以下两个组件来实现整个逻辑
assets_report 模块:纯 Puppet 模块,内置 Report Processor 和一些自定义 Facter 插件,部署在 Master 端。
报表处理器在主端运行。
Facter插件会通过Master发送给Agent,作为采集本机Asset数据运行
api_server:负责接收资产数据并存入库
三、采集插件功能介绍
与Facter内置的facts相比,这个插件提供了更多的硬件数据,例如
CPU 数量、型号
内存容量、序列号、制造商、插槽位置
网卡绑定ip、掩码、mac、型号,支持一个网卡绑定多个ip的场景
RAID卡数量、型号、内存容量、RAID级别
磁盘数量、容量、序列号、制造商、拥有的RAID卡、插槽位置
操作系统类型、版本
服务器制造商,SN
高级特性:为了避免大段相同数据的重复上报,减少AutoBank数据库的压力,本插件具有Cache功能,即如果某台服务器的资产数据没有发生变化,只会报告 not_modify 标志。
本插件支持的操作系统是(系统必须是64位的,因为本插件中的采集工具是64位的)
CentOS-6
CentOS-7
Windows 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中添加如下配置,让所有Nodes都安装assets_report模块
节点默认{#收录assets_report类{'assets_report':}}
配置完成后,采集工具会自动发送到Agent进行安装。该插件将在下次 Puppet Agent 运行时正常工作。
五、Report 组件配置方法
配置操作在Puppet Master端进行。
配置文件为assets_report/lib/puppet/reports/report_setting.yaml
参数
含义
示例
report_url 报表接口地址,可以修改为自己的url
auth_required接口是否收录验证true/false,默认为false,验证码需要自己在auth.rb中实现
用户认证用户名,如果auth_required为true,则需要填写
passwd 验证密码,如果auth_required为true,则需要填写
Enable_cache 是否开启缓存功能true/false,默认false
六、Report 接口服务配置方法
配置操作在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