数据探索是 Castrel 的核心能力之一,帮助团队在接入新数据源后快速理解数据结构、发现可查询的 IT 资源和监控实体,并构建可复用的查询知识。无论你是在接入新的日志系统,还是需要梳理现有指标数据的结构,Castrel 都能高效帮你完成数据治理工作。
数据探索是一套由 AI 驱动的数据发现与治理系统。它会自动识别可观测性数据中的关键实体,建立实体之间的关系,并生成可复用的查询模板。当你接入新的数据源(例如 Elasticsearch、Prometheus、Loki 等)后,Castrel 会自动扫描数据结构,识别服务、实例、基础设施等实体,并把结果持久化为知识。
与传统的手动数据梳理方式不同,数据探索可以:
1. 启动探索
你可以通过以下方式发起数据探索:
配置完成后,开始聊天即可启动探索过程。
2. 查看探索报告
探索完成后,Castrel 会生成一份详细报告,包含:
| 内容 | 说明 |
|---|---|
| 探索概览 | 数据源信息、数据类型、确认的数据集合和时间戳字段 |
| 实体发现 | 识别出的服务、service_entities、infra_entities 及其关系 |
| 可复用查询模板 | 3 到 5 个可直接使用的查询模板,附带用途和参数说明 |
| 字段字典 | 关键字段路径、类型、含义以及常见值示例 |
3. 持久化为知识
探索结果会自动保存为知识,供后续事故调查、告警分诊等场景使用。你也可以在 知识库 中查看和编辑这些知识。
数据探索会识别三类实体:
| 实体类型 | 说明 | 常见字段示例 |
|---|---|---|
| service | 逻辑服务或应用的稳定标识,基数适中,易于理解 | service.name、service、app |
| service_entity | 服务实例,基数更高,可映射回 service | k8s.pod.name、container.id、instance、process.pid |
| infra_entity | 承载服务的基础设施资源 | host.name、node.name、ip、k8s.cluster.name |
Castrel 会通过以下方法建立实体间关系:
为了保证发现结果准确、可验证,Castrel 在数据探索中遵循以下原则:
| 原则 | 说明 |
|---|---|
| 先全局后局部 | 先了解数据集合整体结构,再深入到字段与实体识别 |
| 先验证再扩展 | 先用小时间窗和低返回量做验证,确认后再扩大范围 |
| 优先聚合 | 尽量通过聚合统计识别实体分布,避免全量拉取数据带来性能问题 |
| 证据驱动 | 所有结论都必须有查询结果支撑,不允许猜测 |
数据集合发现 → 字段结构分析 → 样本获取 → 聚合统计 → 关系验证 → 模板持久化
下面是一份典型的数据探索报告结构:
logs-*@timestamp(类型:date,格式:ISO8601)服务
service.nameorder-service、payment-service、inventory-service 以及另外 12 个服务服务实体
kubernetes.pod.nameservice.name 字段关联到对应服务service.name 和 kubernetes.pod.name 在同一条日志中共现基础设施实体
kubernetes.node.namekubernetes.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(时间范围)| 建议 | 说明 |
|---|---|
| 确保数据源连接健康 | 在探索前先检查连接状态,确保权限足以读取结构和样本数据 |
| 选择合适的时间范围 | 默认最近三天通常已经足够;如果数据量较小,可以适当扩大时间范围 |
| 指定目标应用 | 如果数据源中包含多个应用的数据,指定目标应用可以提升探索效率与准确率 |
| 复核并补充知识 | 探索结果会保存为知识,建议你进一步补充业务上下文 |