SuperAPI AI 工具集

signoz-writing-clickhouse-queries

数据与分析

查看项目

更新于 10-15 17:06

技能介绍

该技能用于为 SigNoz 仪表盘面板编写原生 ClickHouse SQL。当用户请求涉及日志、追踪或仪表盘面板(时序图、数值组件、表格分解)等查询时使用;即使未提及 ClickHouse,只要涉及仪表盘面板也应使用。

用途

适用于构建器界面无法表达的查询需求,例如自定义 join、窗口函数等,覆盖日志与追踪两类信号以及 timeseries、value、table 三种面板类型。

信号识别

日志信号包括日志行、严重级别、正文文本、日志量、容器日志、结构化日志字段等。追踪信号包括 span、延迟、持续时间、p99、追踪分析、HTTP 操作、数据库操作、错误 span 等。若请求不明确,应要求用户澄清。

参考路由

日志查询前先阅读 references/clickhouse-logs-reference.md;追踪查询前先阅读 references/clickhouse-traces-reference.md。每份参考涵盖表结构、优化模式、属性访问语法、仪表盘模板、查询示例与校验清单。

快速参考

timeseries 面板返回 (ts, value) 行以绘制随时间变化的图表;value 面板返回单个数值用于统计或计数器组件;table 面板返回带标签的列用于分组分解。

关键变量

日志:时间戳类型为 UInt64(纳秒);时间过滤使用 $start_timestamp_nano 与 $end_timestamp_nano;时间桶过滤使用 $start_timestamp 与 $end_timestamp;显示转换使用 fromUnixTimestamp64Nano(timestamp);主表为 signoz_logs.distributed_logs_v2,资源表为 signoz_logs.distributed_logs_v2_resource。

追踪:时间戳类型为 DateTime64(9);时间过滤使用 $start_datetime 与 $end_datetime;时间桶过滤使用 $start_timestamp 与 $end_timestamp;显示转换直接使用时间戳;主表为 signoz_traces.distributed_signoz_index_v3,资源表为 signoz_traces.distributed_traces_v3_resource。

主要反模式

缺少 ts_bucket_start BETWEEN $start_timestamp - 1800 AND $end_timestamp;对读取分布式表的子查询使用普通 IN/JOIN,在 distributed_product_mode='deny' 下会失败,应优先使用带时间边界的 fingerprint GLOBAL IN 模式或本地子查询表,仅在右侧数据集明确且有限时使用 GLOBAL JOIN,因为它会把该数据集广播到每个分片;没有资源属性过滤时仍添加资源 CTE;GROUP BY 遗漏非聚合投影,包括 JSONExtractString(body, ...) 等计算投影;日志查询使用 $start_datetime 或 $end_datetime;追踪查询使用 $start_timestamp_nano 或 $end_timestamp_nano;日志查询针对 signoz_logs.logs、裸 logs 或 distributed_logs,应始终使用 signoz_logs.distributed_logs_v2;追踪查询使用 resources_string['service.name'] 而非 resource_string_service$$name。

查询归属

每条生成的查询末尾必须包含用于监控的 SETTINGS 子句:

SELECT ... FROM ... WHERE ... SETTINGS log_comment = 'signoz-writing-clickhouse-queries skill | YYYY-MM-DD'

将 YYYY-MM-DD 替换为当天日期。若查询已有 SETTINGS 子句,则以逗号追加 log_comment。

工作流程

识别信号为日志或追踪;编写查询前阅读对应参考文件;选择面板类型(timeseries、value 或 table);使用参考中的必需模式构建查询;追加 SETTINGS log_comment 归属子句;使用参考中的清单校验结果。

限制

资料未提供具体定价、安装命令、支持平台及实际使用效果等信息。