<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 2058字,需瀏覽 5分鐘

           ·

          2021-08-30 22:51

          在運(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ù)計(jì)在一個半小時內(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)目

          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登錄到超管用戶就可以開始使用了。


          如果你需要對這個項(xiàng)目進(jìn)行大規(guī)模的改動,建議使用Pycharm作為編程工具,因?yàn)槭褂肞ycharm來寫Django實(shí)在是太爽了,詳細(xì)可以參考這篇文章:《Pycharm+Django 安裝及配置指南》



          我們的文章到此就結(jié)束啦,如果你喜歡今天的Python 實(shí)戰(zhàn)教程,請持續(xù)關(guān)注Python實(shí)用寶典。

          有任何問題,可以在公眾號后臺回復(fù):加群,回答相應(yīng)紅字驗(yàn)證信息,進(jìn)入互助群詢問。

          原創(chuàng)不易,希望你能在下面點(diǎn)個贊和在看支持我繼續(xù)創(chuàng)作,謝謝!

          點(diǎn)擊下方閱讀原文可獲得更好的閱讀體驗(yàn)

          Python實(shí)用寶典 (pythondict.com)
          不只是一個寶典
          歡迎關(guān)注公眾號:Python實(shí)用寶典

          瀏覽 45
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色插逼视频 | 青青大香蕉 | 热视频亚洲欧美 | 操逼操逼网 | 亚洲国产精品成人综合色丿丿 |