系统三智能运维实践之四——EOPS分布式自动化运维平台

本篇介绍系统三7e平台之EOPS

随着主机下移和小机下移,以及网络银行的持续发展,系统三目前运维面临了很多问题,这些问题包括:

一、监控工具BPPM/NETCOOL的问题

中心集中采购的BMC的监控工具,服务端在系统一,所有监控配置的需求必须由系统一统一配置,流程复杂,各团队想看自己的服务器图表比较难操作,不太方便

目前生产在用的功能基本就是关键词告警和固定阈值告警,很多高级功能未开启,也不方便定制

二、监控工具SCOM的问题

服务端在系统三配置,主要还是针对windows系统和微软自己产品的告警,比如群集状态、批量作业、SQLServer、IIS等,对装在windows上的非微软系的中间件无法监控

复杂的告警和监控逻辑支持不友好

三、自动化部署、配置、变更的问题

系统三并没有集中的自动化的运维操作工具或平台,特别是针对Linux系统(SAS不好用,只能推脚本)

一般部署中间件、磁盘分区、建用户、扩容等除了手工操作之外,就是一些自动化安装配置脚本,没有成平台的东西将整个流程串下来,主要还是堆人力

四、运维智能化程度不高的问题

运维首先要解决自动化,才能去考虑智能化,目前系统三的运维自动化程度还不高,智能化就更无从谈起

通过监控分析预防攻击、预测交易、容量规划、应急处置等能力基本没有,一般都是事后(收到告警或者有用户投诉)才能发现故障,没有任何故障预防、安全预防的能力

五、运维数据利用率不高的问题

其实生产上每天产生的监控数据和系统/应用日志有很大的潜在利用价值,但目前基本上日志打到服务器上,就等着磁盘满了删掉,最多就是在处理投诉工单的时候查一下日志(主要指中银开放平台)、或者配合应用查一下系统故障,除了占空间基本再无其它用处

查日志现在就是一台一台登上服务器用vim/grep命令做,效率低到惨不忍睹,还面临一个查出来的日志怎么发给开发去处理的问题(ECC拷到工位,再发给开发)

上述问题每一个都很实在,都是切肤之痛,因此x86平台亟需一个能解决、或者部分解决上述问题的、成体系架构的东西,它不能只是一个简单工具或者一个平台,而应该是从方法论到平台实践到流程管控的贯穿整个运维生命周期的一套技术体系。

系统三团队自2016年开始的智能化运维转型与实践之路,主要的成果之一即分布式自动化运维平台EOPS。本篇重点讲述EOPS的功能和架构规划设计。

用一句话描述什么是EOPS——系统三团队完全自主研发的,以x86分布式系统为主要运维对象,基于开源软件技术实现的一套分布式可扩展的,满足标准化、自动化和平台化的,提供系统与组件部署、多维监控,以及日志统计分析等功能在内的综合运维管理平台

EOPS功能架构

EOPS整体功能上依赖于CMDB配置管理信息,系统三在2015年起建立了自己的CMDB,详见系统三智能运维实践之三——EIRMS资源管理平台。以CMDB为基础,EOPS实现了如下主要功能:

基于企业级开源监控软件Zabbix实现系统和组件的运行状态监控

基于开源自动化工具Ansible实现系统与组件的部署配置管理、健康检查与开门营业检查等

基于开源的日志分析套件ElasticStack(原来叫ELK)实现系统与组件的日志集中收集与统计分析管理

对接系统三的运维大数据平台——EIDAS(下一篇文章论述),可基于Hadoop、Storm等大数据技术进行日志分析,实现交易统计、动态基线、容量规划、趋势预测等功能

对接系统三的云化资源管理平台——ECMS,为中国银行分行托管云,以及未来中国银行云平台基础设施提供OpaaS,即IT运维服务,使得云平台能够通过EOPS提供的服务进行IaaS之上的系统、中间件、应用的部署、运维和管理

EOPS系统架构

EOPS整体架构由底向上分为三层:Server层(服务器层),Service层(微服务层),平台层。

Server层

