SuperAPI AI 工具集

observability-logs-search

部署与运维

查看项目

更新于 10-15 21:37

技能介绍

用途:该技能用于事件调查中的日志搜索与筛选,工作流类似 Kibana Discover——先限定时间范围与范围过滤,再迭代添加 NOT 排除条件,直到剩下少量值得关注的日志(根因或关键文档)。仅用于日志;指标与追踪应使用对应的专用工具。

主要能力:用 ES|QL(POST /_query,不使用 Query DSL)一次请求返回时间序列直方图、总数、少量日志样本和消息分类(常见与稀有模式)。通过 FORK 输出五个结果集:fork1 趋势(每时间桶计数)、fork2 总数、fork3 样本日志、fork4 前 20 常见消息模式、fork5 稀有模式。直方图用于判断尖峰或骤降并决定收窄时间范围;分类用于统计剩余模式数量并决定下一步排除项。

使用方式:参数使用 start、end(Elasticsearch 日期数学,如 now-1h)、kqlFilter、limit、groupBy 等一致命名。实体过滤使用 ECS 字段名,如 service.name、host.name、service.environment、kubernetes.pod.name、kubernetes.namespace;OpenTelemetry 别名在可观测性索引中自动映射。样本分支用 KEEP 只保留摘要字段(如 message、error.message、service.name、container.name、host.name、kubernetes.* 等),默认取 10–20 条,上限 500。消息回退顺序:body.text(OTel)、message、error.message、event.original、exception.message、error.exception.message、attributes.exception.message(OTel)。桶大小按时间范围取约 20–50 个桶(如 1h → 1m 或 2m)。JSON 请求体中需转义引号:KQL 外层用 ",KQL 表达式内部引号用 \"。

流程要点:必须迭代,不能在单次宽泛查询后停止;持续为高噪声模式添加 NOT,并始终保留此前全部排除条件,直到剩余日志模式少于 20 个;可对定位到的实体(container.id、host.name)做一次 pivot 查询,必要时查看上下文或换实体重新搜索。若提前停止,报告的是噪声而非实际故障。

限制与注意事项:log.level 常缺失或设置错误,仅作提示;不建议只按 “error”“fail” 等关键词全文搜索,会命中无害提及。中间结果仅用于决定下一次调用,最终收窄结果才应保留并总结。参考资料:references/log-search-reference.md 提供 ECS/OTel 字段映射与索引模式。