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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Healthchecks:監(jiān)控服務(wù)器Cron定時(shí)任務(wù)的神器

科技綠洲 ? 來源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-21 14:22 ? 次閱讀

在運(yùn)維服務(wù)器的時(shí)候經(jīng)常會(huì)用到一些Crontab任務(wù)。

當(dāng)你的Crontab中的任務(wù)數(shù)超過10個(gè)的時(shí)候,你會(huì)發(fā)現(xiàn)這些任務(wù)管理起來非常困難。

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

這就是Crontab任務(wù)的一個(gè)劣勢:沒有方便的回調(diào)功能。

不過,現(xiàn)在有一個(gè)非常方便的開源Django項(xiàng)目能在這些Crontab失效的時(shí)候通知你,它就是healthchecks.

圖片

它通過一個(gè)回調(diào)接口判斷你的Crontab任務(wù)有沒有順利執(zhí)行。

比如說你有一個(gè)python腳本定時(shí)執(zhí)行,healthchecks給定的回調(diào)URL是:

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

在配置Crontab腳本的時(shí)候,就需要這么寫:

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

如果未按時(shí)調(diào)用回調(diào)接口,healthchecks將會(huì)通過郵件等通知方式告警。

那么這個(gè)“未按時(shí)”能否設(shè)定寬限呢?比如我有個(gè)任務(wù)要跑1個(gè)小時(shí)左右,那么這個(gè)任務(wù)應(yīng)該是預(yù)計(jì)在一個(gè)半小時(shí)內(nèi)調(diào)用(Ping)回調(diào)接口,超過一個(gè)半小時(shí)如果沒有調(diào)用回調(diào)接口則告警。答案是肯定的。

圖片

上圖中Period指的是兩次Ping之間的時(shí)間間隔。下方Grace表示“寬限期”,自從上次Ping以來的時(shí)間已超過Period+Grace則會(huì)發(fā)送告警通知。

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

圖片

真乃神器?。∷С值耐ㄖ绞饺缦拢?/p>

圖片

國內(nèi)用戶可能一般只會(huì)用到Email和Teams,高級點(diǎn)的用戶可能會(huì)用到IFTTT的Webhooks和普羅米修斯。總之,按你的愛好來就行。

下面教大家如何在本地搭建這個(gè)項(xiàng)目:

1. 下載項(xiàng)目

使用Git工具克隆該項(xiàng)目:

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

如果你訪問不了github,可在【Python 實(shí)用寶典】公眾號后臺(tái)回復(fù) **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

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

3.安裝依賴

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

pip install -r requirements.txt

4.數(shù)據(jù)庫配置(可選)

該項(xiàng)目默認(rèn)使用SQLite,這意味著你不需要特殊配置也可照常運(yùn)轉(zhuǎn)。

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

5.數(shù)據(jù)表遷移

Django項(xiàng)目當(dāng)然少不了這個(gè)環(huán)節(jié),虛擬環(huán)境下,在根目錄里運(yùn)行以下命令進(jìn)行數(shù)據(jù)表的遷移:

python manage.py migrate

當(dāng)然,還要?jiǎng)?chuàng)建超管用戶:

python manage.py createsuperuser

6.運(yùn)行項(xiàng)目

大功告成,輸入以下命令即可運(yùn)行項(xiàng)目:

python manage.py runserver

圖片

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8254

    瀏覽量

    149943
  • 監(jiān)控
    +關(guān)注

    關(guān)注

    6

    文章

    2129

    瀏覽量

    54883
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8700

    瀏覽量

    84531
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84069
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    Linux系統(tǒng)定時(shí)任務(wù)Crond

    會(huì)定期(默認(rèn)每分鐘檢查一次)檢查系統(tǒng)中是否有要執(zhí)行的任務(wù)工作,如果有,便會(huì)根據(jù)其預(yù)先設(shè)定的定時(shí)任務(wù)規(guī)則自動(dòng)執(zhí)行該定時(shí)任務(wù)工作,這個(gè)crond定時(shí)任務(wù)
    發(fā)表于 07-05 06:22

    busybox用crontab/crond在嵌入式系統(tǒng)中添加定時(shí)任務(wù)的方法

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

    Linux操作系統(tǒng)定時(shí)任務(wù)系統(tǒng)Cron入門分析

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

    PHP簡單實(shí)現(xiàn)不依賴于Unix系統(tǒng)Cron定時(shí)任務(wù)程序資料說明

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

    linux定時(shí)任務(wù)如何判斷文件差異?

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

    Python定時(shí)任務(wù)的實(shí)現(xiàn)方式

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

    如何在SpringBoot項(xiàng)目中實(shí)現(xiàn)動(dòng)態(tài)定時(shí)任務(wù)

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

    解析Golang定時(shí)任務(wù)庫gron設(shè)計(jì)和原理

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

    定時(shí)任務(wù)cron的教學(xué)

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

    如何動(dòng)態(tài)修改cron參數(shù)呢?

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

    Linux如何使用cron進(jìn)行定時(shí)任務(wù)的操作

    按計(jì)劃執(zhí)行命令對于計(jì)算機(jī)來說非常重要,因?yàn)榧偃缥矣H自去執(zhí)行一些任務(wù)的話,可能會(huì)因?yàn)槎喾矫嬉蛩夭荒馨磿r(shí)執(zhí)行,所以定時(shí)任務(wù)就顯得非常重要了! cron就是一個(gè)能夠執(zhí)行定時(shí)任務(wù)的命令,
    的頭像 發(fā)表于 05-12 16:27 ?1972次閱讀

    python定時(shí)任務(wù)實(shí)踐

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

    healthchecks監(jiān)控服務(wù)器Cron定時(shí)任務(wù)神器

    在運(yùn)維服務(wù)器的時(shí)候經(jīng)常會(huì)用到一些Crontab任務(wù)。 當(dāng)你的Crontab中的任務(wù)數(shù)超過10個(gè)的時(shí)候,你會(huì)發(fā)現(xiàn)這些任務(wù)管理起來非常困難。 尤其是當(dāng)這些
    的頭像 發(fā)表于 10-31 11:34 ?473次閱讀
    <b class='flag-5'>healthchecks</b>:<b class='flag-5'>監(jiān)控</b><b class='flag-5'>服務(wù)器</b><b class='flag-5'>Cron</b><b class='flag-5'>定時(shí)任務(wù)</b>的<b class='flag-5'>神器</b>

    linux定時(shí)任務(wù)的用法總結(jié)

    習(xí)慣了使用 windows 的計(jì)劃任務(wù),使用 linux 中的 crontab 管理定時(shí)任務(wù)時(shí)很不適應(yīng)。
    的頭像 發(fā)表于 08-14 18:16 ?574次閱讀
    linux<b class='flag-5'>定時(shí)任務(wù)</b>的用法總結(jié)