帕夫洛·戈卢布:用于 pg_timetable 计划任务的 Grafana 仪表盘

帕夫洛·戈卢布:用于 pg_timetable 计划任务的 Grafana 仪表盘

💡 原文英文,约900词,阅读约需4分钟。
📝

内容提要

这篇文章介绍了一个更新的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)。

🏷️

标签

➡️

继续阅读