0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Healthchecks:监控服务器Cron定时任务的神器

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-21 14:22 次阅读

在运维服务器的时候经常会用到一些Crontab任务。

当你的Crontab中的任务数超过10个的时候,你会发现这些任务管理起来非常困难。

尤其是当这些Cron任务执行失败的时候,比如 Python 实用宝典网 每个月初都会执行一次https证书刷新,有一次协议更新之后,我的脚本失效了三个月,导致证书过期时网站宕机了一天,直到我发现并修复了这个问题。

这就是Crontab任务的一个劣势:没有方便的回调功能。

不过,现在有一个非常方便的开源Django项目能在这些Crontab失效的时候通知你,它就是healthchecks.

图片

它通过一个回调接口判断你的Crontab任务有没有顺利执行。

比如说你有一个python脚本定时执行,healthchecks给定的回调URL是:

http://localhost:8000/ping/880cb4d

在配置Crontab脚本的时候,就需要这么写:

8 6 * * * python /home/user/test.py && curl -fsS -m 10 --retry 5 -o /dev/null http://localhost:8000/ping/880cb4d2

如果未按时调用回调接口,healthchecks将会通过邮件等通知方式告警。

那么这个“未按时”能否设定宽限呢?比如我有个任务要跑1个小时左右,那么这个任务应该是预计在一个半小时内调用(Ping)回调接口,超过一个半小时如果没有调用回调接口则告警。答案是肯定的。

图片

上图中Period指的是两次Ping之间的时间间隔。下方Grace表示“宽限期”,自从上次Ping以来的时间已超过Period+Grace则会发送告警通知。

如果你用不习惯这种可视化的选择器,它还提供了Crontab表达式给你定义Period和Grace:

图片

真乃神器啊!它支持的通知方式如下:

图片

国内用户可能一般只会用到Email和Teams,高级点的用户可能会用到IFTTT的Webhooks和普罗米修斯。总之,按你的爱好来就行。

下面教大家如何在本地搭建这个项目:

1. 下载项目

使用Git工具克隆该项目:

git clone https://github.com/healthchecks/healthchecks

如果你访问不了github,可在【Python 实用宝典】公众号后台回复 **healthchecks **下载完整源代码

2.创建虚拟环境

推荐使用Python 3.6+,如果你有conda,那就非常方便了,创建healthchecks虚拟环境:

conda create -n healthchecks python=3.6
activate healthchecks

如果你没有conda,你需要先安装Python3.6,然后使用pip安装virtualenv,在终端输入以下命令创建healthchecks虚拟环境:

python3 -m venv healthchecks
source healthchecks/bin/activate

不同系统中命令可能不太一样,遇到问题多利用搜索引擎查询就好了。

3.安装依赖

进入到上述创建好的虚拟环境后,cd进入项目根目录,输入以下命令安装依赖:

pip install -r requirements.txt

4.数据库配置(可选)

该项目默认使用SQLite,这意味着你不需要特殊配置也可照常运转。

如果你需要配置MySQL或PostgreSQL,请阅读 hc/local_settings.py.example 文件进行配置即可。

5.数据表迁移

Django项目当然少不了这个环节,虚拟环境下,在根目录里运行以下命令进行数据表的迁移:

python manage.py migrate

当然,还要创建超管用户:

python manage.py createsuperuser

6.运行项目

大功告成,输入以下命令即可运行项目:

python manage.py runserver

图片

点击右上角login in登录到超管用户就可以开始使用了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8444

    浏览量

    150706
  • 监控
    +关注

    关注

    6

    文章

    2161

    浏览量

    55034
  • 服务器
    +关注

    关注

    12

    文章

    8954

    浏览量

    85069
  • python
    +关注

    关注

    55

    文章

    4766

    浏览量

    84365
