前言
做了几年的运维开发终于有了“名分”——DevOps,感谢组织感谢人民!
相信不少背锅俠们的服务器管理还在用Excel或者其他手动方式做统计,但是如果服务器数量逐渐增多怎么办呢?还用手动方式统计的话弊端就会逐渐凸显。
随着运维行业的发展,传统的运维方式已经逐渐面临淘汰,自动化运维才是王道。
为了解决公司资产管理混乱的问题,作为拥有多年背锅经验的我决定开发自动化资产管理系统为公司自动化运维的发展贡献一份力量。
一、系统介绍
AutoAMS 2.0(自动化资产管理系统)是用Django
框架+Bootstrap
前端框架+Mysql
数据库开发的。
之所以选择使用Django
框架是因为服务器信息采集程序要用到Ansible
自动化工具,而Ansible
本身是用Python
开发的,所以Django
也成了不二之选。
AutoAMS 2.0实现的功能:
看一下系统界面:
1. 系统首页:
展示一些服务器报表、日志提醒、系统运行状况、知识库推荐文章等信息
2. 服务器资产信息列表
3. 服务器软硬件信息详情与变更日志
4. 权限管理
二、系统架构
1. 服务器信息采集方式:
系统调用ansible api
通过ssh
协议主动获取服务器信息,无需安装agent
,这里得感谢常总(常纯)提的宝贵意见,这样做的好处多多。
一方面在不影响现有服务器环境的情况下实现信息采集的目的。
另一方面方便资产系统的升级与新功能的快速上线。
苦逼经验分享:
AutoAMS 1.0版本是采用的C/S架构,发现增减功能的时候agent都得更新一遍,而且agent的兼容性也会受系统版本及服务器品牌的影响。
2. 网络设备信息采集方式:
使用SNMP协议采集交换机硬件信息,自动查询交换机接口信息并入库。
3. 备件导入方式:
使用Excel批量导入服务器备件、硬盘备件、内存备件。
4. 权限管理方式:
a. 自定义权限列表
b. 给每个动作添加自定义的权限修饰符
c. 新建分组并选择其所拥有的权限
d. 新建用户指定所属权限分组
5. 服务器位置的实现:
作为一线运维人员,处理服务器故障的时候可能会遇到找不到服务器机柜位置的问题,对于管理不完善的传统运维来说这是个头疼的问题。那么如何解决这一问题呢
这时可能有些朋友会想到使用有定位功能的高级机柜或者在普通机柜上安装定位终端,这样做成本太高了,而且老板们也不乐意往这方面投资。
作为一个拥有多年运维经验的背锅侠决定通过其他方法实现一下不花钱的服务器定位方法。(ps:不花钱啊!老板好开心)。
好了不废话了,看一下实现步骤:
有同学可能会问给交换机的每个接口添加位置信息好麻烦呐!回头想想网络设备的变动频率还是挺小的,所以也就麻烦这么一次,可以说是一劳永逸。
三、系统定位
适用于想从繁杂的手动资产管理脱离出来的背锅俠。
四、开发历程
接触资产系统是在四年前,当时的公司有一套资产管理系统,但都是手动录入。
由于公司业务的发展壮大,服务器频繁的上下线,硬盘、内存等频繁更换,服务器数量也大量增加,导致现有资产信息经常出现统计错误与漏统计的问题。
每到年终资产统计的时候,小伙伴们都会大费周折的手工核实。
在朋友的推荐下得知一款国外开源资产管理系统,即OCSNG。
OCSNG几乎可以收集服务器所有的软、硬件信息,但是管理界面很不友好,于是老外们就结合了GLPI来展示OCSNG采集的信息,GLPI重新格式化了OCSNG采集的数据,看起来友好了一点,但这并不是我们想要的,于是决定开发一套web系统来展示服务器信息。
采用
Cakephp
框架+Bootstrap
前端框架, 后台使用Mysql数据库开发。
就这样AutoAMS 1.0版本就诞生了。
先期架构图是这样的:
界面是这样的:
不过使用过程中发现一些问题:
由于服务器系统版本较多,经常出现个别服务器采集不到数据或者数据不全的问题,OCSNG客户端是用perl
写的二次开发也比较繁琐,不利于后期升级。
推翻重搞!!
去了新公司之后,在一次技术分享会议上我讲述了以前开发的资产系统,并结合公司现有状况作了分析,同事们广提意见。
于是决定推翻以前的资产系统设计架构,重新规划、重新开发,尽可能的做成轻量级、可通用的资产系统,即当前正在开发的v2.0版本(AutoAMS 2.0)。
总结
下一个版本将会增加服务器批量配置功能和zabbix监控页面的调用功能。
通过两个版本资产系统的开发自己成长了很多。
独乐乐不如众乐乐,开源的力量是强大的,AutoAMS 2.0以后的版本可能将不再封闭式开发,以后会将系统发布到github上,希望志同道合的侠客们广提意见多多指正。
引用萧总的一句名言“大家一起愉快的玩耍”,也可以加我微信一起讨论。
最后感谢高效运维,感谢萧总、董总和常总,感谢拉手运维团队的支持,希望能为运维自动化行业的发展献上自己的微薄之力。