经过三年多的快速发展,特来电云平台从无到有,从有到强,从强到精,在应用实践中不断打磨完善,逐渐成长为国内乃至国际充电网领域的标杆,支撑了每天300余万度,总量8亿余度的充电量。这背后既有云平台沉淀出的技术创新性与前瞻性,也有云平台研发人员刨根问底追求卓越的精神,更有运维系统及运维人员枕戈待旦默默付出的努力。笔者在此抛砖引玉,略谈对监控与运维的认知,以及特来电在自动运维方面的探索与实践。
一、提升认知
1.认知监控
一提起监控,第一种认知认为监控就是埋点各种探针,收集机器数据,对数据进行统计处理后进行展现。
特来电云平台在监控方面经过持续迭代发展,不断提升认知,目前已经形成了比较完善的产品体系:
首先基于大数据处理引擎Flink自研了全面监控平台,从前端到后端,涵盖系统监控、中间件监控、业务监控等,监控数据经过聚合处理后,通过Grafana进行展现,可以一览无余的对整个系统有全面的认知,但每个图表之间是孤立的,不易找出各个图表之间的关系;然后参考业界主流做法,自研了单链路监控,将一次从前到后的请求使用TraceId进行串联,使用RPCId进行排序,通过这种穿针引线的做法,真实还原了一次分布式调用关系的全貌,为定位性能瓶颈以及故障排错提供了有力支持;其次认识到单链路监控只能表示从A到B的一条关系路径,而从A到B的关系应该是多条,通过大数据离线分析技术,绘制了表示多条关系的全链路地图,对关系的认识更加全面;最后认识到前面的产品都是一种静态做法,应该通过实时流计算技术,绘制动态链路图,以期更加实时的认识整个系统的运行姿势。
“监控”在中文中是一个单词,如果翻译成英文,是由两个单词组成的:Monitor、Control,通过分析我们发现,前面所做的工作,更多是在做“监”(Monitor),而“监”是没法直接对出现问题的机器进行“控”(Control)的,因此“控”是我们发力的地方。因为通过Monitor没法直接Control,所以它们之间需要通过“析”(Analysis)进行连接,只有对Monitor来的数据进行了Analysis,才能有的放矢的进行Control,所以“析”也是我们要加强和继续发力的地方。
监、析、控是三个点,每个点都对应相应的产品,每个产品的目标是什么呢?“监”应该“全”,只有全面的收集数据,才能对系统的运行状况了如指掌;“析”需要“快”,只有快速的分析,才能高效的做出决策;“控”务必“准”,只有准确的控,才能立竿见影的解决问题。继续提升认知可以发现,监、析、控三个“点”两两之间不是孤立的,是互为补充、相辅相成的连成“线”,最终作为一个“面”提供一体化解决方案,如下图所示:
如前所述,“控”是监控整体解决方案要发力的地方,那么怎么控,如何控,我们认为控就是要在运维(自动运维、智能运维)上做文章。
2.认知运维
一提起运维,第一种认知认为这是一个很苦B的工种,比如“锄禾日当午,不如运维苦。对着破电脑,一调一下午”。其实运维能干的事情很多,遇到故障时,他们不只会重启机器,还会冲上去救火,退回来时背锅。不仅如此,运维对待自己的伴侣—机器,无论被欺负多少次,总是表现出好男人的本色:机器虐我千百遍,我待机器如初恋。总之一句话:运维不易,且运且珍惜。
特来电云平台运维是一种云上运维,整个运维体系分为两个层面(系统运维、应用运维)、四个维度(质量、安全、效率、运营),整体功能架构如下图所示:
质量管理其实就是DevOps,运维要追求系统稳定,但稳定是果不是因,质量才是因,只有质量管理抓好了,才能够促进系统稳定;安全管理是系统的外衣,只有安全做到位了,系统才不会裸奔;效率体现在自动运维和智能运维,运维工作只有做到了自动化与智能化,才能将运维人员从重复工作中解放出来,做更有价值的事情;质量、安全、效率做到位了,进行高层次、全方位的运营分析才会有保障。因此针对运维的认知是:抓质量、促稳定,提效率、保安全,全自动、精运营。
如前所述,特来电云平台运维分为两个层面(系统运维、应用运维),下面我们看下如何在应用层面,实现“控”的第一阶段:自动运维。
二、自动运维
自动运维是一个老生常谈的话题,不同的人有不同的理解,开源的解决方案也比较多,经过调研及选型,我们采用的“开源”+“自研”的方式来实现自动运维平台,整个平台功能架构如下所示:
我们认为运维人员,主要做两件事,一是进行系统状态维护,二是远程执行命令,因此经过抽象提炼出插件和脚本模型,让它们作为运维人员的左右手,通过命令下发的方式,下载到指定机器,执行相应的运维任务,同时上报运维过程中产生的日志,经过对日志的收集与分析,判定一次运维任务是否成功,整个运维过程涉及的命令收发及日志回传,均采用加密传输,保证了运维任务的安全性。
由于将运维工作抽象成了插件及脚本,因此自动运维平台框架搭建起来后,更多的工作是针对痛点问题开发对应的插件及脚本。作为插件及脚本的宿主方,运维Agent更像是一个轻量级的运维容器,每当收到一个运维任务,就会启动一个单独的执行器进程,该进程负责下载并执行插件和脚本,同时将运维过程中产生的日志源源不断上报到日志存储,如下所示:
常见的自动运维是很庞大的系统,并不一定适合每个企业,经过抽象和实践,特来电云平台自动运维平台做到了简易但不简单,很好的解决了日常运维中经常遇到的一些痛点问题,下面谈一下自动运维的两个应用实践。
三、应用实践
1.分布式应用程序部署
互联网企业中,部署分布式应用程序是一个司空见惯的事务,但当一个系统涉及到成百上千台机器,并且分布式应用程序很复杂时,进行应用程序的安装部署及更新,将会涉及到数据库还原、应用程序部署、Web站点创建及绑定、系统服务创建及启动等一些列操作,如果单靠手工进行操作,无疑是一件耗时耗力并且容易出错的事情。有了安装平台与自动运维平台结合,以前需要很多人两周才能搞定的事情,现在只需一个人20分钟,生产力得到极大提高,以下是分布式应用程序部署的一个简易图示:
2.预警平台
通过分析大量故障,我们发现当有问题发生时,重启站点或进程,杀掉阻塞进程或连接等一些常规操作,能解决80%的问题,而如果能将这些手工操作自动化,在问题恶化之前进行提前控制,将会起到事半功倍的效果。作为监、析、控中的一环,预警平台更偏“析”,通过对监控数据进行规则分析判断,当触发阈值时,可以得到机器信息、进程信息、站点信息、服务信息等,通过对自动运维平台下发指令动作,加载对应的插件及脚本,执行相应的运维任务,实现对系统的“控”,以下是一个简易图示:
四、特来电云计算与大数据微信公众号
1.微信公众号名称:特来电云计算与大数据
2.二维码: