技术分享
Kimi技能合集
开源推荐
自由互联网
一款任务执行监控系统,简单、高效、无侵入,Star 7.3K+!
type
status
date
May 11, 2024 03:38 AM
category
tags
summary
slug
password
URL
icon
在日常运维管理中,定时任务是最常见也是使用最多的运维手段之一。Linux下提供了【Cron】定时任务管理,Windows提供了【任务计划】定时任务管理,kubernetes提供了【CronJob】定时任务管理。以Linux为例,/etc/crontab 配置文件大家应该都熟悉:
通过定时任务的配置和运行,我们可以实现定时数据备份,定时性能收集,定时对时,定时数据上报等运维任务,比如下面:
但是,很多时候我们忽略了定时任务本身的规范性管理和定时任务有效性管理。比如运行了多少个定时任务?比如定时任务昨天凌晨运行成功还是失败?这些情况很多时候需要我们在运行定时任务的服务器上查看日志才能判断,所以关于定时任务在日常管理中我们常常会遇到以下两个问题:
- 如何统一管理和监控多台服务器上的定时任务的运行情况;
- 大量定时任务执行结果如何查看执行情况。
所以今天给大家推荐一款定时任务管理、监控系统-Healthchecks
01
—
Healthchecks 介绍
一句话介绍Healthchecks:一款简单高效的任务执行监控系统。非常适合 Cron 任务或者类似 Cron 的系统(比如Jenkins 定时构建、K8S CronJob等),对现有任务设置无侵入,当任务未执行时,Healthchecks 会记录执行情况,并且发出多种告警通知。

🏠 项目信息

🚀功能特性
- Healthchecks 会为后台运行的任务生成唯一的通知URL。
- 每次任务运行时会向 Healthchecks 发出通知的 HTTP 请求。
- 任务未按时通知 Healthchecks 时,Healthchecks 会发出告警通知,并记录所有执行事件详细情况。
02
—
Healthchecks 安装
一、Docker 安装
二、Docker-Compose 安装
三、运行检查
通过 docker logs -f healthchecks 检查服务是否启动,正常日志如下:
三、创建管理用户
通过以下命令创建管理员用户:
按照提示设置邮箱和密码:
三、访问界面
打开浏览器 http://xxx.xxx.xxx.xxx:8000,在右边填入上一步骤我们设置的登录信息(左边是SaaS注册,不用管):

03
—
Healthchecks 使用
一、创建检测

- **名称:**按照实际任务命名填写。
- **Slug :**基于 slug 的通知 URL中使用的 URL 标识符 (默认的基于 UUID 的 URL 替代方案)。slug 应仅包含以下字符:a-z、0-9、连字符和下划线。如果不使用基于 slug 的
URL,则可以将 slug 字段留空。
- **Tags:**以空格分隔的可选标签列表。使用标签对任务进行分组管理。可以按环境(prod、staging、dev等)、按角色(www、db、worker等)或使用任何其他标签标记检查。
- **描述:**描述 cron 作业的详细信息。
二、设置计划任务时间
Healthchecks支持三种类型的计划:Simple、Cron和OnCalendar。
- **简单计划(Simple):**简单计划以相对固定的时间间隔运行的进程:比如每小时一次、每天一次、每周一次等。

对于简单计划,可以配置两个参数:周期和宽限时间。
- 周期是 ping 之间的预期时间。
- 宽限时间是在检查延迟时发送告警之前等待的额外时间。使用此参数可以考虑执行时间中的时间偏差。
- Cron 时间表:使用“Cron”来监控作业和其他更复杂的任务,确保作业在正确的时间运行,而不仅仅是在正确的时间间隔运行。

需要指定 Cron 表达式、服务器时区和宽限时间。
- Cron Expression是在 crontab 中指定的 cron 表达式。
- 服务器时区是服务器的时区。cron 守护进程通常使用系统的本地时间。如果服务器不使用 UTC 时区,请在此处指定其时区。
- 宽限时间,与简单计划相同,是在发送延迟检查警报之前等待的时间。

三、过滤规则(可选)
通过“过滤规则”,可以以控制 Healthchecks 处理需要过滤的信息。

- HTTP 请求允许的请求方法。可以要求 ping 请求使用 HTTP POST。比如在通过电子邮件发送或在聊天中发布机器人 ping URL 时遇问题,可使用“仅 POST”选项。
- 按主题行中的关键字进行过滤。通过电子邮件 ping 时,可以指示 Healthchecks 在主题行中查找特定关键字。比如主题行包含“开始关键字”、 “成功关键字”或“失败关键字”中列出的任何关键字,Healthchecks会将电子邮件分别分类为开始、成功或失败。
- 按邮件正文中的关键字进行过滤。与主题关键字选项相同,但在电子邮件正文中查找关键字。Healthchecks 检查电子邮件的纯文本和 HTML 部分中的关键字。
- 对暂停的任务检查执行 Ping 操作。通常,当 ping 暂停检查时,会变成离开暂停状态并进入“向上”状态(如果出现故障,则进入“向下”状态)。可以通过选择“忽略 ping,保持暂停状态”选项来更改。选择此选项后,暂停状态将变为“粘性”:Healthchecks 将忽略所有传入的 ping,直到明确恢复检查为止。
四、配置通知
默认开启了邮件通知,如下:

可以按照需要添加其他的通知,比如如下图,添加企业微信机器人的 webhook 通知:

监控页面中可以针对不同的任务,直接选择开启还是关闭告警通知:

三、任务监控测试
至此,界面任务监控配置基本完成,可以测试下 Healthchecks 到任务检测,项目提供了多种测试方法,如下截图:

- Cron 命令测试如下:
- Shell 命令测试如下:
- python 脚本测试如下:
上述检命令或者脚本一旦运行后,会主动的给Healthchecks发送信息,Healthchecks收到信息后会显示如下:

如果超过了定时(宽限时间)没有收到任务发送的信息,那么Healthchecks就会发送告警事件(比如配置了微信通知):


可以在详情界面查询详细的事件日志:

04
—
最后
通过 Healthchecks 可以帮运维人员管理和监控每个定时作执行情况。Healthchecks 支持设置监控周期和宽限时间,以匹配任务的定时执行情况。 Healthchecks 是一个轻量级任务监控系统,对现有的定时任务管理和执行是无侵入的,只需要加上调用的URL即可快速接入,如果大家感兴趣的话,那么不防试试五一假期最后一天,收拾好心情,上班了
Last update: