前言:
在新公司负责全网的自动化运维平台及给各个业务线提供接口数据。这工作和以前做的很类似,也算是比较顺手的工作,这段时候遇见一些问题,导致开发的前进速度的放慢了,具体有哪些的不完善,我这里就先不列出了,但是会把我遇到的问题的根源,放大炮似的描述下。新公司的资产系统还算可以的,比不少公司的资产管理也都要强大,只是我人比较“刺”,我见过比这更强大的,而且在那开发部门里待过,也参与过这项目相关的资产的开发。 经常搞这些个东西,所以整个开发实现和流程步骤也都算明白。
扯远点,既然大家都在学习python,完全可以用python django这类的模式,开发资产信息管理系统。
什么是资产系统?
资产系统,时尚的英文名字叫做cmdb,同义为配置管理数据系统。资产系统和cmdb并不是一回事,可以说cmdb包含了资产系统。
下面看看有些产品网站给与资产系统和cmdb的定义:
他们看似不一样,但其实有很大的关联。我们也不要太主观的区分他们,下面分享一下我的资产管理cmdb相关经验和需要注意的地方。
为什么要重视cmdb?
最简单的可以知道买的服务器上没有上线?谁在用?哪个业务在用?用的是哪个ip?放到了哪里?有没有保修过?使用情况如何? ip的现状,占用情况等。
说的全面点,他包括以下方面:
IP:所有IP、IPMI,所有MAC 配置:采购配置、实际配置、OS 应用分类信息:多级分类组合、应用组合 资产号、序列号、型号、负责人、合同、上架日期 IDC、机柜、网络 其他分类:虚/实、线上/线下/库备/报废、自有/外部 需要跨系统数据组合的运维报表 全国将过保、将报废、备机的IDC分布、项目分布 虚拟化资源利用率、节约率、故障率、成本分摊 强大的报表生成能力
|
高级点,可以用在库里面,直接展现图表,知道哪个业务线的部署节点的情况,通过这些节点直接去zabbix接口趣监控的load数据。得到类似该业务线的全网的load图。
再高级点,存放了系统的密码以及管理网的密码,以及机房展现图。
这些为什么要重视他的原因,也正是我期待的资产系统的一部分功能。
cmdb相关问题汇总
接下来谈谈我和同事在工作中遇见的问题,这样方便大家更好的理解 。
我们对面的组是系统组,经常让被他们的电话声音吵了思路,有不少的原因是和ibm、dell的工作人员核实服务器的位置,大家的记录虽然也是数据库里面查询查来的,总是觉得不够直观。 如果实现了机房的拓扑图那就爽了。 可以很直观的看到查询机房的各个情况。
在平台上输入lvs后端的节点,但是你是用张三登录的,这个时候,添加后端ip域名之前我需要做些相关的认证。 首先检测这个ip是不是公司的已有ip地址,这个ip地址是不是你当前用户名资产下的。 没有的return false; 别让他继续了。
他想拿出几台服务器做集群,在自助平台上操作,根绝资产那边的硬件情况做个分类,做集群算法的时候,后端会自己跑到资产接口拿数据,根据情况给出不同的 weight权衡值。
新上线的服务器,做为后端的web节点,部署puppet或者saltstack环境的时候,我们需要他的密码。 这个时候,需要从资产系统里面拿信息,然后初始化环境,比如用saltstack的jinja2 模板数据,配置的外网ip地址,ip route,主机名,kerberos权限表。 都是需要在一个接口拿,只能是资产系统。
在平台上针对lvs有重大配置更改的时候,需要给领导发一个邮件或者是手机,用来确定,确定之后才能继续下去。 你领导的联系方式怎么获得,肯定也是资产系统里面的,不然在你的mysql再次录入,显得不太专业。
上线说的是我作为运维开发所需要的接口数据,这些是从cmdb里面搞到的,说起来容易,cmdb的数据作准真的好难搞,前公司也是花费了大量的心力和实习生们的努力才把数据作准,就算是现在也不敢说数据是100%准的。
数据是如何填满的?
A. 很简单,就是遍历要查的数据,服务器的直接跑收集的工具,还有些东西可以用ipmi去跑收集。
同事用gearman和厂家工具写的分布式框架,是专门抓取数据的,有时间让他开源。我最开始写过批量获取服务器硬件数据的脚本,用zeromq做的任务分发队列效率很高的,刚找了很久,貌似当时没有推到github里 ……
B. 一些机柜机房的资产信息,可以给世纪互联一个添加数据的页面,等他们写好,你过去核对下,合格后,直接点击入库。
做好资产管理系统,我觉得在开发上没啥难度,在公司里随便拉个php开发,也都能搞定,推行的难度还是在于后期的数据维护。
1. 制定规范流程
2. 挥动所有能指派的力量去核对数据
3. 用流程去增删改查数据