在運(yùn)維服務(wù)器的時候經(jīng)常會用到一些Crontab任務(wù)。
當(dāng)你的Crontab中的任務(wù)數(shù)超過10個的時候,你會發(fā)現(xiàn)這些任務(wù)管理起來非常困難。
尤其是當(dāng)這些Cron任務(wù)執(zhí)行失敗的時候,比如 Python 實(shí)用寶典網(wǎng) 每個月初都會執(zhí)行一次https證書刷新,有一次協(xié)議更新之后,我的腳本失效了三個月,導(dǎo)致證書過期時網(wǎng)站宕機(jī)了一天,直到我發(fā)現(xiàn)并修復(fù)了這個問題。
這就是Crontab任務(wù)的一個劣勢:沒有方便的回調(diào)功能。
不過,現(xiàn)在有一個非常方便的開源Django項(xiàng)目能在這些Crontab失效的時候通知你,它就是healthchecks.
它通過一個回調(diào)接口判斷你的Crontab任務(wù)有沒有順利執(zhí)行。
比如說你有一個python腳本定時執(zhí)行,healthchecks給定的回調(diào)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
如果未按時調(diào)用回調(diào)接口,healthchecks將會通過郵件等通知方式告警。
那么這個“未按時”能否設(shè)定寬限呢?比如我有個任務(wù)要跑1個小時左右,那么這個任務(wù)應(yīng)該是預(yù)計在一個半小時內(nèi)調(diào)用(Ping)回調(diào)接口,超過一個半小時如果沒有調(diào)用回調(diào)接口則告警。答案是肯定的。
上圖中Period指的是兩次Ping之間的時間間隔。下方Grace表示“寬限期”,自從上次Ping以來的時間已超過Period+Grace則會發(fā)送告警通知。
如果你用不習(xí)慣這種可視化的選擇器,它還提供了Crontab表達(dá)式給你定義Period和Grace:
真乃神器??!它支持的通知方式如下:
國內(nèi)用戶可能一般只會用到Email和Teams,高級點(diǎn)的用戶可能會用到IFTTT的Webhooks和普羅米修斯。總之,按你的愛好來就行。
下面教大家如何在本地搭建這個項(xiàng)目:
1. 下載項(xiàng)目
使用Git工具克隆該項(xiàng)目:
git clone https://github.com/healthchecks/healthchecks
如果你訪問不了github,可在【Python 實(shí)用寶典】公眾號后臺回復(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)然少不了這個環(huán)節(jié),虛擬環(huán)境下,在根目錄里運(yùn)行以下命令進(jìn)行數(shù)據(jù)表的遷移:
python manage.py migrate
當(dāng)然,還要創(chuàng)建超管用戶:
python manage.py createsuperuser
6.運(yùn)行項(xiàng)目
大功告成,輸入以下命令即可運(yùn)行項(xiàng)目:
python manage.py runserver
點(diǎn)擊右上角login in登錄到超管用戶就可以開始使用了。
-
接口
+關(guān)注
關(guān)注
33文章
8706瀏覽量
151988 -
監(jiān)控
+關(guān)注
關(guān)注
6文章
2236瀏覽量
55385 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9322瀏覽量
86121 -
python
+關(guān)注
關(guān)注
56文章
4809瀏覽量
85064
發(fā)布評論請先 登錄
相關(guān)推薦
Linux系統(tǒng)定時任務(wù)Crond
busybox用crontab/crond在嵌入式系統(tǒng)中添加定時任務(wù)的方法
Linux操作系統(tǒng)定時任務(wù)系統(tǒng)Cron入門分析
PHP簡單實(shí)現(xiàn)不依賴于Unix系統(tǒng)Cron的定時任務(wù)程序資料說明
![PHP簡單實(shí)現(xiàn)不依賴于Unix系統(tǒng)<b class='flag-5'>Cron</b>的<b class='flag-5'>定時任務(wù)</b>程序資料說明](https://file.elecfans.com/web1/M00/86/7A/pIYBAFx49aqAcv0jAALH5cX1jD0649.png)
linux定時任務(wù)如何判斷文件差異?
Python定時任務(wù)的實(shí)現(xiàn)方式
如何在SpringBoot項(xiàng)目中實(shí)現(xiàn)動態(tài)定時任務(wù)
解析Golang定時任務(wù)庫gron設(shè)計和原理
定時任務(wù)cron的教學(xué)
如何動態(tài)修改cron參數(shù)呢?
Linux如何使用cron進(jìn)行定時任務(wù)的操作
python定時任務(wù)實(shí)踐
![python<b class='flag-5'>定時任務(wù)</b>實(shí)踐](https://file1.elecfans.com/web2/M00/88/7C/wKgaomRomG6AUjP_AAAoyI8SDqQ776.jpg)
healthchecks:監(jiān)控服務(wù)器Cron定時任務(wù)的神器
![<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'>定時任務(wù)</b>的<b class='flag-5'>神器</b>](https://file1.elecfans.com/web2/M00/AB/6A/wKgZomUzbhGAWX5PAABpbUUVPNw807.jpg)
評論