自动采集数据( 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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线