EOPS底层功能是基于若干开源软件实现的。对于传统银行来说,如果既想节约成本,不想花钱购买昂贵的商业软件,又没有太多的人力精力像互联网公司一样完全从零开始研发一套运维工具,那么最好的办法就是基于开源软件做二次开发。Zabbix、Ansible、ELK都是开源领域著名的运维软件,而且他们都提供多种类型的API,我们完全可以基于这些API做一些定制开发,满足系统三日常的运维需求。

EOPS的Server层主要由Zabbix、Ansible、ELK/Storm三大类集群构成。

Zabbix:强大的监控定制化能力,方便的界面配置操作,以及稳定的性能。目前按照系统三规划,一个台Zabbix Server可承载1000个分区的监控,现在系统三总共有2台Zabbix Server

Ansible:基于SSH方式的远程操作,避免了在客户端安装Agent。提供的copy、template、shell、service等各类基础模块,以及复杂的playbook配置,完全满足日常系统及中间件的配置部署工作

ELK/Storm:该集群在部署上归于EIDAS,EOPS为其提供前端门户,本文不做架构介绍

Service层

开源软件已经选好了,但此时我们又面临如下需要考虑的问题:

Zabbix、Ansible、ELK在各自领域具有强大的功能,但毕竟还是各自独立的、功能不同的工具软件,如何才能将其统一规划设计,组成一个整体架构?

Zabbix、Ansible、ELK各自具有其分布式特性——都支持集群部署、动态横向扩展、故障隔离等,如何将其统一管理,特别是未来跨数据中心以后的一体化运维管理?

如何实现OpaaS,使其建成之后不仅仅是一个工具平台,而是成为一个能为整个数据中心所使用的IT服务提供者?

系统三在智能化运维转型过程中,开发了诸多平台,各自承担不同的功能,这些平台之间有何关联?平台之间不是彼此割裂的,是有数据和功能上的交互的,比如EOPS需要使用CMDB的配置信息、虚拟化信息,运维大数据平台的流式告警需要发送到EOPS,云化资源管理平台需要调用EOPS的自动化功能。它们之间如何交互如何调用?

在Service层,我们封装了Zabbix、Ansible、ELK的常见操作,并且对上层提供统一的REST接口,这样就将底层集群和上层服务解耦,平台开发者无需关心某个功能底层是如何实现的,也无需关心底层集群的可用性(挂了怎么办),因为服务层已经为其保证了高可用与负载均衡机制。

平台层

该层承载的功能主要包括:

平台的展示逻辑(封装与组合微服务调用结果)

配置部署操作接收用户的前端输入,并组装成消息报文发送给Ansible对应的微服务(平台和Ansible之间通过消息队列互联)

平台的权限管理与ID管理,提供页面级和接口级的权限管理,并且对于生产服务器的写操作,提供平台随机口令申请,经审批后可登录EOPS进行操作(审批流程2018年完成开发上线)

其它平台端功能

EOPS主要功能概述

EOPS主要包括首页、工作台、监控管理、事件管理、运维服务、运营分析、工具箱、平台管理几大功能分区。下面选取几个重要功能详细介绍。

一、基于Storm和Websocket的交易量实时展示,如图通过实时收集日志,并经过Storm进行聚合统计,实现了网络银行关键交易笔数监测、访问量全国分布实时监测、当日交易量和访问量实时统计等场景,并通过Websocket技术由Storm直接推送到前端页面。不同于前端页面定时刷新数据库,该方式真正做到了实时性。该功能可为业务推广进行运营分析支持。

二、个性化定制我的面板,如图运维人员可以将自己感兴趣和关心的指标监控在我的面板定义,更方便快捷使用。

三、我的系统概览,如图登录用户可看到自己的ABC角系统的告警概览(7*24值班人员可看到所有系统),告警级别同ECC一体化监控保持一致,点击告警色块可看到告警详细信息。EOPS的监控告警依赖于标准化的监控模板,目前EOPS提供涵盖操作系统、中间件到应用在内的各类监控模板100多个,监控项50多万。对于新增系统,只需直接应用监控模板即可完成全部服务器的监控项配置,无需一台一台服务器进行手工配置。

四、基于HTTP/PING/TCP的业务拨测,如图按照批次分块显示,通过配置的URL监控,返回拨测结果,包括返回码、返回时间、错误信息和响应速度等,还可查看历史图表。拨测可提供先于系统故障的预警功能,对于访问缓慢、异常等可在用户投诉之前提前发现并及时处理。

