早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
问题及痛点

尽管 Grafana Loki 定位为轻量级、水平可拓展和高可用的日志系统,但其在实际业务使用过程中仍存在一些问题:
查询资源消耗过大:Loki 未对日志内容创建索引,只能按照标签粒度对日志进行初步过滤。如果想要实现日志内容搜索功能,需使用 Query 对全量日志数据进行全文正则匹配, 而该操作会带来巨大的突发资源消耗,包括 CPU、内存、网络带宽。当查询的数据量和 QPS 越来越大时,Loki 的资源消耗及其稳定性问题也变得越来越不可忍受。 Loki 架构复杂繁多:Loki 除了上图涉及模块之外,还有 Index Gateway、 Memcache、 Compactor 等模块,过多的架构组件给系统运维和管理带来很高的难度,配置起来也非常复杂。 维护成本及难度高:MiniMax 部署集群数量较多,且每个集群的系统、资源、存储、网络等环境都有差异, 如果在每个集群中部署一套独立的 Loki 架构,维护成本及运维难度都非常高。
为什么选择 Apache Doris
日志数据规模庞大:由于 AI 业务场景具备链路长、上下文数据多、单次请求数据量大等特点,其产生的日志体量远远高于相同用户量级的其他互联网产品,这要求系统能够以较低的成本、稳定可靠的存储这些数据。 查询性能要求高:业务对日志查询速度有较高的要求, 比如 1 亿条数据需要在秒级返回查询结果。 分析灵活:要求系统能够支持日志指标查询、如某些关键词的统计曲线,同时能够提供日志告警服务。 低成本:由于日志原始数据量达到 PB 级,而且还在不断增加,存储和计算的成本需要控制在合理范围内。
采集端:负责从服务的标准输出采集日志,并将数据推送到中心消息队列。 消息队列:负责解耦上下游、削峰填谷。在下游组件不可用时,仍然能保留一段时间的数据,保证系统稳定性。 存储查询中间件:负责日志数据的存储和查询,在日志系统场景下,一般要求该中间件具备倒排索引能力,来支持高效的日志检索。

Aapche Doris 日志系统升级实践

在具体的应用落地方面:
在日志导入上:新架构同时使用了 Doris Routine Load 和 Stream Load 方式。Routine Load 开箱即用,可直接处理不需要额外解析处理的 JSON 格式日志。而对于需要过滤与处理的复杂日志, MiniMax 在 Kafka 和 Doris 之间增加了日志写入器 Mlogs Ingester,由其解析和处理后,再通过 Stream Load 写入 Doris 中。 在日志检索上:主要使用了 Doris 倒排索引分词查询能力以及全文正则查询能力。 倒排索引分词查询能力:分词查询性能较好, 场景覆盖度较广,主要采用倒排索引查询 MATCH
和MATCH_PHRASE
。全文正则查询能力:正则查询精度更高,性能低于比分词查询, 适合小范围查询且对查询精度要求较高的场景,主要使用正则查询 REGEXP
。在性能提升上:为进一步提升性能,实现了查询截断功能。当前日志数据按照时间顺序呈线性排列, 如果用户选择的查询范围过大, 会消耗较大的计算存储网络资源, 从而导致查询超时甚至系统不可用。因此,对用户的查询进行了时间范围截断, 避免查询范围过大;并提前统计所有表的每 15 分钟的数据量, 动态地预估用户在不同表中最大可查询的时间长度。 在成本控制上:使用了 Doris 的冷热数据分层能力, 将 7 天内的数据定义为热数据,7 天之前的数据为冷数据。冷数据存储到对象存储, 以降低存储成本;同时对 30 天之前的对象存储数据进行归档, 仅在必要时恢复归档数据, 这也极大地降低了存量数据的存储成本。
使用收益
架构简化:新架构部署简单、一套架构即可服务全部集群,降低了整体系统维护及管理的复杂度,节省了大量的运维人力及成本投入。 秒级查询响应:基于 Apache Doris 的倒排索引能力及查询拦截功能,性能显著提升的同时系统也更加稳定。从 10 亿数据中查询单个关键字以及进行聚合分析,基本可以在 2s 内完成,对于日志数据的分析,大部分场景也可以做到秒级响应。 写入性能高:当前系统规格可以实现 10 GB/s 级别的日志写入吞吐,能够在满足持续高吞吐写入的同时满足实时性要求,数据延迟控制在秒级。 存储成本低:数据压缩率较高达到 1:5 倍以上,因此存储空间占用较原本架构极大幅度降低。对于冷数据使用 Doris 冷热分层能力进一步降低数据的存储成本,存储成本节省超过 70%。
未来规划
丰富日志导入预处理能力:增加日志采样、结构化等预处理能力,进一步提升数据的可用性及存储性价比。 增加 Tracing 能力:尝试将监控、告警、Tracing、日志等各方面的可观测性系统打通,以提供全方位的运维洞察。 扩大 Doris 使用范围:除日志场景之外,Doris 逐步被引入数据分析和大数据处理场景下,助力后续构建数据湖仓能力。

▼ 点击阅读原文,了解并使用 Doris!
文章转载自Apache Doris 中文站,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




