该技能用于为 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 归属子句;使用参考中的清单校验结果。
限制
资料未提供具体定价、安装命令、支持平台及实际使用效果等信息。