CMDB和运维自动化

CMDB和运维自动化

IT运维,指的是对已经搭建好的网络,软件,硬件进行维护。运维领域也是细分的,有硬件运维和软件运维

硬件运维主要包括对基础设施的运维,比如机房的设备,主机的硬盘,内存这些物理设备的维护

软件运维主要包括系统运维和应用运维,系统运维主要包括对OS,数据库,中间件的监控和维护,这些系统介于设备和应用之间,应用运维主要是对线上业务系统的运维

这里讨论的主要是软件运维的自动化,包括系统运维和应用运维的自动化

为什么需要运维自动化,运维自动化需要哪些工具,CMDB在运维自动化中的作用是怎样的呢 ?

一. 传统运维痛点

先来看一下传统运维的痛点

1.1 日常工作繁琐

日常运维工作是比较繁琐的,研发同学会经常需要到服务器上查日志,重启应用,或者是说今天上线某个产品,需要部署下环境。这些琐事是传统运维的大部分工作

1.2 应用运行环境不统一

在部署某应用后,应用不能访问,就会听到开发人员说,在我的环境运行很好的,怎么部署到测试环境后,就不能用了,因为各类环境的类库不统一

还有一种极端情况,运维人员习惯不同,可能凭自己的习惯来安装部署软件,每种服务器上运行软件的目录不统一

1.3 运维及部署效率低下

想想运维人员需要登陆到服务器上执行命令,部署程序,不仅效率很低,并且非常容易出现人为的错误,一旦手工出错,追溯问题将会非常不容易

1.4 无用报警信息过多

经常会收到很多报警信息,多数是无用的报警信息,造成运维人员经常屏蔽报警信

另外如果应用的访问速度出了问题,总是需要从系统、网络、应用、数据库等一步步的查找原因

1.5 资产管理和应用管理混乱

资产管理,服务管理经常记录在excel、文本文件或者wiki中,不便于管理,老员工因为比较熟,不注重这些文档的维护,只有靠每次有新员工入职时,资产才能够更正一次

二. 自动化运维平台应该有哪些特性

针对传统运维的痛点,我们可以知道自动化运维需要支持哪些功能

2.1 标准化一切

运维自动化最重要的就是标准化一切

  1. OS的选择统一化,同一个项目使用同样的OS系统部署其所需要的各类软件
  2. 软件安装标准化,例如JAVA虚拟机,php,nginx,mysql等各类应用需要的软件版本,安装目录,数据存放目录,日志存放目录等
  3. 应用包目录统一标准化,及应用命名标准化
  4. 启动脚本统一目录和名字,需要变化的部分通过参数传递
  5. 配置文件标准化,需要变化的部分通过参数传递
  6. 日志输出,日志目录,日志名字标准化
  7. 应用生成的数据要实现统一的目录存放
  8. 主机/虚拟机命名标准化,虚拟机管理使用标准化模板
  9. 使用docker比较容易实现软件运行环境的标准化

2.2 资产管理系统(CMDB)

CMDB是所有运维工具的数据基础

如果用开源工具(openstack,jenkins,ansible,saltstack,zabbix)来搭建自动化运维平台,如何将各个工具之间的数据统一起来就非常重要,如果这些工具的数据不统一记录,那么意味着每增加一台服务器,需要将这个服务器的数据在所有的工具系统中增加一遍,那么这些数据的统一就需要CMDB,那么如何获取和更新CMDB中的数据呢,API无疑是一种非常好的方法

另外现在越来越多的公司选择将自己的服务器迁移到云上,云其实就是虚拟化的一种高级应用,这些公有云(阿里云,腾讯云,aws等)、私有云(openstack,Vmware等)都拥有比较完备的资源管理的API,这些API也就是构建一个云服务器的CMDB的基础。自动化运维平台可以基于这些云平台的API来管理和维护服务器、存储、网络、负载均衡等资源。

通过API对资源的操作需要日志记录,以备后续操作审计。

2.3 集中化批量运维工具

当你维护的服务器从几台,到几十台,再到几百台,集中化运维就势在必行了。现在有不少开源的集中化批量运维工具,比如puppet、chef、ansible、saltstack。

我们主要使用ansible和saltstack,这两个系统都是python写的,而且现在大多数运维人员都有一定的python开发能力,这两个工具提供的API或者SDK来来实现更为复杂的功能

2.4 持续集成和部署工具

集成和部署工具,一般用jenkins的比较多,把打好的包发布至各台服务器,可以通过批量运维工具或者自定义脚本,软件应用从立项开始就需要定义好业务线,项目等,如果某个项目对,服务器的资源需求增多,只需要在对应的项目集群中增加对应的资源,这些需要和CMDB联系起来

软件发布包括文件的上传、分发、版本管理、回滚等各种操作,推荐使用SVN或者GIT对打包好的文件进行管理,然后通过脚本在各台服务器上进行发布操作,利用SVN或GIt来完成文件的上传、分发、版本管理、回滚等各种操作,这些操作对需要进行日志记录,需要在记录中来确保

