帮你快速理解、总结文档立即下载

定时 SQL 可观测

最近更新时间:2026-09-10 17:56:02
我的收藏

概述

定时 SQL 可观测是 CLS 为定时 SQL 分析任务提供的运行时观测能力。定时 SQL 任务按调度周期读取源日志主题、执行 SQL 分析、将结果写入目标日志主题,在此过程中会按单次查询(进程)粒度持续上报调度延时、执行耗时、输入/输出行数、执行结果状态等运行数据这些运行数据以服务日志的形式存储到 CLS 内置的服务日志主题(cls_service_log),可通过日志检索、SQL 分析、告警策略实时观测每一个定时 SQL 任务的运行状态。
说明:
定时 SQL 暂无预置仪表盘。日常观测可直接使用任务详情页的 任务监控;如需自定义观测视图,可基于服务日志字段(cls_module = ssql)在仪表盘编辑页自行创建图表。

前提条件与默认配置

定时 SQL 任务已开启服务日志开关:服务日志开关默认开启,在新建定时 SQL 任务的页面可查看和调整该开关。

使用场景

分析数据观测

通过 ssql_sql_input_linessql_sql_output_linessql_success_linessql_failed_line 观察每次调度的输入行数、输出行数,以及写入目标日志主题的成功 / 失败行数,判断分析结果是否正常写出。

调度延时观测

通过 ssql_process_delay_time(单位 ms)观察每次查询从预期调度时间到实际开始执行的延时。调度延时持续升高通常意味着:
调度周期设置过密,任务排队。
单次执行耗时过长,占用了下一周期的调度窗口。

执行耗时观测

通过 ssql_process_duration(单位 ms)观察单次查询的执行总耗时(分析结果写入目标主题时间 − 分析开始时间)。执行耗时持续升高通常意味着:
SQL 复杂度过高或扫描数据量增大。
源主题瞬时流量激增。

执行结果与失败定位

通过 ssql_process_return_code0 代表成功,其它代表失败)观察每次查询的执行结果;失败时结合 ssql_err_type(失败类型)与 ssql_err_detail_msg(失败详情)定位原因。常见失败类型如下:
SyntaxError:语法错误,一般由于索引变更引发的 SQL 语句失败。
QueryTimeout:查询超时。
QueryReachLimit:查询超出产品规格(即并发超限)。
InternalError:内部错误。

异常告警与故障感知

基于服务日志字段配置日志告警策略,实现实时故障感知。建议重点关注的告警项包括:
写目标主题失败行数(ssql_failed_line > 0
执行失败(ssql_process_return_code != 0
调度延时超阈值(ssql_process_delay_time 超过业务容忍值)
执行耗时超阈值(ssql_process_duration 超过业务容忍值)
输入量持续为 0(ssql_sql_input_line = 0 持续多个周期)

任务监控页

定时 SQL 暂无预置仪表盘,运行观测通过任务详情页的任务监控标签页查看。

查看步骤

2. 在左侧导航栏中,选择数据处理 > 定时 SQL 分析,进入定时 SQL 任务列表。
3. 单击目标任务名称进入任务详情,切换到任务监控标签页。
4. 通过顶部时间选择器(如「近 1 小时」)与刷新按钮调整观测范围。
5. 查看任务运行情况,包括处理日志量、SQL 分析耗时、SQL 分析调度延时、SQL 分析结果分布等。

任务监控关键图表说明

图表名称
数据来源字段
图表形式
用途
处理日志量(行)
ssql_sql_input_linessql_sql_output_linessql_failed_linessql_success_line
时间序列(多曲线:输入行数 / 输出行数 / 写目标主题失败行数 / 写目标主题成功行数)
观察每次调度的输入、输出及写入成功 / 失败行数的整体量级与趋势
SQL 分析耗时(分析结果写入目标主题时间 − 分析开始时间)
ssql_process_duration
时间序列(毫秒级粒度)
观察单次查询的执行总耗时波动
SQL 分析调度延时
ssql_process_delay_time
时间序列(毫秒级粒度)
观察每次查询从预期调度到实际执行的延时波动
SQL 分析结果
ssql_process_return_codessql_err_type
时间序列(按结果分类:成功 / 语法错误 / 查询超时 / 查询超出规格(并发超限)/ 内部错误)
按执行结果分类统计每次查询的成功与失败分布,快速识别失败类型

服务日志字段说明

定时 SQL 模块对应的公共字段 cls_module = ssql。完整字段说明如下:
字段名
示例值
描述
ssql_task_id
XXXXX-...
定时 SQL 分析任务 ID
ssql_src_topic_id
XXXXX-a987-466f-a50e-fca2190d0cfc
源日志主题 ID
ssql_dst_topic_id
XXXXX-8b75-4f1c-9edc-db9ab1a73dcc
目标日志主题 ID
ssql_region
ap-guangzhou
任务所在的地域
ssql_sql_input_line
100
定时 SQL 分析任务的输入行数
ssql_sql_output_line
10
定时 SQL 分析任务的输出行数
ssql_failed_line
0
写目标主题失败行数
ssql_success_line
10
写目标主题成功行数
ssql_query_window_start_time
2024/11/6 15:55:00
单次查询数据范围:开始时间
ssql_query_window_end_time
2024/11/6 15:56:00
单次查询数据范围:结束时间
ssql_process_id
XXXXX-80c7-4fa5-b4aa-6b6b420056c6
单次查询的进程实例 ID
ssql_process_start_time
2024/11/6 15:57:00
单次查询的开始执行时间
ssql_process_end_time
2024/11/6 15:57:00
单次查询的执行完成时间
ssql_process_delay_time
39
单次查询的调度延时,单位 ms
ssql_process_duration
287
单次查询的执行总耗时,单位 ms
ssql_process_return_code
0
单次查询的执行结果状态码,0 代表成功,其它代表失败
ssql_err_detail_msg
SyntaxError
单次查询执行失败详情
ssql_err_type
SyntaxError
单次查询的失败类型:
SyntaxError:语法错误,一般由于索引变更引发的 SQL 语句失败。
QueryTimeout:查询超时。
QueryReachLimit:查询超出产品规格,即并发超限。
InternalError:内部错误。

常用 SQL 查询示例

以下 SQL 示例均需在服务日志主题 cls_service_log 中查询,并附加 cls_module: ssql 过滤条件。

示例1:每小时分析输入 / 输出总量

cls_module:"ssql" AND ssql_task_id: 您的任务ID | select histogram(__TIMESTAMP__,interval 60 minute) as time,
sum(ssql_sql_input_line) AS input_line,
sum(ssql_sql_output_line) AS output_line
group by time
order by time

示例2:失败行数 Top N 定时 SQL 任务

* | select ssql_task_id,
sum(ssql_failed_line) AS failed_total
group by ssql_task_id
order by failed_total desc
limit 10