監控任務
這是什麼
定期檢查系統並僅回報有意義變化的循環任務。
白話解釋
想像一位檢驗技師按照固定排程、週復一週地執行相同的血液檢查,而且只有在某項結果確實超出正常範圍時才會拿起電話通知醫生——而不是每次抽血後都打電話。監控任務以同樣的方式運作:它按照固定排程執行,但設計為在沒有值得回報的事情時保持安靜,只有當變化確實值得關注時才會通知人員。
為什麼重要
沒有變化時的沉默,是監控任務的正確結果,而不是失敗——倉儲監控或系統健康檢查只有在能夠過濾噪音、而不是無論內容如何都報告每個輪詢週期時,才值得維持其循環排程。無模型任務和喚醒條件通常負責進行過濾工作,因此只有當確實有值得回報的事情時,模型支援的部分才會執行。如果過濾錯了,監控任務就會變成那種人們學會忽略的自動化。
運作方式
監控任務是一個循環的 cron 條目,以分鐘為間隔定義、由 croniter 解析的 cron 表達式,或是一次性時間(cron/jobs.py#compute_next_run)。排程器的觸發會透過 get_due_jobs() 獲取任何到期的任務,並透過與其他 cron 任務相同的執行-儲存-傳送序列來執行每個任務(cron/scheduler.py)。任務的提示告訴代理檢查特定內容——倉儲、系統、訂閱源——而 cron 系統提示則指示它在沒有新內容時回覆 [SILENT]。排程器會識別這個哨兵值,無論它是整個回覆還是位於第一行或最後一行,並在將輸出傳送到任何配置的頻道之前將其抑制。