另外使用docker镜像来进行持续交付会更加高效,因为docker镜像可以轻松解决环境依赖的问题

2.5 监控及应用性能分析工具

资源性能监控和应用性能监控,有很多重叠的地方,如CPU或者内存的使用率增高往往和应用的性能有关

常使用开源资源监控系统有Zabbix、Nagios,OpenFalcon,这些软件主要是服务器的资源性能监控(例如CPU,磁盘、网络、内存等)和服务软件的性能监控(例如JAVA虚拟机,中间件,数据库等)

APM关注于对应用程序内部及应用程序之间调用的性能分析,比如能精确定位到某应用的URL的访问速度快慢,SQL执行速度的快慢,这可以帮助开发和运维人员定位程序的应用性能瓶颈

2.6 日志集中分析工具

应用系统的问题定位方式,主要就是日志分析。但是随着业务和服务器的增长,日志的分析定位也会比较困难,系统一旦出故障,发生哪个应用,引用所在服务器以及应用的代码。日志集中分析和APM一起使用,同时可以根据CMDB中记录的应用服务相关信息,应用定位问题会更加高效。

2.7 安全漏洞扫描工具

安全漏洞更多的是安全工程师的来做,运维工程师更多是去解决这些漏洞,关于安全漏洞扫描如何与CMDB结合起来使用,可以使用提供API的漏洞扫描工具,针对CMDB中记录中对安全要求很高的应用来进行扫描。

三. 资源管理系统的功能

从上面可以知道,所有的运维工具都离不开CMDB的支持,那么CMDB应该有哪些数据,可以实现什么样的功能,如何确保CMDB的准确性 ?

3.1 CMDB管理什么数据

  1. 用户信息管理,记录测试,开发,运维人员的用户表
  2. 业务信息线管理,需要记录业务的详情
  3. 项目信息管理,指定此项目用属于哪条业务线,以及项目详情
  4. 应用信息管理,指定此应用的开发人员,属于哪个项目,和代码地址,部署目录,部署集群,依赖的应用,软件等信息
  5. 集群信息管理,指定集群属于哪个项目,以及集群的Level(开发,测试,生产)
  6. 主机信息管理,包括云主机,物理机,主机属于哪个集群,运行着哪些软件,主机管理员,连接哪些网络设备,云主机的资源池,存储等相关信息
  7. 主机信息变更管理,主机的一些信息变更,例如管理员,所属集群等信息更改,连接的网络变更等
  8. 网络设备信息管理,主要记录网络设备的详细信息,及网络设备连接的上级设备
  9. IP信息管理,IP属于哪个主机,哪个网段, 是否被占用等

数据库表如下图所示:

cmdb 数据库表2.PNG

3.2 基于CMDB实现哪些功能

基于CMDB,可以实现采集资源信息自动化,软件安装自动化,应用部署自动化,告警信息更加详细准确,应用关系拓扑图,网络拓扑图更加清晰,这些工具对运维会有很高的价值

在公司业务层面上,基于CMDB我们也可以做很多事情,最直接的就是IT资源的成本控制,另外还有集群容量弹性缩扩容,应用平台的稳定性,应用的持续交付等功能

3.3 确保CMDB数据的准确性

CMDB存储管理企业IT架构中设备的配置信息,它是所有的应用运行和应用交付的提供相关的资源的数据基础,所以保证CMDB数据的准确性显得非常重要

想要确保CMDB的准确性,根据自己各个公司的业务不同,来制定CMDB数据的录入流程必不可少

我们如何确保CMDB的数据准确性,公司所有的IT应用(数据库除外)全部运行在VMware虚拟机中

  1. 硬件设备的资产管理,在采购服务器或者网络设备后,需要将相关的设备手工录入CMDB系统,并且指定连接的上级网络设备,负责人
  2. 服务器需要安装的VMware软件后,通过Vcenter来管理虚拟机
  3. 新项目确立,申请服务器资源时,需要填写业务线,开发人员,git库, 测试人员,应用依赖的相关环境等详细信息,CMDB系统会关联相关的数据
  4. 运维人员在分配IP,主机名等相关信息后,将开发,测试,生产等服务器记录入CMDB, 且关联相关的数据
  5. 创建虚拟机时使用标准的模板,自动化创建,初始化虚拟机,包括安装salt客户端,监控客户端
  6. 在准备开发环境时,编写salt SLS文件,存入git库,方便安装测试和生产环境
  7. 创建jenkins job,实现自动化部署及自动化打包的相关部分的定义

我们的CMDB还有哪些不足:

  1. 网络关系拓扑图没有在CMDB中显示
  2. 没有实现应用关系拓扑图,希望可以通过APM工具来完善
  3. 资源监控做的不够到位,造成资源浪费,以及Vcenter虚拟机分配不合理
  4. 没有实现应用集成部署流水线
  5. 系统告警后,没有自动化处理相关的事件,更多的是在用人工解决
  6. CMDB没有提供API,提供给别的系统调用
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容