功能

数据探索

通过 AI 驱动的智能探索,自动发现并映射可观测性数据中的实体与关系。

数据探索是 Castrel 的核心能力之一,帮助团队在接入新数据源后快速理解数据结构、发现可查询的 IT 资源和监控实体,并构建可复用的查询知识。无论你是在接入新的日志系统,还是需要梳理现有指标数据的结构,Castrel 都能高效帮你完成数据治理工作。

什么是数据探索?

数据探索是一套由 AI 驱动的数据发现与治理系统。它会自动识别可观测性数据中的关键实体,建立实体之间的关系,并生成可复用的查询模板。当你接入新的数据源(例如 Elasticsearch、Prometheus、Loki 等)后,Castrel 会自动扫描数据结构,识别服务、实例、基础设施等实体,并把结果持久化为知识。

与传统的手动数据梳理方式不同,数据探索可以:

  • 自动发现实体:从海量数据中识别服务、实例、主机等关键实体
  • 建立关系:梳理实体之间的关联路径和查询方法
  • 生成查询模板:输出可直接复用的查询语句,降低后续使用门槛

如何使用数据探索

1. 启动探索

你可以通过以下方式发起数据探索:

  • 数据源接入后自动触发:完成数据源连接配置后,Castrel 会提示你开始数据探索
  • 手动触发:进入 Chat 页面,选择 Data Exploration 标签,再选择想要探索的连接器。你可以配置以下选项:
    • 保存探索结果:开启后,Castrel 会自动把发现的资源(服务、服务实例、基础设施实体等)提交到资源审核队列。你可以在界面中审核并批准,批准后的资源会提交到资源库中

配置完成后,开始聊天即可启动探索过程。

2. 查看探索报告

探索完成后,Castrel 会生成一份详细报告,包含:

内容说明
探索概览数据源信息、数据类型、确认的数据集合和时间戳字段
实体发现识别出的服务、service_entities、infra_entities 及其关系
可复用查询模板3 到 5 个可直接使用的查询模板,附带用途和参数说明
字段字典关键字段路径、类型、含义以及常见值示例

3. 持久化为知识

探索结果会自动保存为知识,供后续事故调查、告警分诊等场景使用。你也可以在 知识库 中查看和编辑这些知识。

核心概念

实体类型

数据探索会识别三类实体:

实体类型说明常见字段示例
service逻辑服务或应用的稳定标识,基数适中,易于理解service.nameserviceapp
service_entity服务实例,基数更高,可映射回 servicek8s.pod.namecontainer.idinstanceprocess.pid
infra_entity承载服务的基础设施资源host.namenode.nameipk8s.cluster.name

关系

Castrel 会通过以下方法建立实体间关系:

  • 同记录共现:在同一条日志或指标记录中共同出现的字段,天然具有相关性
  • 强共现聚合:通过聚合统计验证高置信度关联,例如 Pod 名与服务名之间的映射
  • 路由关系:基于服务调用链路识别上下游依赖关系

探索原则

为了保证发现结果准确、可验证,Castrel 在数据探索中遵循以下原则:

原则说明
先全局后局部先了解数据集合整体结构,再深入到字段与实体识别
先验证再扩展先用小时间窗和低返回量做验证,确认后再扩大范围
优先聚合尽量通过聚合统计识别实体分布,避免全量拉取数据带来性能问题
证据驱动所有结论都必须有查询结果支撑,不允许猜测

探索流程

数据集合发现 → 字段结构分析 → 样本获取 → 聚合统计 → 关系验证 → 模板持久化
  1. 发现数据集合:列出数据源中所有可用的数据集合(例如索引、表、日志流等)
  2. 分析字段结构:获取字段列表,确认时间戳字段和候选实体字段
  3. 获取样本:通过小样本验证字段是否存在、非空且稳定出现
  4. 聚合统计:按候选字段分组,判断其是否形成清晰的实体分布
  5. 验证关系:验证实体之间的关系,确保可以通过查询复现
  6. 持久化模板:生成可复用的查询模板,并附带关键参数说明

探索报告示例

下面是一份典型的数据探索报告结构:

探索概览

  • 数据源:Elasticsearch(production-logs)
  • 数据类型:日志
  • 目标应用:order-service
  • 数据集合logs-*
  • 时间戳字段@timestamp(类型:date,格式:ISO8601)

实体发现

服务

  • 识别字段:service.name
  • 发现实体:order-servicepayment-serviceinventory-service 以及另外 12 个服务
  • 证据:聚合统计显示服务分布清晰

服务实体

  • 识别字段:kubernetes.pod.name
  • 关系:可通过 service.name 字段关联到对应服务
  • 证据:service.namekubernetes.pod.name 在同一条日志中共现

基础设施实体

  • 识别字段:kubernetes.node.name
  • 发现实体:3 个 K8s 节点
  • 关系:可通过 kubernetes.pod.name 追溯到运行节点

可复用查询模板

1. 按服务查询错误日志

{
  "query": {
    "bool": {
      "must": [
        { "term": { "service.name": "${service_name}" } },
        { "term": { "log.level": "error" } },
        { "range": { "@timestamp": { "gte": "${start_time}", "lte": "${end_time}" } } }
      ]
    }
  },
  "size": 100
}
  • 用途:查询指定时间范围内某个服务的错误日志
  • 参数service_name(服务名)、start_time / end_time(时间范围)

提升效果的小建议

建议说明
确保数据源连接健康在探索前先检查连接状态,确保权限足以读取结构和样本数据
选择合适的时间范围默认最近三天通常已经足够;如果数据量较小,可以适当扩大时间范围
指定目标应用如果数据源中包含多个应用的数据,指定目标应用可以提升探索效率与准确率
复核并补充知识探索结果会保存为知识,建议你进一步补充业务上下文

常见问题