运维开发工程师的职责是:负责日常运维工作;推动及开发高效的自动化运维、管理工具,提升运维工作效率;制定和优化运维解决方案,包括但不限于柔性容灾、智能调度、d性扩容与防攻击;探索、研究新的运维技术方向。
运维开发工程师的任职要求是:1、本科及以上学历,年龄在18周岁以上;2、熟悉常见应用服务的配置和优化;3、能熟练使用常用的监控软件;4、善于分析思考问题,有责任心;5、服从工作安排,身体健康。
智能运维(AIops)是目前 IT 运维领域最火热的词汇,全称是 Algorithmic IT operations platforms,正规翻译是『基于算法的 IT 运维平台』,直观可见算法是智能运维的核心要素之一。
本文主要谈算法对运维的作用,涉及异常检测和归因分析两方面,围绕运维系统Kale 中 skyline、Oculus 模块、Opprentice 系统、Granger causality(格兰杰因果关系)、FastDTW 算法等细节展开。
一、异常检测
异常检测,是运维工程师们最先可能接触的地方了。毕竟监控告警是所有运维工作的基础。设定告警阈值是一项耗时耗力的工作,需要运维人员在充分了解业务的前提下才能进行,还得考虑业务是不是平稳发展状态,否则一两周改动一次,运维工程师绝对是要发疯的。
如果能将这部分工作交给算法来解决,无疑是推翻一座大山。这件事情,机器学习当然可以做到。但是不用机器学习,基于数学统计的算法,同样可以,而且效果也不差。
异常检测之Skyline异常检测模块
2013年,Etsy 开源了一个内部的运维系统,叫 Kale。其中的 skyline 部分,就是做异常检测的模块, 它提供了 9 种异常检测算法 :
first_hour_average、
simple_stddev_from_moving_average、
stddev_from_moving_average、
mean_subtraction_cumulation、
least_squares
histogram_bins、
grubbs、
median_absolute_deviation、
Kolmogorov-Smirnov_test
简要的概括来说,这9种算法分为两类:
从正态分布入手:假设数据服从高斯分布,可以通过标准差来确定绝大多数数据点的区间;或者根据分布的直方图,落在过少直方里的数据就是异常;或者根据箱体图分析来避免造成长尾影响。
从样本校验入手:采用 Kolmogorov-Smirnov、Shapiro-Wilk、Lilliefor 等非参数校验方法。
这些都是统计学上的算法,而不是机器学习的事情。当然,Etsy 这个 Skyline 项目并不是异常检测的全部。
首先,这里只考虑了一个指标自己的状态,从纵向的时序角度做异常检测。而没有考虑业务的复杂性导致的横向异常。其次,提供了这么多种算法,到底一个指标在哪种算法下判断的更准?这又是一个很难判断的事情。
问题一: 实现上的抉择。同样的样本校验算法,可以用来对比一个指标的当前和历史情况,也可以用来对比多个指标里哪个跟别的指标不一样。
问题二: Skyline 其实自己采用了一种特别朴实和简单的办法来做补充——9 个算法每人一票,投票达到阈值就算数。至于这个阈值,一般算 6 或者 7 这样,即占到大多数即可。
异常检测之Opprentice系统
作为对比,面对相同的问题,百度 SRE 的智能运维是怎么处理的。在去年的 APMcon 上,百度工程师描述 Opprentice 系统的主要思想时,用了这么一张图:
Opprentice 系统的主体流程为:
KPI 数据经过各式 detector 计算得到每个点的诸多 feature;
通过专门的交互工具,由运维人员标记 KPI 数据的异常时间段;
采用随机森林算法做异常分类。
其中 detector 有14种异常检测算法,如下图:
我们可以看到其中很多算法在 Etsy 的 Skyline 里同样存在。不过,为避免给这么多算法调配参数,直接采用的办法是:每个参数的取值范围均等分一下——反正随机森林不要求什么特征工程。如,用 holt-winters 做为一类 detector。holt-winters 有α,β,γ 三个参数,取值范围都是 [0, 1]。那么它就采样为 (02, 04, 06, 08),也就是 4 3 = 64 个可能。那么每个点就此得到 64 个特征值。
异常检测之
Opprentice 系统与 Skyline 很相似
Opprentice 系统整个流程跟 skyline 的思想相似之处在于先通过不同的统计学上的算法来尝试发现异常,然后通过一个多数同意的方式/算法来确定最终的判定结果。
只不过这里百度采用了一个随机森林的算法,来更靠谱一点的投票。而 Etsy 呢?在 skyline 开源几个月后,他们内部又实现了新版本,叫 Thyme。利用了小波分解、傅里叶变换、Mann-whitney 检测等等技术。
另外,社区在 Skyline 上同样做了后续更新,Earthgecko 利用 Tsfresh 模块来提取时序数据的特征值,以此做多时序之间的异常检测。我们可以看到,后续发展的两种 Skyline,依然都没有使用机器学习,而是进一步深度挖掘和调整时序相关的统计学算法。
开源社区除了 Etsy,还有诸多巨头也开源过各式其他的时序异常检测算法库,大多是在 2015 年开始的。列举如下:
Yahoo! 在去年开源的 egads 库。(Java)
Twitter 在去年开源的 anomalydetection 库。(R)
Netflix 在 2015 年开源的 Surus 库。(Pig,基于PCA)
其中 Twitter 这个库还被 port 到 Python 社区,有兴趣的读者也可以试试。
二、归因分析
归因分析是运维工作的下一大块内容,就是收到报警以后的排障。对于简单故障,应对方案一般也很简单,采用 service restart engineering~ 但是在大规模 IT 环境下,通常一个故障会触发或导致大面积的告警发生。如果能从大面积的告警中,找到最紧迫最要紧的那个,肯定能大大的缩短故障恢复时间(MTTR)。
这个故障定位的需求,通常被归类为根因分析(RCA,Root Cause Analysis)。当然,RCA 可不止故障定位一个用途,性能优化的过程通常也是 RCA 的一种。
归因分析之 Oculus 模块
和异常检测一样,做 RCA 同样是可以统计学和机器学习方法并行的~我们还是从统计学的角度开始。依然是 Etsy 的 kale 系统,其中除了做异常检测的 skyline 以外,还有另外一部分,叫 Oculus。而且在 Etsy 重构 kale 20 的时候,Oculus 被认为是10 最成功的部分,完整保留下来了。
Oculus 的思路,用一句话描述,就是:如果一个监控指标的时间趋势图走势,跟另一个监控指标的趋势图长得比较像,那它们很可能是被同一个根因影响的。那么,如果整体 IT 环境内的时间同步是可靠的,且监控指标的颗粒度比较细的情况下,我们就可能近似的推断:跟一个告警比较像的最早的那个监控指标,应该就是需要重点关注的根因了。
Oculus 截图如下:
这部分使用的 计算方式有两种:
欧式距离,就是不同时序数据,在相同时刻做对比。假如0分0秒,a和b相差1000,0分5秒,也相差1000,依次类推。
FastDTW,则加了一层偏移量,0分0秒的a和0分5秒的b相差1000,0分5秒的a和0分10秒的b也相差1000,依次类推。当然,算法在这个简单假设背后,是有很多降低计算复杂度的具体实现的,这里就不谈了。
唯一可惜的是 Etsy 当初实现 Oculus 是基于 ES 的 020 版本,后来该版本一直没有更新。现在停留在这么老版本的 ES 用户应该很少了。除了 Oculus,还有很多其他产品,采用不同的统计学原理,达到类似的效果。
归因分析之 Granger causality
Granger causality(格兰杰因果关系)是一种算法,简单来说它通过比较“已知上一时刻所有信息,这一时刻 X 的概率分布情况”和“已知上一时刻除 Y 以外的所有信息,这一时刻 X 的概率分布情况”,来判断 Y 对 X 是否存在因果关系。
可能有了解过一点机器学习信息的读者会很诧异了:不是说机器只能反应相关性,不能反应因果性的么?需要说明一下,这里的因果,是统计学意义上的因果,不是我们通常哲学意义上的因果。
统计学上的因果定义是:『在宇宙中所有其他事件的发生情况固定不变的条件下,如果一个事件 A 的发生与不发生对于另一个事件 B 的发生的概率有影响,并且这两个事件在时间上有先后顺序(A 前 B 后),那么我们便可以说 A 是 B 的原因。』
归因分析之皮尔逊系数
另一个常用的算法是皮尔逊系数。下图是某 ITOM 软件的实现:
我们可以看到,其主要元素和采用 FastDTW 算法的 Oculus 类似:correlation 表示相关性的评分、lead/lag 表示不同时序数据在时间轴上的偏移量。
皮尔逊系数在 R 语言里可以特别简单的做到。比如我们拿到同时间段的访问量和服务器 CPU 使用率:
然后运行如下命令:
acc_count<-scale(acc$acc_count,center=T,scale=T)
cpu<-scale(acc$cpuload5,center=T,scale=T)
cortest(acc_count,cpu)
可以看到如下结果输出:
对应的可视化图形如下:
这就说明网站数据访问量和 CPU 存在弱相关,同时从散点图上看两者为非线性关系。因此访问量上升不一定会真正影响 CPU 消耗。
其实 R 语言不太适合嵌入到现有的运维系统中。那这时候使用 Elasticsearch 的工程师就有福了。ES 在大家常用的 metric aggregation、bucket aggregation、pipeline aggregation 之外,还提供了一种 matrix aggregation,目前唯一支持的 matrix_stats 就是采用了皮尔逊系数的计算,接口文档见:
>
在互联网行业,运维一直是一个被深深误解的位置,以至于很多人认为IT行业运维的技术含量很低,其实并非如此。
从本质上讲,运维其实就是你用自己的技术储备知识的岗位,保证你管理的IT服务能够正常运行。
在商业上也是一样。软件工程师的任务是通过编写代码将软件以图形化的形式提供给用户,而运维工程师的任务是使软件在计算机或系统上正常运行。但是一旦软件出现问题,大多数人想找的是软件工程师,而不是运维工程师。
就像我们盖房子一样。产品开发负责房子的规划,设计师负责房子的外观设计,开发工程师负责建造房子,运维负责打好房子的地基。而打好地基,并不意味着简单地挖个坑。里面的技术含量很高。必须彻底研究坑的大小、深度、大小、湿度等。
房子盖好后,大家只会关注房子盖好后的风格。很少有人会注意房子的地基,但是一旦房子倒塌,大家就会怀疑地基是否牢固,运维这时候就出来了。回到平底锅。
很多人片面地认为运维没有技术含量。这其实是一种错误的认识。因为运维也是分很多层次的,就看你达到了哪个阶段。基本上,现在一个运维除了掌握基本功,如果你还可以掌握云计算技术和一门编程语言(比如Python语言最适合运维人员),那你就已经是高人了级别,基本上是全栈开发运维人员。这种运维不用担心找不到工作,工资自然比其他普通运维高。
我自己在大公司和小公司都待过。我觉得主要是初级运维太多了,他们做了很多根本不能叫运维的事情。总结了以下几点:
运维必然会做基础工作,比如部署服务,上线,甚至搬机器,重装系统等等。但是运维不能只做这个,所以如何在剩余的时间内做有利于运维技术提升的事情就显得尤为重要。
举个简单的例子:当你做研发的时候,你在其中处于什么位置,你如何体现你的价值和技术能力?如果没有,你基本上是在帮助别人。
广泛的范围包括:硬件、网络、 *** 作系统、数据库、存储、开源软件;职责:部署和调试各种功能,如ldap、samba、nagios等;进一步细化的分工还包括:压力测试、性能优化、内核参数调优、系统问题跟踪等。
很多运维要在不同层次上做太多的事情,导致很多事情只是完成任务,缺乏深入研究,当然也可能缺乏深入研究场景。
其实和第一点关系比较大,因为目标本身没有足够的规划,总结性的介绍不够,技术的提升也比较有限。
举个真实的例子,我认识一个做运维7年多的人。这期间,他在几家公司干了很多事,时间也不短。通常情况下,会有相当多的积累。前段时间,我正要推荐他在内部击球时,我查看了他的简历。我有几个感受: 整个简历都是描述性词汇,没有数据支持;项目工作全是叙述性描述,充满服务搭建和问题解决,没有技术点;唯一的技术工作是一笔带过,没有方案选择和技术能力体现,技术水平无法体现;
我自己也面试过很多人,说实话,这种简历离及格还差得很远。应聘公司拿到这样的简历,怎么能快速的了解到你就是公司需要的人?
如果我们不知道运维的具体内容,我们无权评价运维的技术含量。一般来说,互联网公司的运维内容分为两个层次:
简单的说,就是部署服务、维修电脑、安装系统、安装软件、处理网络问题等等,做各种家务活,甚至弄个路由器、剪网线。
网络运维,即网络工程,必须精通各种网络协议和架构,Cisco、华为、H3C路由和交换,至少两项;
数据库运维,数据库运维应该理解为DBA,至少要精通,并且要精通数据库;
*** 作系统运维必须精通 *** 作系统,了解 *** 作系统内部工作原理,了解一些硬件知识,了解网络协议进行故障排除;
还有很多其他的事情,比如服务器运维,都需要覆盖面广,同时拥有多种技术;
运维技术差,可能只是因为公司小,如果公司规模小,大家看到的运维工作只能是表面和基础的工作,现在很多运维岗位都被云服务取代了。运维的内容是在云平台上运行软件。
事实上,有人认为在平台上 *** 作软件很简单,但实际上,如果没有计算机相关知识的积累,很难知道云平台上的功能实现。在这方面,技术含量不低。
如果公司逐渐成长为大型公司,运维的价值就会凸显。比如云资源和离线资源的管理、数据库管理、网络管理、计算资源、网络资源负载、调度处理,都需要丰富的计算机理论知识和实践经验,否则无法提供稳定、上层的可靠服务。
作为一家提供互联网服务的公司,用户能否稳定可靠地使用互联网服务,是他们生活的基础。想象一家公司每三天失败一次并且服务不可用。虽然强调了运维的存在,但大家还会相信你的产品吗?
运维功能:
首先,BAT在运维上的分工更加细化。通常,系统、数据库和应用运维是完全分离的。因此,它可能更侧重于功能,当然涉及的范围肯定会很窄。
在工作职能方面,运维主要围绕可用性、效率提升和成本控制三个主要方面,与公司和研发目标密切相关。运维所做的大部分工作都是基于这三个目标。拆卸。
在技术改进方面,主要是以项目的形式,利用对服务的理解和技术方案来解决常见问题。
技术工作:
以服务可用性为例。这不仅仅是处理警报。 *** 作时要小心。就像编写一些自动化工具一样简单。
在工作方式上:
严格按照既定计划安排工作、审查、总结。分工的实施是否有明确的规则,什么时间维度准确到季度?月?星期?天?我多久回顾一次?
结合这些方面,BAT运维的同学才有可能实现快速的技术提升。这是我所看到的。
最后说一下运维方向:
为了在运维方面有一个光明的未来,需要几个要素:
至少是已经发展起来并具有一定机器规模的业务。没有必要在这里击球,但选择适合您的。
很多人不喜欢处理问题,然后只想着做高大上的事情。我不想告诉你这个结果,但它没有接地,他们制作的东西没有使用,等等。
所以我觉得运维架构师一定是一个懂业务、熟悉业务、非常熟悉的人。我身边也遇到过这样的人。他们级别很高,通常不处理任何问题,但在关键时刻(例如出现问题时),他可以快速找到关键点并解决它们,有些细节甚至比您还要多。明白了,不得不佩服。运维一定是这样的人!
就算每天重复上线、处理故障问题、响应需求、开发维护脚本,也无所谓。关键是你有没有从你做过的问题中看到业务和运维中的痛点,并使用现有的。技术方案,处理解决!
有很多问题,并不是说解决了很多问题就是一个伟大的人。问题的关键在于如何解决问题,同时体现你的整体视角和技术能力。
举个最简单的例子,一台机器的磁盘快满了。这一定是一个特别小的问题。运维同学应该经常遇到。
如果你只检查磁盘使用情况,然后删除数据或调整删除磁盘的脚本,那是最糟糕的文件;检查磁盘使用情况,确认是单机还是批处理机有问题,为什么此时报告,确认清楚可以解决,这是一个更高的层次;我查看了磁盘占用,彻底发现了磁盘增长的原因,但发现磁盘增长是不可控的,现有的数据删除方法无法避免报警。那么有没有办法保证重要数据正常保留时磁盘不会报警呢?然后用技术方案解决,这是更高的层次。 有很多这样的例子。
你会发现运维其实就是利用你对系统、网络、硬件、规格、服务的熟悉,结合专业知识,用技术方案解决一系列研发测试无法解决或无法解决的常见问题。单独解决。并且可以形成工具、平台、框架,最终为运维部门甚至公司创造价值。这是一个很棒的 *** 作和维护。
所以还是同一句话:没有技术含量低的岗位,全看你怎么做。
随着时代的发展,我们现在使用的任何技术,很多事情都可以通过云计算解决,也有相应的产品和方案来解决,云计算也对运维产生了一定的影响。新的发展趋势由此而来。
第一个是从IOE到开源X86。其实去IOE也有一段时间了,为什么要去IOE? 2008年,全网印象比较深刻。当时,安全已逐渐上升到国家层面。此外,中国本土环境也日新月异。国产化需求和自主研发能力越来越强。一个强大的内部基因被定位。此外,还考虑到无论是国家层面还是企业层面,各行业都希望灵活控制结构的能力。这也是这个行业本地化的需求,这也是去IOE的第二个理由。从长远来看,IOE架构和非IOE架构会长期共存,因为技术系统的升级不是一两天就能解决的,尤其是一些核心数据库、核心应用、核心系统的核心系统。当年经常部署在IOE框架下。
第二个是运维自动化和智能化。这个已经提了好几年了,从接触实践到现在大概有五六年了,现在还在提。事实上,很多行业一直在迭代优化运维的自动化和智能化。它确实可以为我们的运维带来很多优势和优势。
第三个是双态IT运维。在传统向互联网和移动转型的过程中,一方面为了保证现有业务的运营,另一方面为了适应这种新的IT技术的变化。
第四个是研发与运营的融合,即DevOps。 DevOps 在过去的两三年里已经渗透到了千家万户。其核心理念包括精益管理、敏捷等理论,通过持续交付、持续集成工具链,以及一些轻量级的IT服务管理。基于这些概念和工具,形成了从研发到运营的全流程体系。IT运维效率更高,迭代更快,反馈更快,更好地满足内部业务需求和用户需求。这也是研发运营一体化理念的价值所在。
第五个是整合云资源,提供一个更大的平台来支撑大数据、AI智能、运维等一切各行各业 这也是互联场景的一大趋势。这对运维来说既是挑战,也是机遇。为什么?因为这个行业在不断变化,技术也在不断变化,只要顺应大势而变,我们就站在时代的潮流中。
如果我们在之前的运维理念上还是保守的,不上云,不摸云,那你肯定被淘汰了,因为我十年前很难部署一个数据库,各种配置,各种调用,现在就可以直接打开一个RDS,进行优化,集群就完成了。在效率和稳定性上,分分钟达到我们传统的运维水平,这也是我们运维要面对的大势所趋。
基于此,云原生的概念在过去一两年比较流行。事实上,它是对现有云架构系统技术栈进行更深更广的整合,采用Devops、微服务、敏捷的概念,采用类似中国大陆和台湾的概念或者开放的概念来构建和重塑技术体系,更好地支持新业务的快速迭代开发,这其实和DevOps的概念有很多相似之处。
第六个是数字化。这也是近两年在中国的热门话题。事实上,它也是。我们曾经建设过各种各样的信息化,建设了很多系统和平台,但往往也搭建了很多障碍,导致我们很多信息系统不可用,业务碎片化。组织也支离破碎。数字化要解决的问题是通过底层的数据和算法构建新的服务,打通我们的业务。这就是数字化要解决的问题。
大体上讲了这么多趋势,当然也有一些,大体是一样的。以前是用硬件,现在是软件自动定义;过去用服务器,现在用云,我们现在用云,未来可能更混合。云端,云端整合;以前是技术运维,现在从事技术运维的整合;另外,同样重要的是,无论我们现在做什么,网络空间安全现在都提升到了国家层面,在企业里面也提供了企业的最高点,这个网络安全是IT的一个标准。
运维一般是指对大型组织已经建立好的网络软硬件的维护,其中传统的运维是指信息技术运维(IT运维)。所谓IT运维管理,是指单位IT 部门采用相关的方法、手段、技术、制度、流程和文档等,对IT运行环境(如软硬件环境、网络环境等)、IT业务系统和IT运维人员进行的综合管理。随着信息化进程的推进,运维管理会覆盖对整个组织运行,进行支持的管理信息系统涵盖的所有内容,除了传统的IT运维,还拓展了业务运维和日常管理运维。业务运维面向整个组织提供各业务系统的问题受理、响应、处理和转交等方面的服务;日常管理运维面向整个组织提供针对各业务系统的运行状态和需求变化和不同的记录、跟踪、保存、分析方面的管理
运维的效率主要是采用监控软件, 市场上有开源的商业2种,开源的采用nagios zabbix ,商业的监控易、摩卡等公司。
对于大型互联网公司,开源更好,因为有专门的团队进行开发,可以把它们改造成适合自己的,而且规模比较大,购买商业的节约的费用也值。
对于中型规模公司,没有开发团队,最好采用商业的,目前商业软件的价格已经下降的很厉害了,监控易还有租用方式,每年就更便宜了。采用开源的,维护一个团队就很不值了,雇佣一个使用商业软件的人的费用会明显低于使用开源软件的,而且如果他离职了你会更发愁。没有的话这些软件很难使用,标准的服务器监控都不好配置,中间件,存储,数据库我看到一个比较有规模的运维团队都没有配置出来,我了解大量公司都用不起来这些监控,造成监控不完全,出了事情还是没有办法。
互联网时代的网络自动化运维
互联网上有两大主要元素"内容和眼球","内容"是互联网公司(或称ICP)提供的网络服务,如网页、游戏、即时通信等,"眼球"则是借指海量的互联网用户。互联网公司的内容往往分布在多个或大或小的IDC中,越来越多的"眼球"在盯着ICP所提供的内容,互联网公司进行内容存储的基础设施也呈现出了爆发式的增长。为了保障对内容的访问体验,互联网公司需要在不同的运营商、不同的省份/城市批量部署业务服务器用以对外提供服务,并为业务模块间的通信建立IDC内部网络、城域网和广域网,同时通过自建CDN或CDN专业服务公司对服务盲点进行覆盖。因此随着业务的增长,运维部门也显得愈发重要。他们经过这些年的积累,逐步形成了高效的运维体系。本文将结合国内互联网公司的经验,重点针对IT基础设施的新一代自动化运维体系展开讨论。
一、运维的三个阶段
● 第一个阶段:人人皆运维
在早期,一个公司的IT基础设施尚未达到一定的规模(通常在几台到几十台机器的规模),不一定有专门的运维人员或部门,运维的工作分担在各类岗位中。研发人员拥有服务器权限,自己维护和管理线上代码及业务。
● 第二个阶段:纵向自动化
随着业务量的增长,IT基础设施发展到了另外一个量级(通常在上百台至几千台机器的规模),开始有专门的运维人员,从事日常的安装维护工作,扮演"救火队员",收告警,有运维规范,但运维主要还是为研发提供后置服务。
这个阶段已经开始逐步向流程化处理进行过渡,运维部门开始输出常见问题处理的清单,有了自己业务范围适用的自动化脚本,开始利用开源软件的拼装完成大部分的工作。
具体表现为:各产品线有自己编写的脚本,利用如SVN+puppet或chef来完成服务器的上线和配置管理等工作。
● 第三阶段:一切皆自动
在互联网化的大潮中,越来越多的黑马团队应运而生,都曾有过短时间内用户访问量翻N倍的经历。在流量爆发的过程中,ICP的互联网基础服务设施是否能够很好的跟进,直接决定了业务内容能否满足海量用户的并发访问。
与此同时,运维系统需要足够地完善、高效、流程化。谷歌、腾讯、百度和阿里等规模的公司内一般都有统一的运维团队,有一套或多套自动化运维系统可供参照,运维部门与开发部门会是相互平行的视角。并且也开始更加关注IT基础设施在架构层面的优化以及超大规模集群下的自动化管理和切换(如图1所示)。
图1大型互联网公司IT基础设施情况概览
二、BAT(百度、阿里、腾讯)运维系统的分析
国内的互联网公司百度、阿里、腾讯(以下简称:BAT)所提供的主要业务内容不同,IT架构不同,运维系统在发展过程中有不同的关注点。
1腾讯运维:基于ITIL的运维服务管理
预计到2015年腾讯在全国将拥有60万台服务器。随着2012年自动化部署实践的成功,目前正在进行自动化验收的工作。在网络设备方面,后续将实现从需求端开始的全自动化工作:设备清单自动生成->采购清单自动下发->端口连接关系、拓扑关系自动生成->配置自动下发->自动验收。整个运维流程也已由初期的传统IT管理演进到基于ITIL的服务管理流程(如图2所示)。
图2腾讯基于ITIL的运维服务管理
2阿里运维系统:基于CMDB的基础设施管理+逻辑分层建模
CMDB(Configuration Management Database) 配置管理数据库(以下简称:CMDB),将IT基础架构的所有组件存储为配置项,维护每个配置项的详细数据,维护各配置项之间的关系数据以及事件、变更历史等管理数据。通过将这些数据整合到中央存储库,CMDB可以为企业了解和管理数据类型之间的因果关系提供保障。同时,CMDB与所有服务支持和服务交付流程都紧密相联,支持这些流程的运转、发挥配置信息的价值,同时依赖于相关流程保证数据的准确性。可实现IT服务支持、IT运维以及IT资产管理内部及三者之间的流程整合与自动化。在实际的项目中,CMDB常常被认为是构建其它ITIL流程的基础而优先考虑,ITIL项目的成败与是否成功建立CMDB有非常大的关系。
3百度自动化运维:部署+监控+业务系统+关联关系
百度主要面临的运维挑战包括:突发的流量变化、复杂环境的关联影响、快速迭代的开发模式以及运维效率、运维质量、成本之间的平衡等等。百度的运维团队认为,当服务器规模达到上万台时,运维视角需要转为以服务为粒度。万台并不等于"百台100";机器的运行状态,也不再代表业务的工作状态;运维部门为研发提供前置服务,服务与服务之间关系也随着集群的扩大逐渐复杂起来。
图3百度自动化运维技术框架
百度的自动化运维技术框架,划分为部署、监控、业务系统、关联关系四大部分,整个框架更多突出了业务与IT基础设施的融合,注重"关联关系"的联动。所谓关联关系,主要是指任务与任务之间的时序依赖关系、任务与任务之间的数据依赖关系、任务与资源之间的引用依赖关系,分别对应到任务调度、数据传输、资源定位的服务流程中,形成了多条服务链。
关联关系的运维与业务较强相关,需要有一套系统能够理清楚关系的全貌,从而在复杂的服务链上,定位运行所在的环节,并在发生故障时预估影响范围,及时定位并通知相应的部门。在这样的一套系统中,自动化监控系统非常重要。百度的技术监控框架,主要通过数据采集、服务探测、第三方进行信息收集,进行监控评估后交给数据处理和报警联动模块处理,通过API接口进行功能扩充(如图4所示)。
图4百度自动化技术监控框架
其实无论是BAT等互联网企业还是其他行业的企业,在IT建设中都会遵循IT基础架构库(ITIL)或ISO20000服务管理的最佳实践,采用自动化IT管理解决方案以实现重要的业务目标,如减少服务中断、降低运营成本、提高IT效率等等。随着ISO20000、ITIL v30的发布和推广,两者已经成为事实上的某种标准。在当今企业IT管理领域,对两个标准有着很迫切的需求。特别是ISO20000的认证要求,已经成为企业越来越普遍的需求 。ITIL v30包含了对IT运维从战略、设计到转换、运营、改进的服务全生命周期的管理,相关方案往往覆盖了多个领域和多个产品,规划实施和工具的选择会比较纠结。如果选择开源的工具,从CMDB开始就会遇到很多的开发工作,对于很多注重成本收益比的企业,可以参考,但由于无法保证性能与效果并不一定适用。因此,成熟的商业方案会是更好的选择。
最新的iMC V7版本,围绕资源、用户、业务三个维度进行创新,发布了SOM服务运维管理(基于ISO20000、ITIL标准)等组件,增加了对服务器的管理,能很好的满足更多互联网化的场景需求。
通常认为,一个高效、好用的配置管理数据库一般需要满足6条重要标准,即联合、灵活的信息模型定义、标准合规、支持内置策略、自动发现和严格的访问控制。企业IT基础架构的元素类型、管理数据的类型往往有较多种,如网络设备、服务器、虚拟机等,因此对于多种信息的存储需要有合适的联合的方法。虽然 iMC智能管理平台在网络设备、服务器设备等方面已经能够较好的的满足,但是随着服务器虚拟化技术的发展,虚拟机正越来越多的成为IT基础架构的一大元素。因此,针对这一需求华三通信基于CAS CVM虚拟化管理系统,对服务器CPU、内存、磁盘I/O、网络I/O等更细节的重要资源以及虚拟机资源进行全面的管理。与BAT不同,华三通信的网管软件面向全行业,目前虽然没有对域名管理等特殊资源的'管理,但是能够通过API接口等方式与特有系统进行联动,进而满足定制化运维的需求,尤其是在互联网化的场景中,针对不同的业务需求,可以实现很多定制化的对接需求,例如,iMC+WSM组件与国内某大互联网公司自有Portal系统进行了对接,打通了iMC工具与用户自有运维平台,很好的实现了架构融和。另外,与阿里的逻辑分层建模相似,H3C "iMC+CAS"软件体系在上层也做了很多的逻辑抽象、分层,形成了诸多的模块,也即是大家看到的各种组件。
三、网络自动化运维体系
"哪怕是一个只有基础技术能力的陌生人,也能做专业的IT运维;哪怕是一个只有初中学历的运维人员,也能够带队完成中小型机房节点的建设,并负责数百至上千台服务器的维护管理工作"--这是一些公司对自己IT运行维护水平的一个整体评价。看似有些夸大的嫌疑,但实际上依托于强大的IT运维系统,国内已经有不少互联网公司能够达到或者接近这一标准。
这些企业都经历了运维发展过程中的各个阶段,运维部门曾经也是被动的、孤立的、分散的"救火队"式的团队,在后来的发展过程中,IT系统架构逐渐走向标准化、模型化,运维部门建立了完整的设备、系统资源管理数据库和知识库,包括所有硬件的配置情况、所有软件的参数配置,购买日期、维修记录,运维风险看板等等,通过网管软件,进行系统远程自动化监控。运维过程中系统会收集所有的问题、事件、变更、服务级别等信息并录入管理系统,不断完善进而形成一套趋向自动化的运作支撑机制。按照云计算的体系架构,在这样一套系统中,主要的IT资源包括计算、存储、网络资源,近些年随着网络设备厂商的推动,网络设备管理方面的自动化技术也得到十足的发展。
总结来看,一个企业在进行互联网化的建设初期,就需要考虑到随着用户访问量的增加,资源如何进行扩展。具体可以细化为规划、建设、管理、监控、运维五个方面。
1规划模型化
为了确保后续业务能够平滑扩容,网管系统能够顺利跟进,互联网企业一般在早期整体系统架构设计时便充分考虑到标准化、模型化,新增业务资源就好比点快餐,随需随取。
标准化:一是采用标准协议和技术搭建,扩展性好,使用的产品较统一,便于管理;二是采用数据中心级设备,保证可靠性、灵活性,充分考虑业务系统对低时延的要求。
模型化:基于业务需求设计网络架构模型,验证后形成基线,可批量复制,统一管理,也适宜通过自动化提高部署效率、网管效率。
图5常见互联网IDC架构
2建设自动化
互联网IT基础设施具备批量复制能力之后,可以通过自动化技术,提高上线效率。在新节点建设过程中,3~5人的小型团队即可完成机房上线工作。例如某互联网公司某次针对海外紧急业务需求,一共派遣了2名工程师到现场进行设备安装部署和基本配置,而后通过互联网链路,设备从总部管理系统中自动获取配置和设备版本,下载业务系统,完成设备安装到机房上线不超过1周时间。
要达到自动化运维的目标,建设过程中需要重点考虑批量复制和自动化上线两个方面(如图6所示)。
批量复制:根据业务需要,梳理技术关注点,设计网络模型,进行充分测试和试点,输出软、硬件配置模板,进而可进行批量部署。
自动化上线:充分利用TR069、Autoconfig等技术,采用零配置功能批量自动化上线设备,效率能够得到成倍提升。
图6批量配置与自动化上线
○ Autoconfig与TR069的主要有三个区别:
○ Autoconfig适用于零配置部署,后续一般需要专门的网管系统;TR069是一套完整的管理方案,不仅在初始零配置时有用,后续还可以一直对设备进行监控和配置管理、软件升级等。
○ Autoconfig使用DHCP与TFTP--简单,TR069零配置使用DHCP与>
运维,更偏向于业务产品的支持,偏向于背后的英雄,运维团队需要为业务的稳定性,成本等方面负责!
企业需要的IT运维体系,本质上也是需要从稳定性、成本的角度来建立。
(1) 稳定性方面
稳定性,是反应服务访问质量差甚至无法访问的指标。业界流行的的稳定性公式是,服务总在线时间/服务总时间,具体指标数据以几个9表示,比如一般的云计算服务提供上,承诺的稳定性指标是3个9:999%(意味着每年宕机时间不超过875小时),而对于大型互联网公司的业务,对于运维的指标则是9999%(全年宕机时间不超过52分钟),甚至99999%(全年宕机时间不超过8分钟)。
稳定性方面,需要什么样的技术体系支撑呢?
监控体系。现在开源软件已经让企业的运维能力大幅提升,如zabbix,nagios等,已经被很多企业广泛使用。同时,随着人工智能的兴起,监控的智能化精细化水平,也在不断提升,比如,传统的监控无非是发现异常了之后报警,但加入智能化之后,则可以自动分析异常的根本原因在哪里,基于此则可以继续做自动的恢复,避免人工成本。
基础技术体系。包括硬件(服务器,网络等), *** 作系统/内核等,也直接影响到业务的稳定性。现在云计算的技术已经非常成熟,服务器与网络方面可以由类似openstack,cloudstack等IaaS平台管理, *** 作系统/OS等则可以通过docker,以及各类PaaS平台进行维护与管理,实现稳定性的保障。
安全体系。随着现在互联网的飞速发展,伴随而来的网络攻击也越来越疯狂,根据普华永道的调查,针对中国公司的网络攻击频率两年内已经提升了两倍,这也使得安全成为互联网架构中必不可少的环节,waf应用防火墙,数据清洗,防cc,ddos攻击等安全体系,也是必备的技术体系之一。
(2) 成本方面
计算成本。即托管企业运行软件所需要的服务器成本。现在云计算厂商提供的IaaS产品也是已经非常成熟,而且价格也在不断地下调,2016年10月,阿里云宣布了大量云产品的降价,一年内就下降十几次,也使得企业的成本控制方便可以越来有利。
人力成本。包括运维人力,研发人力,运维人力的主要投入来自于业务稳定性的保证,比如,服务异常之后的故障恢复,容灾与服务重建等。业务研发中,业务本身的迭代效率与质量,也间接影响了研发的成本。这方面则可以通过PaaS平台的技术手段来解决。
(3) 商业化
商业化是企业运维体系的更上一层。企业IT运维是每个企业必不可缺的环节之一,因此,运维相关的产品也逐渐受到企业的重视。比如应用性能分析厂商(new relic),则是提供了优化服务运维质量的有效方案,监控等产品也是运维最受欢迎的产品之一。
以上就是关于运维到底是干什么的全部的内容,包括:运维到底是干什么的、IT运维平台算法背后的两大“神助攻”、运维真的是整个IT行业技术含量最低的岗位吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)