当业务出现故障或版本发布后,运维和开发人员面临着从海量、无序的日志中快速发现异常模式的挑战。传统的关键词搜索效率低下,难以洞察全局变化。日志服务的新版日志聚类功能,通过智能算法自动将相似的日志聚合为结构化的日志模板,并分析其中的变量。它能帮助您在无需编写复杂查询的情况下,迅速掌握日志全貌,识别新增异常、定位问题根因,尤其适用于故障排查、版本回归测试和安全审计等场景。
功能概述
新版日志聚类提供以下核心能力:
-
日志模式提取:从海量日志中自动发现日志类别,提取每个类别的日志模板。
-
变量分布分析:支持查看日志模板中变量部分的分布情况。
-
分组聚类:支持按指定字段对日志进行分组后聚类,适用于多模块日志的分析。
-
对比分析:支持比较不同时间段的日志模式变化,快速发现异常。
-
正则反查:提供日志模板的正则表达式,支持反查原始日志。
核心概念
日志聚类通过以下概念将非结构化日志转化为洞察:
-
日志类别:具有相似格式的日志属于同一个日志类别,不同日志格式的日志属于不同的日志类别。
-
日志模板:从具有相似格式的日志中提取出的共同模式。模板由常量和变量组成。
-
日志变量:同一日志类别中日志内容的动态变化部分,通常是日志输出语句中记录的运行时信息。在模板中以高亮形式显示。
-
日志常量:日志模板中除变量部分外的全部内容。同一日志类别中的所有日志常量部分相同。
前提条件
在使用本功能前,请确保满足以下条件:
-
说明
新版日志聚类提供对已开启索引的文本类型字段的聚类能力。在字段索引的基础上实时计算日志模板,因此除日志字段索引外,不会产生额外的索引流量。
执行日志聚类分析
本节将引导您完成一次完整的日志聚类分析,包括基础聚类、分组聚类和对比分析。
步骤一:进入日志聚类页面
-
登录日志服务控制台。
-
在 Project 列表区域,单击目标 Project。
-
在左侧导航栏中,选择
日志存储 ,单击目标 LogStore名称前的
展开下拉菜单。 -
在下拉菜单中,单击
查询分析日志。 -
在查询分析日志页面,单击 。
步骤二:配置聚类参数并执行分析
在聚类页面,您需要配置以下参数以启动分析:
-
设置分析范围
-
时间范围(可选):选择您要分析的日志所在的时间段。
-
查询语句(可选):输入查询语句以过滤日志。目的是缩小分析范围,排除无关日志(如
* and not level:INFO),可以显著提升聚类分析的精度和效率。
-
-
选择聚类目标
-
聚类字段(必选):选择要进行聚类分析的文本字段。系统会根据字段内容推荐最适合聚类的字段。仅支持选择一个字段。
-
-
(可选)分组聚类与对比分析
-
聚合字段(可选):选择一个或多个字段(需已配置索引且开启统计)对日志进行预分组。当日志中包含多个模块(如不同
service_name)时,通过分组可以实现对每个模块的独立聚类,避免不同模块的相似日志被错误归类。-
使用场景:
-
不同模块的日志差异较大,需分别聚类分析。
-
需要按日志级别、服务名称等维度分组查看聚类结果。
-
-
聚合字段说明:
-
用于预分组的维度字段,在聚类前先按这些字段进行聚合。
-
建议字段包括:日志等级、服务、模块、环境等。
-
支持选择多个聚合字段进行组合分组(不超过3个)。
-
通过预聚合可以提高聚类精度,避免不同维度的日志被错误归类。
-
建议选择取值相对有限且具有业务意义的字段作为聚合维度。
-
-
限制:最多支持选择3个聚合字段。
-
-
对比时间(可选):选择一个用于对比的时间段。通过与历史数据对比,快速发现版本发布或故障期间“新出现”、“已消失”或“数量剧增/剧减”的日志模式。
-
使用场景:
-
版本发布前后的日志对比分析。
-
故障时间段与正常时间段的对比。
-
周期性对比(如今日vs昨日同时段、本周vs上周同时段)。
-
性能优化前后的效果评估。
-
-
配置方式:
-
时间偏移:相对当前时间范围向前或向后偏移。
-
自定义时间:手动选择对比组的起止时间。
-
-
配置建议:
-
建议选择相同时长的时间段进行对比,确保对比结果的可比性,不建议选择重叠时间区间进行对比。
-
对于周期性业务,推荐使用同比对比(如昨日同时段、上周同时段)。
-
可结合聚合字段进行分层对比,如按服务维度分别对比各服务的日志变化。
-
-
-
配置完成后,系统将自动触发实时聚类分析。
步骤三:解读聚类结果
分析完成后,结果将以列表形式展示,每一行代表一个日志模板。
-
聚类模式:展示了从日志中提取的模式,其中的变量部分会高亮显示。
-
数量:显示匹配到该模板的日志总数。
-
日志分布:以直方图形式展示该模板下的日志在不同时间点的数量分布,便于观察趋势。
-
分组信息:如果您配置了聚合字段,此列会显示该模板所属的分组。
-
聚类算法会采样一批具有代表性的日志进行分析。如果时间窗口中的日志量过大且日志格式复杂,采样的日志可能无法覆盖全部日志类别。
-
可通过配置查询语句过滤不关心的日志,提高聚类效果。
步骤四:下钻分析变量分布
当您发现一个可疑的日志模板(例如,一个错误日志模板数量激增)后,分析其内部变量的分布是定位根因的关键步骤。
-
在聚类结果列表中,单击聚类模式列中高亮显示的变量部分。
-
在弹出的面板中,查看该变量的分布情况:
-
枚举类型:显示变量值的 Top N 取值及其出现次数。例如,查看
error_code变量的分布,快速定位哪种错误码最多。 -
数值类型:显示变量的数值范围分布。
-
-
如果您配置了对比时间,面板会同时展示当前时间段(实验组,深色)和对比时间段(对比组,浅色)的变量分布,便于您快速识别变化:
-
深色柱状图:当前时间范围(实验组)的日志数量。
-
浅色柱状图:对比时间范围(对比组)的日志数量。
通过对比,可快速发现:
-
新出现的日志模式(实验组有、对比组无)。
-
消失的日志模式(实验组无、对比组有)。
-
数量变化显著的日志模式。
-
步骤五:反查原始日志
在定位到具体的日志模板后,您可能需要查看完整的原始日志以获取更多上下文信息。
-
在聚类结果列表中,单击目标日志模板所在行,进入模板详情页面。
-
在日志样例页签下,可查看该模板对应的部分原始日志(最多显示50条)。
-
如需查看所有匹配该模板的日志,请执行以下操作:
-
单击右上角的显示解析规则,获取该模板对应的正则表达式。
-
复制该正则表达式。
-
前往查询分析页面,使用
regexp_like算子执行查询。示例:
* | SELECT * FROM log WHERE regexp_like(Content, '正则表达式') -
最佳实践
快速定位异常日志
-
使用查询语句过滤正常日志。例如:
* and not LEVEL: INFO。 -
查看剩余日志的聚类结果,关注数量异常或新出现的日志模式。
-
单击可疑模板查看日志样例和变量分布,进一步分析。
版本发布对比
-
将当前时间范围设置为发布后的时间段。
-
配置对比时间为发布前的时间段。
-
查看对比结果,关注新出现或消失的日志模式。
-
检查变量分布变化,判断是否存在异常。
分模块分析
-
配置聚合字段为模块标识字段(如
Component、ServiceName)。 -
查看各模块的聚类结果,快速定位问题模块。
新旧版本日志聚类对比与选型建议
为帮助您做出正确的技术选型,下表对比了新版与旧版日志聚类的核心差异。
|
特性 |
新版日志聚类 |
旧版日志聚类 |
|
索引流量 |
无额外索引流量(仅依赖字段索引) |
会产生额外索引流量 |
|
处理效率 |
实时计算,大数据量时采样分析 |
处理效率较高,适合大数据量 |
|
算法准确率 |
使用更高准确度的算法 |
算法准确率相对较低 |
|
变量分布 |
支持日志模式中的变量分布分析 |
不支持 |
|
原始日志反查 |
通过 |
原生支持直接反查 |
|
多字段聚类 |
仅支持单字段聚类 |
支持多字段同时聚类 |
|
分组聚类 |
支持 |
不支持 |
|
仪表盘集成 |
暂不支持 |
支持 |
|
聚类精度调节 |
不支持 |
支持 |
选型结论:
-
新版日志聚类:适用于日志量相对较小或经过过滤后的日志,需要精细化分析(变量分布、对比分析)的场景。
-
旧版日志聚类:适用于海量日志的快速聚类,需要在仪表盘中展示聚类结果的场景。
常见问题
为什么聚类结果为空?
可能原因及解决方法:
-
所选字段无数据:检查聚类字段是否有数据,或调整时间范围。
-
查询语句过滤了所有日志:检查查询语句是否正确。
-
字段未开启索引:确保聚类字段已配置索引。
日志模板中的变量识别不准确怎么办?
新版日志聚类使用智能算法自动识别变量。如果识别不准确,可能是由于:
-
日志格式不规范,常量部分和变量部分区分不明显。
-
日志样本量不足,建议扩大时间范围或减少过滤条件。
如何查看某个日志类别的全部日志?
-
进入日志模板详情页面。
-
单击显示解析规则,复制正则表达式。
-
在日志查询页面,使用
regexp_like算子过滤:
* | SELECT * FROM log WHERE regexp_like(Content, '复制的正则表达式')
对比分析时,为什么部分日志模式只在一个时间段出现?
这通常表示:
-
实验组独有:可能是新出现的日志,需关注是否为异常。
-
对比组独有:可能是已修复的问题或功能变更导致的日志消失。
建议结合业务上下文分析,判断是否需要进一步排查。