收藏 人收藏

    评论

    相关推荐

    基于crontab命令的Linux服务器定时任务执行步骤

    Linux服务器定时任务
    发表于 03-04 16:36

    Linux系统定时任务Crond

    会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务
    发表于 07-05 06:22

    busybox用crontab/crond在嵌入式系统中添加定时任务的方法

    busybox 用crontab、crond在嵌入式系统中添加定时任务:参考文档:在嵌入式系统中,定时任务通过crond和cronttab两个系统命令来联合执行。其中crond是定时任务的守护进程
    发表于 12-14 06:40

    Linux操作系统定时任务系统Cron入门分析

    分享到: cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个
    发表于 11-07 10:12 0次下载

    PHP简单实现不依赖于Unix系统Cron定时任务程序资料说明

    本文档的主要内容详细介绍的是PHP简单实现不依赖于Unix系统Cron定时任务程序资料说明。
    发表于 03-01 16:52 2次下载
    PHP简单实现不依赖于Unix系统<b class='flag-5'>Cron</b>的<b class='flag-5'>定时任务</b>程序资料说明

    linux定时任务如何判断文件差异?

    设计每10min执行任务检查/app/recode文件大小,该文件不会超过4MB,超过此大小则压缩处理,仅保留最近的日志内容。立马着手检查linux定时任务cron运行情况。 2. 初步排查 执
    的头像 发表于 03-17 10:05 1395次阅读

    Python定时任务的实现方式

    调度模块schedule实现定时任务 利用任务框架APScheduler实现定时任务 Job 作业 Trigger 触发 Executor 执行
    的头像 发表于 10-08 15:20 5546次阅读

    如何在SpringBoot项目中实现动态定时任务

    之前写过文章记录怎么在SpringBoot项目中简单使用定时任务,不过由于要借助cron表达式且都提前定义好放在配置文件里,不能在项目运行中动态修改任务执行时间,实在不太灵活。
    的头像 发表于 09-30 11:16 1765次阅读

    解析Golang定时任务库gron设计和原理

    正巧,最近看到了 gron 这个开源项目,它是用 Golang 实现一个并发安全的定时任务库。实现非常简单精巧,代码量也不多。今天我们就来一起结合源码看一下,怎样基于 Golang 的能力做出来一个【定时任务库】。
    的头像 发表于 12-15 13:57 1266次阅读

    定时任务cron的教学

    格式 {秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)} 用法 "30 * * * * ? " 每半分钟触发任务 "30 10 * * * ? " 每小时的10分30秒
    的头像 发表于 01-13 15:18 1263次阅读

    如何动态修改cron参数呢?

    按正常来讲,修改定时任务的执行周期,把服务停下来,改下任务cron参数,再重启服务就搞搞定了。这种方式很简单,没有可说的,但是有没有一种可
    的头像 发表于 04-12 11:04 1867次阅读

    Linux如何使用cron进行定时任务的操作

    按计划执行命令对于计算机来说非常重要,因为假如我亲自去执行一些任务的话,可能会因为多方面因素不能按时执行,所以定时任务就显得非常重要了! cron就是一个能够执行定时任务的命令,
    的头像 发表于 05-12 16:27 2016次阅读

    python定时任务实践

    由于程序需求,监测配置变化需要设置定时任务,每分钟执行一次,对任务持久化要求不高,不需要时可以关闭定时任务
    的头像 发表于 05-20 17:53 947次阅读
    python<b class='flag-5'>定时任务</b>实践

    healthchecks监控服务器Cron定时任务神器

    在运维服务器的时候经常会用到一些Crontab任务。 当你的Crontab中的任务数超过10个的时候,你会发现这些任务管理起来非常困难。 尤其是当这些
    的头像 发表于 10-31 11:34 525次阅读
    <b class='flag-5'>healthchecks</b>:<b class='flag-5'>监控</b><b class='flag-5'>服务器</b><b class='flag-5'>Cron</b><b class='flag-5'>定时任务</b>的<b class='flag-5'>神器</b>

    linux定时任务的用法总结

    习惯了使用 windows 的计划任务,使用 linux 中的 crontab 管理定时任务时很不适应。
    的头像 发表于 08-14 18:16 780次阅读
    linux<b class='flag-5'>定时任务</b>的用法总结