浪潮:打卡了解Venus 详解这款OpenStack日志管理项目

北京2021年5月24日 /美通社/ -- Venus是什么?初见还要追溯到去年11月召开的浪潮云海创新论坛2020。会上不仅分享了浪潮云海对于前沿科技的创新洞见以及扎实可靠的落地实践,更重要的是TA,一个开源并贡献社区的OpenStack日志管理项目,被称为Venus。

伴随OpenStack技术发展愈发成熟,全球75个公有云、数以千计的私有云都在使用,累计部署了超过1000万个计算核心,确然成为行业大中型私有云建设的首选。

为应对行业中大型云建设的刚需,主要表现为节点规模部署环境逐渐走向大规模,涉及到的功能模块层出不穷,尤其是各种日志类型更是纷繁复杂。“海量、繁多、分散……无论是格式还是位置都让运维人员在服务器上很难通过日志排查发现问题。”浪潮云海研发团队表示。

更重要的一点,当系统发生故障或者出现性能瓶颈时,经常需要各种类型日志通过串联才能定位故障原因或者找出导致系统性能瓶颈的线索才行,但OpenStack平台的调用多为分布式调用,日志的串联简直难出天际。综合考量,浪潮云海实力推出统一日志管理项目Venus,主要还是取决于大规模部署条件下,针对OpenStack平台在日志存储、检索、分析等方面的核心需求。

贡献社区的Venus具体能做啥?

总体来说,Venus可以做到一站式满足日志的采集、清洗、索引、分析、告警、可视化、生成报告等需求,帮助运维人员快速检索问题,掌握平台的运行健康度,并在未来计划引用机器学习算法,快速定位IT故障及根因,提高运维效率以及平台管理的水平。 简单来说在检索工作上,主要提供了简单易用的检索方式,可以做到检索一切日志数据,定位日志上下文;分析上主要实现日志关联、字段数值统计,提供多场景、多维度的可视化分析报表;告警层面则将搜索转化为主动告警,实现海量日志中错误的“大海捞针”;定位主要是通过建立知识图谱和调用的链式关系,结合算法实现故障的快速定位。

以日志预处理为例。对于日志数据,OpenStack社区从开始开发就制定了严格的日志规范,大部分模块都遵守此规范,即社区规定的日志格式为<时间戳><日志等级><代码模块><日志内容><源代码位置> 。对于此种日志很容易进行预处理,拆分成多种维度进行索引,如下图所示。

通常OpenStack日志索引的维度主要包括时间维度、主机维度、用户维度(用户id)、租户维度(租户id)、级别维度(info、warning、error等)、组件维度(nova_api、nova_compute等)、python_module(neutron.wsgi、nova.osapi_comput.wsgi.server等)、日志文件名(nova、neutron等)、API status(200、404等)、API type(GET、POST等)、API time等,但也有部分原生模块的日志记录并不规范,浪潮的OpenStack对其全部进行了规范化处理。

如此看来开源到OpenStack社区的Venus项目现已具备基本的日志分析处理功能,总结一下,主要功能为:

全文/多维度检索:针对全文或已索引维度进行关键词检索(可模糊匹配)

多维度统计/展示: 对已索引的一个或多个维度的日志条数进行统计并展示

典型错误分析: 集成典型的错误分析,例如mariadb连接错误等

错误日志告警:当周期内错误日志条数超过阈值,进行告警并通知

调用链分析:对系统中的调用,根据global_requestid进行流程分析

API执行状态/耗时:对记录API调用状态的模块,可以统计API执行的状态和时间消耗

从实践层面看,浪潮云海每年都会对自研OpenStack产品进行为期1个月到2个月的大规模测试,这是一个测试、调优、测试环节不断循环的过程,而支撑这个过程快速完成的除了监控系统,还有日益成熟的日志系统,以2020年1000节点大规模测试为例:

测试过程中,报错LOG可视化快速展现,从而了解各组件的报错信息,具体如下:

测试过程中出现过RABBITMQ挂掉的情况,可通过RABBITMQ的连接错误告警,可以做进一步的数据分析,详情如下:

表现出挑的Venus,整体的技术架构又如何?

浪潮云海技术研发团队称,日志管理模块Venus以efk为基础,总体架构如图:

采集端:开发了基于fluentd的采集任务,针对OpenStack、操作系统、平台服务等日志开发了读取、过滤、格式化、发送等插件,并且用户可以按需配置

日志存储:采集并格式化后日志索引至elasticsearch集群中,ES提供副本机制,即使在某些服务器宕机后仍能正常工作,提高数据可用性

Ivenus_api:api、restapi服务,提供更简洁、全面认证的接口。将上层调用转化为底层Elasticsearch的查询,并对查询的多维度索引数据进行简单处理,同时将结果返回

Ivenus_manager:内部定时任务模块,开发了可配置的定时任务,主要包括:

错误分析任务:各模块错误、mariadb连接错误、rabbitmq连接错误等缝隙任务

通知告警任务:针对不同时间、不同模块的错误日志条数设置阈值并提供告警服务和通知服务

调用链任务:根据global_requestid串联开发操作的调用链分析功能,可以展示调用的执行顺序、时间、错误信息等并提供导出操作

配置管理任务:根据告警阈值设置、定时任务管理、日志保存时间设置等配置管理任务

未来的Venus,我们期望是这样的!

Venus项目旨在打造一个开放的OpenStack日志管理平台,集合广大用户在日志领域的需求和实践,提供各场景日志分析并集成算法和知识图谱实现故障的快速定位,构建完备的日志运维场景,未来Venus计划如下:

采集:除了fluentd,集成其他采集插件,例如logstash、flume等

分析:探索更多运维场景,对各场景关键数据进行统计分析和告警

展现:将venus的配置功能、分析功能、告警功能以插件形式集成到horizon

定位:聚类日志、构建知识图谱;集成算法类库,对故障进行根因定位

一直以来,浪潮云海都通过对开源开放技术的攻坚,突破开源版本在性能、大规模管理能力方面的瓶颈,秉承“源于开源、馈于开源”的理念助力业界共同构建开放统一的智能基础设施,未来定会在此领域更多发力创造更多惊喜、取得更多成绩。

打开APP阅读更多精彩内容