在我的工作中,我們大量使用cron來自動化許多系統管理任務,從備份到報告生成。問題在於我們的50多個cron工作系統的複雜性在其自身的重量下開始崩潰。讓我來形容我們建立了一下:用於控制cron工作複雜性的方法或軟件系統?
- 〜15的開發,一些誰負責的幾個人通過他們的個人的crontab運行
- 30+機,其中一些正在運行的cron作業,有時cron作業
- 許多cron作業不被記錄,並且所有的輸出和錯誤都被管道輸送到/ dev/null的(我懊惱)
- 一些cron作業太吵,吐出文字的多餘量,使該來自cron的電子郵件痛苦地篩選
- 大多數cron職位,如果他們是moni tored,則跳轉到一組電子郵件別名,因此,很多人看到不相關的給他們,併成爲習慣於忽略這些
- 通常cron作業失敗的消息,我們不及時通知
- 一些的cron工作正在由我們的備份系統進行跟蹤,而其他人則沒有。無源控制。
- 當我們的一臺服務器出現故障,這意味着存儲在用戶的crontab文件機器上的任何cron作業不跑,我們沒有意識到的是,cron作業運行失敗
理想的情況下,我們想要設置或軟件系統,其中:
- 任何開發人員都可以進去調整/輕鬆地修復一個cron作業,並不能限制個人的crontab
- 有靈活性哪些機器cron作業運行即使crontab以某種方式集中在特定機器上
- 所有成功的cron作業運行被簡潔地記錄,所以我們知道發生了什麼事情
- 所有錯誤都被困並上報的基礎上的錯誤信息和cron作業
- 用戶可以在相關的開發人員提供了細粒度的列表被設置爲監視某些cron作業,無論成功或失敗
- 用戶可以收到細節工作已經失敗,哪些作業已經成功的特定時間窗口摘要(電子郵件或網頁)
- 的cron的日誌記錄工作狀態(運行時間,退出狀態,輸出量)使用類似RRDtool進行分析
-
個
- 魯棒性:一臺服務器下去也不會破壞整個cron作業系統
網上搜索,我看到的"cron job best practices"一些討論,但似乎只解決我們的一些要求。就某些功能的軟件支持而言,似乎有cronic,shush和cronwrap等工具(對不起,我是新用戶並限於2個超鏈接)。我相信還有更多的東西我錯過了。
看來我可以編碼這樣的東西,但似乎肯定已經創建了這樣的東西。任何關於現有系統/方法的建議,或者關於如何構建這樣的系統的指示,都將不勝感激。
可能相關:http://stackoverflow.com/questions/1914884/distributed-job-scheduling-management-and-reporting – colllin
你有沒有嘗試過使用像哈德森/詹金斯持續集成服務器? –
@collindo:我曾經使用過批處理提交系統,比如Condor和qsub。他們有一些很好的監控功能,但他們不提供類似cron的功能,也沒有日誌記錄或分析功能。 – taltman