内容提要
这篇文章介绍了一个更新的pg_timetable预定任务监控仪表盘,包括客户端名称、调度器数量、链路数、任务执行次数、错误次数和平均任务持续时间等信息。提供了查询语句和图表展示,并鼓励读者为pg_timetable项目做出贡献。
延伸解读
仪表盘的核心监控维度
该仪表盘围绕 pg_timetable 的调度执行提供了多个关键面板:客户端名称过滤、运行中的调度器数量、总链与启用链对比、任务执行总数、任务错误数以及平均任务持续时间。这些指标分别从实例状态、作业定义和实际执行结果三个层面反映系统运行情况,帮助运维人员快速定位异常。
错误统计的注意事项
总任务错误面板统计的是 returncode 非零且 ignore_error 不为 true 的任务。这意味着被标记为忽略错误的失败任务不会计入错误总数,但会在图表中以蓝色线单独展示。因此,在设置告警阈值时,需要明确区分“静默错误”和“真实错误”,避免误判系统健康状态。
图表中的时间与粒度解读
任务执行图表以每分钟为心跳单位展示执行总数与错误数。从示例可见,系统在 11:23 之前无数据,可能是日志截断或初始化导致;随后每分钟约 500 次执行,其中近半为忽略错误。由于比例尺限制,少量非忽略错误在图中可能不明显,需结合错误面板或下钻网格确认。
直接查询与自定义分析
文章为每个面板提供了对应的 SQL 查询,方便在 Grafana 之外进行验证或深度分析。例如,通过 date_trunc 按分钟聚合 execution_log,可以分别统计总执行、非忽略错误和忽略错误。这种灵活性允许用户根据自身需求调整时间范围或客户端过滤条件,而不局限于预设面板。
Q&A
pg_timetable 的 Grafana 仪表盘主要用来监控什么?
该仪表盘用于监控 pg_timetable 的预定任务,提供客户端名称、调度器数量、链路数、任务执行次数、错误次数和平均任务持续时间等信息。
如何查看当前有多少个 pg_timetable 实例正在运行?
可以通过“Schedulers running”面板实时查看,或者执行 SQL 查询:SELECT count(DISTINCT client_name) from timetable.active_session。
仪表盘中的“Total chains”和“Enabled chains”有什么区别?
“Total chains”显示系统中所有链定义的数量,包括暂停的链;而“Enabled chains”显示客户端可以执行的作业数量,即非暂停的链。
如何统计指定客户端在特定时间段内执行的任务总数?
可以使用“Total task executions”面板,或执行 SQL:SELECT count(*) FROM timetable.execution_log WHERE last_run BETWEEN '开始时间' AND '结束时间' AND client_name in ('客户端1','客户端2')。
仪表盘如何展示任务错误?有哪些注意事项?
“Total task errors”面板显示失败任务数,但不包括 ignore_error 为 true 的任务。默认阈值:0 错误为绿色,1-10 为橙色,超过 10 为红色。
如何计算成功任务的平均持续时间?
“Average task duration”面板显示成功任务的平均持续时间,可通过 SQL 查询:SELECT avg(finished - last_run) FROM timetable.execution_log WHERE last_run BETWEEN '开始时间' AND '结束时间' AND returncode = 0 AND client_name in ('客户端1','客户端2')。
如何为 pg_timetable 项目做贡献?
可以为项目加星(⭐)、提出问题(🤚issue)或提交拉取请求(📜pull request)。