第一,传统的资产管理通常都是经过人为手动维护一个excel表,这样,当一台服务器的任何资产出现了变动,都须要人力去记录一下。并且,有时候容易忘记本身究竟是否已经作了变动记录,这样就使得变动记录表信息愈来愈不许确,统计资产就变得至关的麻烦,这是设计初衷其一。 python
第二,随着公司部门的增多,每一个部分都有本身消费状况,若是人为的统计,不免也会出现上述的错误,为了解决上述的问题,咱们也须要这样一个资产管理来实时更新各个部门的平常开销,這是设计初衷其二。数据库
第三,平常生产过程当中,各个部分有时候会进行数据的交互。若是每一个部分都以本身的方式将数据传递给开发人员,这样无疑是增大了他们的工做压力,所以,设计一个资产管理系统,是一个不错的选择。api
基于上述三点,咱们讨论出了一套解决上述问题的方案。即,设计一个管理资产的系统,全部须要录入的数据,都传递到该系统中,进入保存,一旦须要使用,咱们能够经过接口,可以迅速的调用数据,也能实时观测各个数据的变化。服务器
1.实现自动采集服务器资产信息cookie
2.实现报表功能多线程
3.统一API接口,便于给其余部门提供数据架构
整个项目分为三个部分:运维
资产采集部分、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关系。
其中还有记录变动信息表和错误日志表。
Agent代理模式
流程图:
叙述:
在每一台服务器中都会存在一份脚本文件,在该服务器端执行了命令之后,将数据进行处理之后,而后经过requests.post发送到API接口,该接口将数据保存至数据库,供后台管理人员进行动态维护。
模式优势:速度快
模式缺点:agent太多,影响系统性能
使用范围:大型公司
SSH模式(Ansible或Fabric)
流程图
叙述
脚本文件存放在中控机上,由中控机来控制哪台机器应该采集信息.若是中控机发送了一个采集命令(经过ssh远程连接),而后命令到达目标主机,该主机执行该命令,而后将结果返回给中控机,最后由中控机将数据返回给api进行保存入库。
优势:无agent代理,提升了系统性能
缺点:速度慢
适用范围:小型公司
流程
叙述
在master主机上执行salt 'c1.com' cmd.run '命令',而后master主机会自动连入对应的主机,而后目标主机执行该命令,将命令的结果返回给master.master内部维护两个队列,若是master须要某个主机执行命令,那么它会将命令放在执行命令队列中而slave主机则等待执行队列中的消息,一旦其中有命令,就取出命令看是否是本身要执行的.而执行的结果将会放入到返回消息队列中,而后Master再去消息队列中取出消息,返回给api.