0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

healthchecks:監(jiān)控服務器Cron定時任務的神器

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-31 11:34 ? 次閱讀

在運維服務器的時候經常會用到一些Crontab任務。

當你的Crontab中的任務數超過10個的時候,你會發(fā)現這些任務管理起來非常困難。

尤其是當這些Cron任務執(zhí)行失敗的時候,比如 Python 實用寶典網 每個月初都會執(zhí)行一次https證書刷新,有一次協議更新之后,我的腳本失效了三個月,導致證書過期時網站宕機了一天,直到我發(fā)現并修復了這個問題。

這就是Crontab任務的一個劣勢:沒有方便的回調功能。

不過,現在有一個非常方便的開源Django項目能在這些Crontab失效的時候通知你,它就是healthchecks.

它通過一個回調接口判斷你的Crontab任務有沒有順利執(zhí)行。

比如說你有一個python腳本定時執(zhí)行,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則會發(fā)送告警通知。

如果你用不習慣這種可視化的選擇器,它還提供了Crontab表達式給你定義Period和Grace:

圖片

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

圖片

國內用戶可能一般只會用到Email和Teams,高級點的用戶可能會用到IFTTT的Webhooks和普羅米修斯??傊茨愕膼酆脕砭托?。

下面教大家如何在本地搭建這個項目:

1. 下載項目

https://github.com/healthchecks/healthchecks

如果你訪問不了github,可在【Python 實用寶典】公眾號后臺回復healthchecks下載完整源代碼

2.創(chuàng)建虛擬環(huán)境

推薦使用Python 3.6+,如果你有conda,那就非常方便了,創(chuàng)建healthchecks虛擬環(huán)境:

conda create -n healthchecks python=3.6
activate healthchecks

如果你沒有conda,你需要先安裝Python3.6,然后使用pip安裝virtualenv,在終端輸入以下命令創(chuàng)建healthchecks虛擬環(huán)境:

python3 -m venv healthchecks
source healthchecks/bin/activate

不同系統中命令可能不太一樣,遇到問題多利用搜索引擎查詢就好了。

3.安裝依賴

進入到上述創(chuàng)建好的虛擬環(huán)境后,cd進入項目根目錄,輸入以下命令安裝依賴:

pip install -r requirements.txt

4.數據庫配置(可選)

該項目默認使用SQLite,這意味著你不需要特殊配置也可照常運轉。

如果你需要配置MySQL或PostgreSQL,請閱讀hc/local_settings.py.example文件進行配置即可。

5.數據表遷移

Django項目當然少不了這個環(huán)節(jié),虛擬環(huán)境下,在根目錄里運行以下命令進行數據表的遷移:

python manage.py migrate

當然,還要創(chuàng)建超管用戶:

python manage.py createsuperuser

6.運行項目

大功告成,輸入以下命令即可運行項目:

python manage.py runserver

圖片

點擊右上角login in登錄到超管用戶就可以開始使用了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    8700

    瀏覽量

    84531
  • 開源
    +關注

    關注

    3

    文章

    3125

    瀏覽量

    42067
