自动采集数据( 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、ma​​sk、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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线