場景介紹
有些應用在運作過程中會不斷産生檔案,比如下載下傳的檔案、備份檔案、日志檔案,我們需要在磁盤使用率過高後删除不再使用的或者過期的檔案。這裡我們以清理/tmp下的臨時檔案為例,說明如何通過運維編排(OOS)提供的公共模闆來實作此類運維操作。
解決方案
我們準備一台ECS執行個體,登陸進系統後,檢視它的磁盤占用率:

可以看到根目錄所在的磁盤占用率達到了72%。檢視臨時檔案目錄,可以看到臨時檔案download.tmp占用了超過12G,需要清理。我們來看如何将這種正常運維任務自動化。
登入OOS控制台。如果您之前從未開通過OOS服務,請點選“立即開通”按鈕,即可一鍵開通。OOS運維編排是安全免費的服務,請放心開通。
開通後在公共模闆中搜尋ACS-ECS-RunCommandWhenDiskUsageLimitExceeded,找到<當某磁盤使用率超過門檻值時執行指令。>這個公共模闆。
點選“建立執行”的按鈕,輸入“執行描述”後,點選"下一步:設定參數"。
設定清理任務的參數:
這裡的參數分兩類,前三個參數定義了在什麼情況下觸發執行(執行個體i-bp...的/dev/vda1分區上的空間使用率超過70%),一類定義了執行的内容(執行一個Shell腳本,其内容為rm -r /tmp/*,注意在生産環境使用rm指令前要先做測試)。silenceTime為3600秒代表在磁盤使用利率持續超限的情況下一小時内隻會執行一次,這個參數是在無法解除報警的場景下防止頻繁觸發運維操作。
确認執行:
執行建立後,建立一個磁盤使用率告警規則,目前在等待報警:
稍等1-2分鐘後(告警規則的加載以及監控發現的延遲),由于該磁盤的使用率已經超過70%的門檻值,觸發了一次磁盤清理操作:
點選清單上這個子執行檢視詳情,可以看到這個清理操作執行成功了:
我們登陸系統确認:
可以看到/tmp下的臨時檔案已經被清除。
這時候執行的狀态又變回等待中。這個執行會7x24小時一直執行,直到使用者主動取消。隻要出現磁盤超限的情況,臨時檔案就會被自動清理。
總結
以上以一個常見的磁盤清理任務為例,介紹了運維編排的告警運維功能。通過告警運維任務,我們将監控告警能力和運維能力結合在一起,實作自動化的處理告警,将運維同學從不期而至的短信和日常繁瑣枯燥的運維操作裡解放。
上面使用了一個為場景定制的公共模闆,如果我們想處理磁盤占用率之外的告警呢?運維編排提供建立通用告警運維的功能,可以支援全部的雲監控監控項的告警,按頁面引導即可配置在指定告警發生時執行指定的模闆。
下面給出了實作上述公共模闆同樣功能的任務配置:
設定告警規則
設定要觸發的模闆:
設定觸發模闆使用的參數:
參數中的$instanceId引用了告警消息中的執行個體ID資訊。此任務可以監控和清理任意執行個體。
了解更多請參考
建立告警任務文檔。如有疑問可以加入運維編排客戶支援釘釘群咨詢。
歡迎使用OOS
OOS客戶支援釘釘群:23330931
OOS管理控制台的連結 OOS幫助文檔的連結