收藏 人收藏

    評論

    相關推薦

    基于crontab命令的Linux服務器定時任務執(zhí)行步驟

    Linux服務器定時任務
    發(fā)表于 03-04 16:36

    Linux系統定時任務Crond

    會定期(默認每分鐘檢查一次)檢查系統中是否有要執(zhí)行的任務工作,如果有,便會根據其預先設定的定時任務規(guī)則自動執(zhí)行該定時任務工作,這個crond定時任務
    發(fā)表于 07-05 06:22

    busybox用crontab/crond在嵌入式系統中添加定時任務的方法

    busybox 用crontab、crond在嵌入式系統中添加定時任務:參考文檔:在嵌入式系統中,定時任務通過crond和cronttab兩個系統命令來聯合執(zhí)行。其中crond是定時任務的守護進程
    發(fā)表于 12-14 06:40

    Linux操作系統定時任務系統Cron入門分析

    分享到: cron是一個linux下的定時執(zhí)行工具,可以在無需人工干預的情況下運行作業(yè)。由于Cron 是Linux的內置服務,但它不自動起來,可以用以下的方法啟動、關閉這個
    發(fā)表于 11-07 10:12 ?0次下載

    PHP簡單實現不依賴于Unix系統Cron定時任務程序資料說明

    本文檔的主要內容詳細介紹的是PHP簡單實現不依賴于Unix系統Cron定時任務程序資料說明。
    發(fā)表于 03-01 16:52 ?2次下載
    PHP簡單實現不依賴于Unix系統<b class='flag-5'>Cron</b>的<b class='flag-5'>定時任務</b>程序資料說明

    linux定時任務如何判斷文件差異?

    設計每10min執(zhí)行任務檢查/app/recode文件大小,該文件不會超過4MB,超過此大小則壓縮處理,僅保留最近的日志內容。立馬著手檢查linux定時任務cron運行情況。 2. 初步排查 執(zhí)
    的頭像 發(fā)表于 03-17 10:05 ?1336次閱讀

    Python定時任務的實現方式

    調度模塊schedule實現定時任務 利用任務框架APScheduler實現定時任務 Job 作業(yè) Trigger 觸發(fā) Executor 執(zhí)行
    的頭像 發(fā)表于 10-08 15:20 ?5487次閱讀

    如何在SpringBoot項目中實現動態(tài)定時任務

    之前寫過文章記錄怎么在SpringBoot項目中簡單使用定時任務,不過由于要借助cron表達式且都提前定義好放在配置文件里,不能在項目運行中動態(tài)修改任務執(zhí)行時間,實在不太靈活。
    的頭像 發(fā)表于 09-30 11:16 ?1699次閱讀

    解析Golang定時任務庫gron設計和原理

    正巧,最近看到了 gron 這個開源項目,它是用 Golang 實現一個并發(fā)安全的定時任務庫。實現非常簡單精巧,代碼量也不多。今天我們就來一起結合源碼看一下,怎樣基于 Golang 的能力做出來一個【定時任務庫】。
    的頭像 發(fā)表于 12-15 13:57 ?1175次閱讀

    定時任務cron的教學

    格式 {秒數} {分鐘} {小時} {日期} {月份} {星期} {年份(可為空)} 用法 "30 * * * * ? " 每半分鐘觸發(fā)任務 "30 10 * * * ? " 每小時的10分30秒
    的頭像 發(fā)表于 01-13 15:18 ?1226次閱讀

    如何動態(tài)修改cron參數呢?

    按正常來講,修改定時任務的執(zhí)行周期,把服務停下來,改下任務cron參數,再重啟服務就搞搞定了。這種方式很簡單,沒有可說的,但是有沒有一種可
    的頭像 發(fā)表于 04-12 11:04 ?1783次閱讀

    Linux如何使用cron進行定時任務的操作

    按計劃執(zhí)行命令對于計算機來說非常重要,因為假如我親自去執(zhí)行一些任務的話,可能會因為多方面因素不能按時執(zhí)行,所以定時任務就顯得非常重要了! cron就是一個能夠執(zhí)行定時任務的命令,
    的頭像 發(fā)表于 05-12 16:27 ?1972次閱讀

    python定時任務實踐

    由于程序需求,監(jiān)測配置變化需要設置定時任務,每分鐘執(zhí)行一次,對任務持久化要求不高,不需要時可以關閉定時任務
    的頭像 發(fā)表于 05-20 17:53 ?903次閱讀
    python<b class='flag-5'>定時任務</b>實踐

    Healthchecks監(jiān)控服務器Cron定時任務神器

    在運維服務器的時候經常會用到一些Crontab任務。 當你的Crontab中的任務數超過10個的時候,你會發(fā)現這些任務管理起來非常困難。 尤其是當這些
    的頭像 發(fā)表于 10-21 14:22 ?545次閱讀
    <b class='flag-5'>Healthchecks</b>:<b class='flag-5'>監(jiān)控</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 管理定時任務時很不適應。
    的頭像 發(fā)表于 08-14 18:16 ?574次閱讀
    linux<b class='flag-5'>定時任務</b>的用法總結