開發與維運

運維編排系列場景—–在磁盤使用率超限時自動清理臨時文件

場景介紹

有些應用在運行過程中會不斷產生文件,比如下載的文件、備份文件、日誌文件,我們需要在磁盤使用率過高後刪除不再使用的或者過期的文件。這裡我們以清理/tmp下的臨時文件為例,說明如何通過運維編排(OOS)提供的公共模板來實現此類運維操作。

解決方案

我們準備一臺ECS實例,登陸進系統後,查看它的磁盤佔用率:

磁盤佔用2.png

可以看到根目錄所在的磁盤佔用率達到了72%。查看臨時文件目錄,可以看到臨時文件download.tmp佔用了超過12G,需要清理。我們來看如何將這種常規運維任務自動化。

登錄OOS控制檯。如果您之前從未開通過OOS服務,請點擊“立即開通”按鈕,即可一鍵開通。OOS運維編排是安全免費的服務,請放心開通。

image.png

開通後在公共模板中搜索ACS-ECS-RunCommandWhenDiskUsageLimitExceeded,找到<當某磁盤使用率超過閾值時執行命令。>這個公共模板。
公共模板.png

點擊“創建執行”的按鈕,輸入“執行描述”後,點擊"下一步:設置參數"。

創建執行1.png

設置清理任務的參數:
創建執行2.png

這裡的參數分兩類,前三個參數定義了在什麼情況下觸發執行(實例i-bp...的/dev/vda1分區上的空間使用率超過70%),一類定義了執行的內容(執行一個Shell腳本,其內容為rm -r /tmp/*,注意在生產環境使用rm命令前要先做測試)。silenceTime為3600秒代表在磁盤使用利率持續超限的情況下一小時內只會執行一次,這個參數是在無法解除報警的場景下防止頻繁觸發運維操作。

確認執行:
創建執行3.png

執行創建後,創建一個磁盤使用率告警規則,當前在等待報警:
無觸發.png

稍等1-2分鐘後(告警規則的加載以及監控發現的延遲),由於該磁盤的使用率已經超過70%的閾值,觸發了一次磁盤清理操作:
觸發.png
點擊列表上這個子執行查看詳情,可以看到這個清理操作執行成功了:
05ffcd4bc5ab224b3b261cc0fdf5d.png

我們登陸系統確認:
b3557bdbdeeda64137e536d8925fec.png
可以看到/tmp下的臨時文件已經被清除。

這時候執行的狀態又變回等待中。這個執行會7x24小時一直執行,直到用戶主動取消。只要出現磁盤超限的情況,臨時文件就會被自動清理。

總結

以上以一個常見的磁盤清理任務為例,介紹了運維編排的告警運維功能。通過告警運維任務,我們將監控告警能力和運維能力結合在一起,實現自動化的處理告警,將運維同學從不期而至的短信和日常繁瑣枯燥的運維操作裡解放。

上面使用了一個為場景定製的公共模板,如果我們想處理磁盤佔用率之外的告警呢?運維編排提供創建通用告警運維的功能,可以支持全部的雲監控監控項的告警,按頁面引導即可配置在指定告警發生時執行指定的模板。

下面給出了實現上述公共模板同樣功能的任務配置:
設置告警規則
Jietu20200319-152253.png

設置要觸發的模板:
Jietu20200319-152321.png

設置觸發模板使用的參數:
Jietu20200319-152512.png
參數中的$instanceId引用了告警消息中的實例ID信息。此任務可以監控和清理任意實例。

瞭解更多請參考創建告警任務文檔。如有疑問可以加入運維編排客戶支持釘釘群諮詢。

歡迎使用OOS

OOS客戶支持釘釘群:23330931

OOS管理控制檯的鏈接

OOS幫助文檔的鏈接

Leave a Reply

Your email address will not be published. Required fields are marked *