日志服务 定时 SQL 可观测

定时 SQL 可观测是 CLS 为定时 SQL 分析任务提供的运行时观测能力。定时 SQL 任务按调度周期读取源日志主题、执行 SQL 分析、将结果写入目标日志主题,在此过程中会按单次查询(进程)粒度持续上报调度延时、执行耗时、输入/输出行数、执行结果状态等运行数据。这些运行数据以服务日志的形式存储到 CLS 内置的服务日志主题(cls_service_log),可通过日志检索、SQL 分析、告警策略实时观测每一个定。

相关产品
日志服务 产品页,含版本规格、价格与购买入口。

一、概述

注意:说明:

注意:定时 SQL 暂无预置仪表盘。日常观测可直接使用任务详情页的 任务监控;如需自定义观测视图,可基于服务日志字段(cls_module = ssql)在仪表盘编辑页自行创建图表。

二、前提条件与默认配置

·已 创建定时 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_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

赞 (0)
上一篇 4天前
下一篇 4天前