资产管理总结

1、设计初衷

  第一,传统的资产管理通常都是经过人为手动维护一个excel表,这样,当一台服务器的任何资产出现了变动,都须要人力去记录一下。并且,有时候容易忘记本身究竟是否已经作了变动记录,这样就使得变动记录表信息愈来愈不许确,统计资产就变得至关的麻烦,这是设计初衷其一。  python

  第二,随着公司部门的增多,每一个部分都有本身消费状况,若是人为的统计,不免也会出现上述的错误,为了解决上述的问题,咱们也须要这样一个资产管理来实时更新各个部门的平常开销,這是设计初衷其二。数据库

  第三,平常生产过程当中,各个部分有时候会进行数据的交互。若是每一个部分都以本身的方式将数据传递给开发人员,这样无疑是增大了他们的工做压力,所以,设计一个资产管理系统,是一个不错的选择。api

  基于上述三点,咱们讨论出了一套解决上述问题的方案。即,设计一个管理资产的系统,全部须要录入的数据,都传递到该系统中,进入保存,一旦须要使用,咱们能够经过接口,可以迅速的调用数据,也能实时观测各个数据的变化。服务器

2、设计目标

  1.实现自动采集服务器资产信息cookie

  2.实现报表功能多线程

  3.统一API接口,便于给其余部门提供数据架构

3、项目架构

  整个项目分为三个部分:运维

  资产采集部分、API接口部分、后台管理部分。ssh

  项目大体示意图以下:tornado

          

 

  经过API接口获取服务器传来的资产信息,而后保存入库。后台从数据库中取出数据,而后展现到页面上,便于统计与分析。

  整个项目共由三人完成,1个运维人员,负责提供运维方面的知识以及提供需求;2个开发人员,负责数据录入以及后台页面数据的展现。

  整个项目数据设计以下:

        

    其中关系:

      Disk,NIC,Memory与Server是FK关系

      IDC,BusinessUnit与Server是FK关系,Tags与Server是M2M关系

      UserGroup与BusinessUnit是FK关系,UserGroup与UserProfile是M2M关系,AdminInfo与UserProfile是o2o关系。

      其中还有记录变动信息表和错误日志表。

4、涉及技术点

  资产采集部分

  • 复用Django-middleware实现高扩展性,可插拔式的配置文件。
  • 复用Django用户配置与默认配置实现思路 
  • 兼容三种采集方式
    • Agent代理方式(原理:在每一台服务器中都会存在一份脚本文件,在该服务器端执行了命令之后,将数据进行处理之后,而后经过requests.post发送到API接口,该接口将数据保存至数据库,供后台管理人员进行动态维护。)
    • SSH方式(脚本文件存放在中控机上,由中控机来控制哪台机器应该采集信息.若是中控机发送了一个采集命令,而后命令到达目标主机,该主机执行该命令,而后将结果返回给中控机,最后由中控机将数据返回给api进行保存入库.)
    • SaltStack(在master主机上执行salt 'c1.com' cmd.run '命令',而后master主机会自动连入对应的主机,而后目标主机执行该命令,将命令的结果返回给master.)
  • requests发送客户端采集数据
  • 使用线程池,实现多线程采集
  • traceback记录采集错误日志
  • paramiko模块-基于SSH连接远程主机并执行命令

  API部分

  • 获取今日未采集主机
  • 自定义api验证机制(基于tornado签名cookie实现)
    • 时间规则
    • 加密字符串规则 
    • 访问次数规则
  • 实现容许临时修改主机名
    • 针对物理机(sn,物理机惟一,以此做为统计惟一)
    • 针对物理机+虚拟机(hostname,前提先定义规则,主机名不容许重复)
  • 日志变动记录

    后台管理

  • 自定义CURD插件

5、设计难点

  1. 在采集资产的时候,是否应该把虚拟主机看成资产采集。若是看成资产,以何种标志做为采集的惟一标识符?  
  2. python事务+反射实现查看变动记录。
  3. API认证

6、补充

  1.三种采集方式流程叙述

   Agent代理模式

   流程图:

          

  叙述:

  在每一台服务器中都会存在一份脚本文件,在该服务器端执行了命令之后,将数据进行处理之后,而后经过requests.post发送到API接口,该接口将数据保存至数据库,供后台管理人员进行动态维护。

  模式优势:速度快
  模式缺点:agent太多,影响系统性能
  使用范围:大型公司

  SSH模式(Ansible或Fabric)

  流程图

        

  叙述

    脚本文件存放在中控机上,由中控机来控制哪台机器应该采集信息.若是中控机发送了一个采集命令(经过ssh远程连接),而后命令到达目标主机,该主机执行该命令,而后将结果返回给中控机,最后由中控机将数据返回给api进行保存入库。

  优势:无agent代理,提升了系统性能
  缺点:速度慢
  适用范围:小型公司

  基于第三方工具(SALT-STACK)

  流程

      

  叙述

  在master主机上执行salt 'c1.com' cmd.run '命令',而后master主机会自动连入对应的主机,而后目标主机执行该命令,将命令的结果返回给master.master内部维护两个队列,若是master须要某个主机执行命令,那么它会将命令放在执行命令队列中而slave主机则等待执行队列中的消息,一旦其中有命令,就取出命令看是否是本身要执行的.而执行的结果将会放入到返回消息队列中,而后Master再去消息队列中取出消息,返回给api.

相关文章
相关标签/搜索