浪潮云平台InCloud OpenStack是面向下一代云数据中心和云原生应用的智慧云操作系统,全面基于OpenStack,采用开放标准技术路线,实现用户业务的自动感知、业务的智能管理和服务的自动化交付,为用户构建开放、融合、安全的云,支撑面向未来的智慧计算世界。浪潮云平台InCloud OpenStack已成功应用于金融、政府、能源、环保、教育等行业,累计拥有3000+用户。
OpenStack系统规模提升,传统监控弊端凸显
OpenStack是开源 IaaS解决方案,组件众多,架构复杂,并且技术栈长。随着基于OpenStack的客户系统和业务规模的快速提升,实现对系统和业务进行高效、快速、灵活监控和告警的需求越来越迫切,既要保证服务的高可用、高性能、可扩展,又要提高异常处理效率,降低损失。
以zabbix、nagios为代表的传统监控,具有采集方式多样、插件成熟、配置灵活等优点,但在大规模OpenStack集群监控中,却存在如下缺点:
1. 配置麻烦,无法根据节点上运行的服务自动配置监控项。
2. 性能瓶颈,多采用关系型数据库,并发能力、读写性能等无法支撑大规模集群。
3. 用户界面专业复杂,不够简单易用。
4. 不易扩展,以监控为目标,不易添加智能分析等功能。
浪潮云平台InCloud OpenStack监控模块,提升监控效率
浪潮云平台InCloud OpenStack监控模块就是在这个背景下诞生并不断进行优化的,其整体架构图如下所示,此架构能够有效提升监控数据获取密度与存储数量级,为运维决策提供数据支撑。
图1 浪潮云平台InCloud OpenStack监控模块整体架构
浪潮云平台InCloud OpenStack监控模块提供了简单易用的页面供用户进行监控管理配置及查看,包括:支持资源实时指标、历史曲线;支持采集配置、告警配置、通知配置;支持配置的及时下发和快速生效;支持告警历史记录、通知历史记录的管理。
图2 浪潮云平台InCloud OpenStack监控模块监控页面
面对日十亿量级监控项,浪潮InCloud OpenStack如何实现秒级监控?
大规模监控是浪潮云平台InCloud OpenStack解决的最核心问题。以某行业客户的InCloud OpenStack项目为例,其监控模块的物理服务器规模有500+台,性能数据采集周期10秒,服务数据周期1-5分钟,当全部监控项都设置为采集时,每个节点约2000+监控项/周期,每天集群约产生50亿项监控数据。
面对如此庞大量级的监控项,并实现秒级监控,需要解决五个主要问题:大规模部署和海量监控的采集配置该如何进行?大规模集群的采集压力如何化解?监控数据的实时性和高并发如何应对?多OpenStack集群的集中监控如何实现?面对海量告警,又该怎样快速定位问题?
面对这五个棘手问题,浪潮云平台InCloud OpenStack逐一给出了解决方案:
1、容器化一键部署
集群规模的扩大对于云平台监控的部署特别是监控的配置的要求很高,浪潮云平台InCloud OpenStack监控模块的安装部署实现了容器化,采用Kolla-ansible进行一键化部署,部署流程包括采集配置、容器部署、配置表初始化、脚本发布、监控变量导入、页面导入等,部署时根据OpenStack节点角色自动配置采集项,例如当此节点部署有mariadb服务,则此节点配置mariadb相关采集;当此节点部署nova-compute服务时,则此节点配置nova-compute相关采集。通过此方案InCloud OpenStack实现了监控一键部署。
2、主被动混合采集机制
浪潮云平台InCloud OpenStack监控模块数据采集支持集中采集、代理采集以及事件采集三种采集方式,如下图所示,可实现异构设备的数据采集,具体包括OpenStack系统本身(宿主机、虚拟机、集群、容器、核心服务)、原生OpenStack(宿主机、虚拟机、集群、核心服务)、操作系统、数据库、存储服务、中间件、CEPH存储等。
这种主被动混合采集机制,既减少了性能数据的采集压力,有效地校验了关键资源的数据完整性,又提高了关键数据的实时性。
图3 混合采集机制
3、高效缓存,兼顾时效
浪潮云平台InCloud OpenStack采集控器采用客户端缓存机制,可以配置时间和缓存量两个缓存阈值,默认时间阈值,只有达到阈值时,才能触发数据发送,这种机制大大减低了存储端的写入并发,同时兼顾了数据的时效性。另外客户端采集采用go语言开发,具有并发好、资源占用低、插件开发简单等优点。
图4 高效缓存,兼顾时效
4、多OpenStack监控级联架构
随着多云的应用越来越广泛,多数据中心的集中监控亟待解决。浪潮云平台InCloud OpenStack采用自研监控管理组件pluto级联方案,每个OpenStack集群采用独立的pluto用于配置管理上层pluto的接口进行调用;而上层的监控平台的pluto对所有集群的pluto进行统管,并对各集群数据进行分析。其架构图如下所示:
图5 监控级联架构
5、智能告警聚合及分析
大规模集群的海量洪水告警及问题的快速定位是运维过程中需解决的最大难题,浪潮云平台InCloud OpenStack监控模块采用两种方式解决此问题:一是以资源为粒度发送通知。例如宿主机、云主机等为资源类型,宿主机A为一个资源,监控模块会对该资源的所有监控项进行聚合,以告警项最严重的状态为资源状态发送通知,如下图所示;二是根因分析,采用jaccard等算法对告警进行分析,得到根本原因,供运维人员参考。
图6 告警聚合流程
此外,整个浪潮云平台InCloud OpenStack监控系统采用松耦合的架构,可以添加Hadoop存储历史数据,实现高吞吐量和超大规模数据集的处理,也可以添加Spark作为监控告警数据分析工具。
浪潮云平台InCloud OpenStack已经在多个行业完成部署,其监控模块帮助某金融机构和商业公司实现了大规模集群监控,其中,某商业公司InCloud OpenStack私有云单集群建设规模超过1000台服务器,位列全球TOP5,借助先进的数据中心架构,核心业务实现了弹性计算资源及稳定的平台,监控模块亦满足其对数据实时性、高并发的监控需求,保证了服务的高可用、高性能、可扩展,有效提升数据中心运维保障效率。