Elasticsearch 9.3.0 日志分类功能完整指南

Elasticsearch 9.3.0 日志分类

(适配 Serverless & Stack 部署模式)

一、功能概述

应用日志事件通常是非结构化的,且包含大量可变数据(如时间戳、请求ID、IP地址等)。但多数日志消息的核心模式是相同或高度相似的,通过日志分类可将数百万条日志精简为少数类别,大幅提升问题排查效率。

日志分类的核心入口是「Categories(分类)」页面,它无需人工手动识别相似日志,而是基于日志消息的格式和静态内容自动分组,帮助你快速采取行动。

二、核心概念补充:Serverless vs Stack 部署

原文提到的两种部署模式,在 ES 9.3.0 中对日志分类功能的支持略有差异:

  • Serverless(无服务器模式):由 Elastic 完全托管的弹性部署,资源按需伸缩,日志分类功能默认启用,无需手动配置 ML 节点;

  • Stack(标准部署模式) :包括自托管集群或 Elastic Cloud 标准部署,需确保集群中有至少一个 ML 节点(Machine Learning 节点),且需手动配置权限后使用。

三、权限与安全深度说明

3.1 所需权限

日志分类依赖机器学习异常检测作业,因此需在 Kibana 中配置以下权限:

  • 必须权限 :拥有 Kibana 「Machine Learning」功能的 所有特性权限 (Feature Privileges),包括 create_jobview_jobstart_stop_job 等;

  • 空间级权限 :在 Kibana 空间(Space)内拥有机器学习功能「完全访问」或「只读访问」权限的用户,可查看该空间内所有可见的异常检测作业结果------即使他们没有源索引的访问权限

3.2 安全注意事项

异常检测作业的结果可能会从源索引中传播包含敏感信息的字段值(如用户ID、内部IP、业务参数等)到结果页面。因此:

  • 需严格控制机器学习功能的访问权限;

  • 建议对包含敏感信息的索引配置「字段级安全」(Field-level Security),限制敏感字段进入 ML 作业。

四、创建日志分类 ML 作业(ES 9.3.0 详细步骤)

4.1 作业原理

ML 作业的核心逻辑是:

  1. 提取静态部分 :识别日志消息中的固定文本(如错误模板 Failed to process request),将可变部分(如 request_id: 123)标记为占位符;

  2. 聚类相似消息:基于静态部分的相似度将日志聚类;

  3. 生成类别 :为每个聚类生成类别名称(保留静态部分,可变部分用 {} 占位);

  4. 异常检测:实时监控每个类别的消息计数,检测异常突增。

4.2 step-by-step 操作步骤

  1. 打开 Categories 页面

    • 方式1:在 Kibana 顶部全局搜索框输入 Logs / Categories,直接进入;

    • 方式2:通过导航路径 Observability > Logs > Categories 进入。

  2. 确认启用 ML 分类

首次进入时会弹出提示框,点击「Use machine learning」确认创建日志速率分类作业。

  1. 选择分析时间范围

    • 默认配置:分析过去4周 的日志,且作业持续无限期运行(实时分析新日志);

    • 自定义配置:可点击时间选择器,指定特定的开始/结束时间(如仅分析过去1天的日志),或关闭「Indefinite」选项设置作业停止时间。

  2. 添加目标日志索引

    • 默认配置:ML 作业会分析所有匹配 logs sources 高级设置中索引模式的日志索引;

    • 自定义索引:

      1. 点击「Add indices」下拉框,手动选择要分析的索引(如 logs-elastic.agent-*);

      2. 若需修改默认索引模式,打开「Advanced Settings」:

        • 全局搜索 Advanced Settings,或导航到 Stack Management > Kibana > Advanced Settings

        • 搜索 xpack.logsUi.logSources,修改默认的索引模式列表(如添加 custom-logs-*)。

  3. 创建并运行作业

