SuperAPI AI 工具集

kubesense-sql

数据与分析

查看项目

更新于 10-16 06:22

技能介绍

用途:在 KubeSense 的日志(logs)与追踪(traces)数据上用原生 ClickHouse SQL 查询,适合 analyze-* 工具无法表达的查询形态,如 join、CTE 链、窗口函数、跨聚合算术、UNION、DISTINCT ON、argMax、quantileIf、单结果内比较两个时间段。依赖 KubeSense MCP 服务器完成连接与鉴权,并按传入的 signal 在日志或 traces 模块上解析 RBAC。

主要能力与工具:get-trace-or-log-fields 先获取当前时间窗的字段目录;validate-sql 在运行前校验,返回 valid=true/false 与实际会执行的 SQL(## rewritten_sql);execute-sql 返回 TSV 结果行。两者参数相同:signal("logs" 或 "traces")、query、from_time、to_time,可选 clusters。

使用方式:优先使用 analyze-logs / analyze-traces / search-* 处理过滤加聚合;仅当结果形态不匹配时才用 SQL。FROM 只可写 logs 或 traces,且须与 signal 一致,不接受数据库限定名。使用目录字段名(type 而非 level、instance 而非 pod_name、service 而非 app_service、domain 而非 customer_identifier);traces 用 duration_ms(毫秒)。支持宏 $__timeFilter(timestamp)、$__fromTime / $__toTime、$__clusters。字符串用单引号,自定义属性用 @ 前缀并需先转换类型比较。日志正文检索应使用 hasToken / hasAnyTokens / hasAllTokens 作用于 lower(body),或 lower(body) LIKE。

限制:只读执行,拒绝 INSERT / ALTER / DROP、多语句及外部访问函数;默认最多 1000 行;集群过滤在表扫描层强制应用,无法绕过。受限范围的 API key 或角色无法使用这两个工具,应改用 search-* / analyze-。属性键不被校验,拼错会返回 NULL(logs)或空串(traces)。logs 与 traces 是不同表,不能在一条语句中 join。正文裸过滤会全表扫描,应避免,且正文检索一次只运行一个。若发现已有 SELECT field, count() ... GROUP BY field 的写法,应改用 analyze-*。分类依据为对日志与追踪执行 SQL 查询,属数据与分析。