概述
定时 SQL 可观测是 CLS 为定时 SQL 分析任务提供的运行时观测能力。定时 SQL 任务按调度周期读取源日志主题、执行 SQL 分析、将结果写入目标日志主题,在此过程中会按单次查询(进程)粒度持续上报调度延时、执行耗时、输入/输出行数、执行结果状态等运行数据。这些运行数据以服务日志的形式存储到 CLS 内置的服务日志主题(
cls_service_log),可通过日志检索、SQL 分析、告警策略实时观测每一个定时 SQL 任务的运行状态。说明:
前提条件与默认配置
定时 SQL 任务已开启服务日志开关:服务日志开关默认开启,在新建定时 SQL 任务的页面可查看和调整该开关。
使用场景
分析数据观测
通过
ssql_sql_input_line、ssql_sql_output_line、ssql_success_line、ssql_failed_line 观察每次调度的输入行数、输出行数,以及写入目标日志主题的成功 / 失败行数,判断分析结果是否正常写出。调度延时观测
通过
ssql_process_delay_time(单位 ms)观察每次查询从预期调度时间到实际开始执行的延时。调度延时持续升高通常意味着:调度周期设置过密,任务排队。
单次执行耗时过长,占用了下一周期的调度窗口。
执行耗时观测
通过
ssql_process_duration(单位 ms)观察单次查询的执行总耗时(分析结果写入目标主题时间 − 分析开始时间)。执行耗时持续升高通常意味着:SQL 复杂度过高或扫描数据量增大。
源主题瞬时流量激增。
执行结果与失败定位
通过
ssql_process_return_code(0 代表成功,其它代表失败)观察每次查询的执行结果;失败时结合 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 暂无预置仪表盘,运行观测通过任务详情页的任务监控标签页查看。
查看步骤
1. 登录 日志服务控制台。
2. 在左侧导航栏中,选择数据处理 > 定时 SQL 分析,进入定时 SQL 任务列表。
3. 单击目标任务名称进入任务详情,切换到任务监控标签页。
4. 通过顶部时间选择器(如「近 1 小时」)与刷新按钮调整观测范围。
5. 查看任务运行情况,包括处理日志量、SQL 分析耗时、SQL 分析调度延时、SQL 分析结果分布等。
任务监控关键图表说明
图表名称 | 数据来源字段 | 图表形式 | 用途 |
处理日志量(行) | ssql_sql_input_line、ssql_sql_output_line、ssql_failed_line、ssql_success_line | 时间序列(多曲线:输入行数 / 输出行数 / 写目标主题失败行数 / 写目标主题成功行数) | 观察每次调度的输入、输出及写入成功 / 失败行数的整体量级与趋势 |
SQL 分析耗时(分析结果写入目标主题时间 − 分析开始时间) | ssql_process_duration | 时间序列(毫秒级粒度) | 观察单次查询的执行总耗时波动 |
SQL 分析调度延时 | ssql_process_delay_time | 时间序列(毫秒级粒度) | 观察每次查询从预期调度到实际执行的延时波动 |
SQL 分析结果 | ssql_process_return_code、ssql_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_linegroup by timeorder by time
示例2:失败行数 Top N 定时 SQL 任务
* | select ssql_task_id,sum(ssql_failed_line) AS failed_totalgroup by ssql_task_idorder by failed_total desclimit 10