运维CMDB建设思路
在我们日常的运维工作中,面对着大量的基础设施和软件服务,该如何管理?这个管理的原则又是什么?粒度该如何控制?我们是否可以建立一个统一的标准模型来管理以上对象?管理过程中,如何降低人力成本?资源对象的生命周期管理如何实现?这么多的疑问,所有的运维人都会想到ITIL中的CMDB。的确CMDB在ITIL中应该算是一个核心概念,以它为基础,才能构建起相关的其他运维活动,因为所有的活动都需要与这个CMDB平台交互。在CMDB构建的过程中,都会碰到如上的问题。
记得我刚刚做运维去建设CMDB的时候,觉得非常的轻松。这源于刚工作时候的一份经历,负责电信资源管理系统的开发,电信的资源非常多,从我们日常开通一个电话,电信分配了哪个端子、哪个端口、哪个交换机,他们之间的级联关系,使用了哪个号码都需要完整的记录下来。后续新的业务办理(比如说移机),也需同步记录这些占有资源的变化,可以说这个系统就是一个非常强大的CMDB的系统。这都源于电信背后一套成型的体系----NGOSS(见下图)。
NGOSS是下一代运营支持系统(New Generation Operations System And Software)的缩写,他从业务流程、系统信息模型构建到技术架构实现再到运行管理都提供了一整套的体系框架,他们分别对应四个不同的子系统----业务视图、系统视图、实现视图、部署视图。每个子系统又有一套指导框架,比如说业务视图框架eTOM;系统视图框架是以统一信息实例(SID)来指导;架构框架是TAF的等等。这个模型整体解决思路是从业务活动视图导出信息模型再导出技术实现方案,依此类推。其中尤其以前面两个视图最为重要。
NGOSS的业务视图,它吧电信内部的业务活动按照领域模型分成了不同子欲,在每一个子域中不断向下细分,最后得出各个明确的业务框架和活动视图。整体业务视图框架【见eTOM模型规范】如下:
在如下下图中,我们可以看到左边的系统模型视图如何映射到右边的活动视图上【来自于CTG-MBOSS规范】:
我们在构建CMDB的时候,其实也可以完全遵循这套方法论,我们首先一定要搞清楚,我们日常的运维场景中有哪些活动?比如说服务器申请、回收、IP地址分配回收、进程的上下线等等,这是我们建设CMDB的首要原则,不要臆想我们要管理哪些资源,比如说glibc的版本库。通过活动的识别,去导出管理的资源对象。当我们已经明确要管理的目标对象(CMDB中叫配置项)时候,剩下就是模型构建该干的事情了。此时的资源对象涉及两个方面的问题:第一、我们管理的对象资源范围是?第二、每个对象需要管理的数据粒度是?
第一个问题可以简单些理解,从我们面对要管理的对象来说,可以把它们划分成物理对象和逻辑对象。物理对象你可以理解实际存在的物理实体,比如说服务器、交换机、机架等等;逻辑对象可以理解成非物理存在的实体,比如说IP资源、操作系统以及资源之间的关系。这个里面的方法可以完全遵循面向对象的分析方法,实体之间有继承、实体之间有引用等等。第二个问题----资源对象粒度是什么?首要取决于当前管理的成本收益比。比如说在一个完全手工的环境中,如果你想管理机器上的硬件配置信息,此时代价非常高昂,个人也就不建议这么做,如果有一定的自动化工具辅助管理,这可以考虑对象粒度更细致一些。其次我们要看这个管理到底反向支撑到的运维作用是什么(质量、安全、效率、平台工具等等)。
但我们确定了管理的资源对象之后,此时可以借助一些建模工具来快速实现模型,这个模型完全是可扩展的。此时取决于实现的方法,比如说在数据库字段中预留一定的空余字段来做配置项属性的扩充,因为配置项一定是随着运维阶段而动态变化的。
系统实现之后,此时我们有了一个CMDB基础,我们需要同步考虑的是,如何降低配置项的管理成本?这个时候我们想到了配置项的自动发现机制,特别是服务器上的一些配置信息,比如说进程、硬件配置和IP信息等等,尽量减少人工维护的工作量,只有在现网配置和机器配置产生冲突的时候,此时通过异常报告的形式让人为参与纠正。自动发现机制的引入可以大大降低人力成本。
随着CMDB越来越庞大,我们需要考虑配置准确性,特别有很多资源是动态变化的,比如说服务器的上下线、IP资源的分配回收等等,此时需要有一个生命周期的概念来管理这些对象。对于每一个资源对象,我们需要了解他的状态变迁,最好有个变迁图(变更控制),每个状态变迁的驱动主体是谁(权限控制)。我个人主张复杂的变更控制场景化,最好都固化到一个变更管理系统中,做好清晰的流程设计和功能实现,把配置项的状态日志记录下来归档。
总结来说,结合NGOSS的方法论,首先提炼业务场景,找到要管理的对象,然后进行对象的建模,模型实现之后,通过自动化管理的方法降低人为管理成本,根据生命周期的模型去控制配置项的变更。
好啦,今天的分享到这里就结束了,如果需要更多的技术性文章,可以访问马哥教育官网欧!
运维CMDB建设思路的更多相关文章
- Linux运维面试贩卖思路如下
1.自我介绍 2.技术介绍 3.上家公司情况介绍.多少人的团队.运维多少人.多少设备.公司什么业务.访问量多少.并发多少.架构多大,然后介绍公司架构.CDN->负载均衡->web-> ...
- Linux运维故障排查思路
linux系统故障 网络问题 linux系统无响应 linux系统无法启动 linux系统故障处理思路 1.重视报错信息,一般情况下此提示基本定位了问题的所在 2.查阅日志文件,系统日志和应用日志 3 ...
- 博云 x 某农商行 | 银行信息化运维系统升级的最佳实践
随着银行新一代信息化运维系统建设的推进,应用系统更新换代速度明显提升.数字化转型的发展对银行业务需求的敏捷性提出了越来越高的要求,促进敏捷开发和资源敏捷部署成为大势所趋. 背景 江苏某农村商业银行成立 ...
- 运维平台之CMDB系统建设
CMDB是运维的基础核心系统,所有的元数据和共享数据管理源,类似于业务中的账号平台的作用.本篇文章,我将从概念篇.模型篇.到实现与实施篇具体的进行阐述. CMDB也称配置管理,配置管理一直被认为是 I ...
- (深度好文)重构CMDB,避免运维之耻
(深度好文)重构CMDB,避免运维之耻 CMDB,几乎是每个运维人都绕不过去的字眼,但又是很多运维人的痛,因为CMDB很少有成功的,因此我也把它称之为运维人的耻辱. 那么到底错在哪儿了?该如何去重构它 ...
- CMDB内功心法,助我登上运维之巅
很多70.80后甚至90后都在金庸.古龙.梁羽生先生等武林大家熏陶下成长的,这么多年过去了,我的武侠梦依然不曾散去.曾几何,梦想有一天练就一身绝学,搂着小师妹花前月下,仗剑走天涯,快意人生.可每次的酣 ...
- 双态运维分享之:业务场景驱动的服务型CMDB
最近这几年,国内外CMDB失败的案例比比皆是,成功的寥寥可数,有人质疑CMDB is dead?但各种业务场景表明,当下数据中心运维,CMDB依然是不可或缺的一部分,它承载着运维的基础,掌握运维的命脉 ...
- 双态运维分享之二: 服务型CMDB的消费场景
近年来,CMDB在IT运维管理中的价值逐步得到认可,使用CMDB的期望值也日益增长.然而,CMDB实施和维护的高成本却一直是建设者们的痛点.那么今天,我们来探讨一下如何通过消费来持续驱动CMDB的逐步 ...
- 重构CMDB,避免运维之耻
CMDB,几乎是每个运维人都绕不过去的字眼,但又是很多运维人的痛,因为CMDB很少有成功的,因此我也把它称之为运维人的耻辱. 那么到底错在哪儿了?该如何去重构它? 今天我想从我的角度来和大家探讨一下业 ...
随机推荐
- python 调 java(胶水就是胶水)
java门外汉用python调java, 一.安装java环境(linux) 1.首先要去下载好JDK,Java SE 8的官方网址是http://www.oracle.com/technetwork ...
- 使用gomod后,导入模块与编译要注意的事项
问题:在使用go mod后,执行编译会报错: Cannot load xxx: cannot find module providing package xxx 目录结构如下: J:. │ └─src ...
- java junit4-JUnit测试报 No socket available 错误
问题描述 JUnit测试报 No socket available 错误 Eclipse进行JUnit测试时,总弹出 No socket available 窗口,导致测试不能进行. 解决方案一: 打 ...
- 【转帖】DevOps和SRE的区别
DevOps和SRE的区别 https://zhuanlan.zhihu.com/p/87598465 DevOps 和 SRE 最近有一位朋友和我聊职业发展方向问题,聊了不少 DevOps 和 SR ...
- ASP.NET请求过程-视图如何返回客户端
本文主要讲控制器返回ActionResult后怎么变成html到客户端的. 控制器返回的各种类型 返回所有类型的基类ActionResult // // 摘要: // 表示操作方法的结果. publi ...
- Oracle部分
做了很多年Oracle,转行到MySQL了,算是借鉴 Oracle日常维护管理指标 一. 基本硬件环境 1. 主机硬件环境 品牌 型号 数量 物理CPU核数及逻辑CPU数 内存大小 本地硬盘大小 光驱 ...
- k8s部署nacos
如果是在centos7上直接启动nacos 注意修改启动命令 sh startup.sh -m standalone 访问路径 http://********:8848/nacos/index.h ...
- 序列方差[NTT]
也许更好的阅读体验 \(\mathcal{Description}\) 给你一个长度为\(n\)的数组\(a\) 你会得到 \(q\) 条指令, 分两种: \(1\ l\ r\ w\) 表示把 \(l ...
- Java Web 深入分析(10) Spring 实践
Spring helloworld [http://wiki.jikexueyuan.com/project/spring/hello-world-example.html] HelloWorld.j ...
- sql语句中包含引号处理方法
1. 背景 在使用Python脚本向数据库导入日志文件时候,突然报错. 2. 解决思路 查看messages文件,发现有一条语句里包含单引号. 查看sql语句,是使用单引号标注str类型. 3. 得出 ...