大数据-数据建行之自动化资产数据采集

优采云 发布时间: 2020-08-13 19:01

  

  很多公司在做自动化运维平台前就会先做一个CMDB,做CMDB的第一步就是建模和采集数据。说到采集数据,为了防止过多人工介入造成数据准确率低,采集方法普遍分为两种:

  一小部份静态数据人工录入

  大部分数据用程序采集

  第二部份,不同的公司有的用shell实现一套,有的公司拿脚本语言实现一套,有的公司在须要的时侯主动搜集一次,有的公司手动定期搜集。

  汽车之家的方式是“Puppet Facter脚本”+“定期手动搜集”。并且我们早已将其开源在Github(Assets_Report)上跟你们分享。

  下面我们详尽解说一下原理和使用方式。

  二、原理介绍

  众所周知,Puppet是一套配置管理工具,是一个Client/Server模式的构架,可以用它来管理软件、配置文件和Service。然后,Puppet生态圈里有个叫Facter的工具,运行在Agent端,可以和Puppet紧密配合完成数据采集的工作。但是Facter提供采集的数据虽然有限,一些愈发底层的硬件数据就没有采集,而这种数据也是我们所须要的,这就是我们开发本工具的动机。

  虽然Facter采集的数据有限,但是Facter本身是一个挺好的框架,非常容易对其进行扩充,所以我们基于Facter进行了扩充,配合Puppet Master的Report Processor将采集的结果上报给AutoBank(这是车辆之家的CMDB代号,可以参考《运维的数据建行-构建CMDB方式》),由此来完成一个完整的采集逻辑。

  这是Puppet的Server跟Agent之间的工作流程图

  

  Agent在发送Request恳求Catalog的阶段,会将自身的facts都上报给Master。而Master接到数据后可以借助自身的Report Processor对其进行二次处理,例如转发到别处。

  正是基于上述的原理,我们开发了自己的Report Processor:assets_report,通过HTTP协议将facts post给AutoBank的http插口使其入库。

  

  对开发custom facts感兴趣的朋友可以参考 fact_overview 和 custom facts。

  如上所述,我们的Assets_Report项目收录了如下两个组件来实现整个逻辑

  assets_report模块:一个纯Puppet Module,内建了一个Report Processor和一些自定义Facter插件,部署在Master端。

  Report Processor运行在Master端。

  Facter插件会通过Master下发到Agent端并被运行以采集本机资产数据

  api_server:负责接收资产数据并将其入库

  三、采集插件的功能介绍

  相对于Facter内建的facts,本插件提供了更多的硬件数据,例如

  CPU个数,型号

  内存容量,序列号,厂商,插槽位置

  网卡上绑定的ip,掩码,mac,型号,且支持一个网卡上绑定多ip的场景

  RAID卡个数,型号,内存容量,RAID Level

  磁盘个数,容量,序列号,厂商,所属RAID卡,插槽位置

  操作系统类型,版本

  服务器厂商,SN

  高级特点:为了防止大段相同数据重复上报,减轻AutoBank的数据库压力,本插件具备Cache功能,即假如一台服务器的资产数据没有发生变更,那么只会汇报not_modify标记。

  本插件支持的操作系统有(系统必须是64位的,因为本插件中的采集工具是64位的)

  CentOS-6

  CentOS-7

  Windows 2008 R2

  本插件支持的服务器有

  HP

  DELL

  CISCO

  四、采集插件的安装方式

  安装操作在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)中添加

  reports = assets_report

  然后在site.pp中添加如下配置,让所有Node都安装assets_report模块

  node default { # include assets_report class {'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中自己实现

  user验证用户名假如auth_required为true,需要填写

  passwd验证密码假如auth_required为true,需要填写

  enable_cache是否启用cache功能true/false, 默认为false

  六、汇报插口服务的配置方式

  配置操作在Puppet Master端进行。

  本插口服务api_server基于一个Python编撰的Web框架Django开发,该组件收录了数据库设计和http api的实现。因为各家公司的数据库设计均不一致,该项目仅实现了最简单的数据建模,所以该组件的存在仅作为Demo,不可用于生产环境,读者需注意。

  首先,我们须要安装一些依赖。这里假设你的OS为CentOS/RedHat

  $ cd ~/Assets_Report/api_server安装pip,用它来安装python模块$ sudo yum install python-pip安装python模块依赖$ pip install -r requirements.txt

  初始化数据库,可以参考 Django用户指南

  $ python manage.py makemigrations apis$ python manage.py migrate数据库为当前目录下的db.sqlite3

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线