五、告警事件概览,如图该页面主要给7*24值班人员查看所有告警信息,提供全局视角的告警概览,便于快速处理。

六、基于图数据库Neo4j的系统拓扑自动发现,如图通过脚本定时、自动收集服务器TCP连接关系并存入图数据库,基于图数据库的Cypher语法可查询系统内部、系统间拓扑连接关系,绘制出系统拓扑图,并将监控和告警关联至图中节点。基于图的拓扑发现功能彻底解放了以往根据部署方案手工画架构图的工作,对于流程复杂、交易链冗长、难以靠人工滤清关系的系统,可通过EOPS的拓扑自动发现自动绘制、更新系统关联关系。

七、健康巡检,如图巡检流程:选择系统->选择服务器->选择巡检脚本->任务执行。并在此页面查看巡检结果,对每个服务器的每个巡检项以表格形式列出结果。相较于以往登录服务器进行手工巡检,或者用SAS推送脚本再收集文本结果,EOPS的健康巡检可快速配置巡检脚本和目标服务器,并在页面直观的显示巡检结果,哪台有问题、有什么问题一目了然。

八、Web访问统计,如图自由定制想进行Web监控的服务器,将该访问该服务器的来源IP进行TOP10统计,并将IP转换成省市坐标。该功能主要为了监控类似DOS攻击这样的异常访问。该功能上线以后成功在2017年预警过用户中心的短信炸弹事件和APS系统的异常攻击事件。

九、批量任务执行,如图EOPS有标准化的脚本库,用户也可以上传自定义的脚本,并通过EOPS推送到服务器执行。

十、网络银行访问量动态基线预测,如图基于LSTM深度学习算法对历史访问量数据进行模型训练,并于每日零时预测出当天的交易量带状阈值,上图蓝线是实时推送过来的交易量,当蓝线超出灰色带状区域时可认为是访问异常,可由人工或机器做后续处理。交易预测是系统三2017年在运维方面进行人工智能的一次先期尝试,2018年,系统三将就AI在运维领域的应用展开全面的场景规划和研究实践,敬请期待。

十一、.基于Activiti实现工作流引擎,结合Ansible定义的原子操作,提供运维全生命周期管理,包括简化版的审批流程(2018待建)。

EOPS亮点介绍

自主可控:EOPS从底层到门户全部由系统三自主研发,未使用任何一款商业付费软件,全部基于开源实现,也无任何厂商支持,组件调优、故障处理、维护工作全部由系统三员工自行完成,具有完全自主知识产权

跨地域跨中心:底层开源组件支持跨地域跨中心的分布式部署,可满足未来中国银行四地五中心的一体化运维

容器与微服务:基于kubernetes构建了Service层(即微服务层),通过kubernetes进行服务的创建、发布、横向扩展、负载均衡、服务挂掉后的自动漂移(保证高可用)。Service封装了底层开源软件的各种接口,使平台开发人员无需关心底层软件的维护。目前在系统三,Zabbix/Ansible/ELK/Storm这些底层软件有专门的同事进行维护、升级,和开发是不同的人员。

IT运维服务化:EOPS通过Service层封装了运维操作,例如监控、部署、变更、批量执行脚本等,可为本团队或其它团队提供IT运维服务

兼容传统商业软件:对于运维目标,平台上兼容AIX、Linux、Windows,中间件除了开源的Apache、JBoss、Mysql等,还兼容IHS、WAS、Oracle等商业软件

智能运维:EOPS提供的动态基线、交易量预测、交易量实时展示、访问量全国分布、复杂告警、故障处理建议等应用场景,大幅提升了系统三运维智能化能力

EOPS建设成效

目前EOPS纳管x86平台分区数1700+,每日生成并处理100+告警,累计监控项接近50万,每日新增日志250-300GB。

通过EOPS进行自动化运维,可使组件安装与系统配置时间从1-2天缩短至10分钟,日志收集时间从3小时多缩短至1小时,批量启停从20分钟缩短至2分钟,系统巡检时间控制在10分钟之内,整体操作效率至少提升10倍以上。

该项目2016年参加人民银行科技发展奖获二等奖

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180131G0AIL100?refer=cp_1026

扫码关注云+社区