点击「Create ML job」按钮,系统会自动创建并启动作业。

  • 注意:作业启动后需等待2-5分钟(取决于日志量)让 ML 模型收集并分析数据,期间可在「Machine Learning > Anomaly Detection」页面查看作业状态。

五、结果保留配置(ES 9.2+ 专属)

5.1 默认配置

日志分类 ML 作业的结果默认保留 120天,到期后自动清理。

5.2 自定义保留期

可通过两种方式修改 results_retention_days 配置:

  • 方式1:Kibana ML 界面

    1. 进入 Machine Learning > Anomaly Detection,找到日志分类作业(作业名通常以 logs-ui-categorization- 开头);

    2. 点击作业右侧的「Edit」,在「Results retention」字段修改天数,保存后生效。

  • 方式2:ES API(推荐)

发送以下请求(替换 <job_id> 为你的作业ID):

HTTP 复制代码
POST _ml/anomaly_detectors/<job_id>/_update
{
  "results_retention_days": 30
}

六、分析日志分类结果

6.1 页面基础功能

  • 可通过顶部「Indices」下拉框筛选特定索引的分类结果;

  • 支持按「message count」「maximum anomaly score」排序。

6.2 类别行字段详解

字段名 详细说明
message count 该类别下的日志总条数,可快速识别高频问题(如 count 最高的类别通常是核心错误)。
trend 趋势柱状图,显示该类别日志随时间的数量变化------若突然出现峰值,可能表示问题爆发。
category name 从日志文本生成的类别名,静态部分保留,可变部分用 {} 占位(如 Connection refused to {host}:{port}),可直接看出问题类型。
datasets 该类别出现的数据集名称(对应 Elastic Agent 的 data_stream.dataset 字段),帮助定位问题来源模块。
maximum anomaly score 最高异常分数(范围0-100): - 0-50:正常波动; - 50-75:中等异常; - >75:高异常(需重点关注)。

6.3 深入分析操作

  • 查看示例日志:点击类别行末尾的箭头,展开查看该类别的1条示例日志;

  • View in Discover:跳转到 Discover 页面,可查看该类别的所有日志,并进行过滤、聚合分析;

  • View in context:查看某条示例日志的「上下文日志」(即该日志前后10条日志),帮助还原问题发生的完整链路。

七、ES 9.3.0 优化建议

  1. 作业资源优化:创建作业前先清理无关索引,避免分析过期日志,减少 ML 节点资源消耗;

  2. 异常监控配置:为高异常分数(>75)的类别配置「告警规则」(通过 Kibana Alerting),及时收到问题通知;

  3. 分类结果复用:可将类别名称作为新字段添加到日志中(通过 Ingest Pipeline),用于后续的 Dashboard 可视化;

  4. 定期清理作业:若不再需要实时分析,可停止 ML 作业,释放资源。

相关推荐
是做服装的同学2 小时前
服装企业生产管理ERP系统的主要功能是什么?
大数据·经验分享·其他
Elastic 中国社区官方博客2 小时前
Elasticsearch:创建 tavily 网页搜索 workflow 及在 agent 中使用它
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
Hello.Reader2 小时前
Flink 日志怎么用从“找得到”到“看得懂”,再到“可检索可关联”
大数据·flink
产品经理邹继强2 小时前
VTC财务与投资篇③:投资决策重构——用VTC穿透财务预测的迷雾
大数据·人工智能·重构
岁岁种桃花儿2 小时前
Flink从入门到上天系列第六篇:Flink运行时架构
大数据·flink
byte轻骑兵2 小时前
大数据场景时序数据库选型指南——Apache IoTDB实践与解析
大数据·数据库·apache·时序数据库·iotdb
海兰2 小时前
ES 9.3.0 日志模式分析
java·大数据·elasticsearch
Faker66363aaa2 小时前
基于Faster-RCNN_C4的绝缘子缺陷检测与分类实现
人工智能·分类·数据挖掘
Beyond欣2 小时前
Git 配置与工具
大数据·git·elasticsearch