
在這之前的筆記裡,将大部分的常用shell基本文法已經介紹完了,在這之後就是實戰一些小項目了。這個項目是做一個簡單的告警系統,用于完成一些簡單個性化的需求。
目錄結構與要求:
<br>
首先我們要編寫一個告警系統的主腳本,我這裡是放在了/usr/local/sbin/目錄下,這個主腳本的檔案名稱為main.sh,在編寫腳本之前我們還需要建立一個完整的目錄結構:
然後進入到以上建立的bin目錄下,編輯main.sh腳本, main.sh内容如下:
主腳本編寫完之後,就是編寫配置檔案,配置檔案比較簡單裡面主要就是一些定義開關的開啟關閉狀态和日志檔案路徑等内容。配置檔案要放在/usr/local/sbin/mon/conf/下,檔案名稱必須為mon.conf,因為在主腳本裡已經定義了:
mon.conf檔案的内容如下:
配置檔案的參數可以自定義,本身配置檔案就是用來給使用者定義的。
編寫子腳本,也就是監控項目,這個load.sh子腳本是必須要有的,這個腳本用來監控系統負載,因為在主腳本裡已經定義了需要執行這個子腳本來進行監控系統負載。這個腳本需要放在/usr/local/sbin/mon/shares/ 目錄下,而且以後的子腳本都是放在這個目錄下,因為主腳本裡已經定義了:
load.sh内容如下:
這個腳本用于監控502狀态碼發生的次數。
502.sh内容如下:
這個腳本是用來監控磁盤使用率的,這個腳本會把每個磁盤分區挨個看一下。
disk.sh内容如下:
在編寫mail.sh之前,先得準備一個發送郵件的功能性腳本,因為這個告警系統會在監控項出現問題的時候發送告警郵件,是以還需要編寫一個能夠發送郵件的腳本,我這裡使用的腳本是python編寫的,這個腳本放在/usr/local/sbin/mon/mail 目錄下:
腳本内容如下:
然後再編寫mail.sh腳本,這個腳本是做告警收斂的,因為之後會設定1分鐘進行監控一次,是以主要用于控制當告警持續了10分鐘後才發送告警郵件,這個腳本和mail.py一樣也是放在mail/目錄下,腳本内容如下:
想要正常的運作這個告警系統你需要寫一個任務計劃,每分鐘執行一次 main.sh 主腳本:
不過,我這裡由于隻是做實驗就不寫以上這個任務計劃了,直接手動運作,友善一會進行測試。在這之前需要修改一下配置檔案,将to_mon_502改為0,因為本實驗環境中并沒有502.sh腳本裡定義的站點目錄,是以打開這個監控項的話會報錯,然後還需要注釋掉 main.sh 主腳本中的寫入日志那句代碼:
完成以上操作後,執行 main.sh 主腳本:
運作結果如上,沒有出現報錯資訊,代表 load.sh 能夠被正常執行。
以上已經驗證load.sh 可以正常被執行了,接下來我們再來測試一下能否正常發送郵件,首先修改一下load.sh中的判斷條件,修改成小于10,因為要故意讓它報警:
然後到bin目錄下執行11次主腳本,因為我沒有定義任務計劃,是以需要模拟一分鐘執行一次的情況,執行到第11次的時候會停頓一下,這是因為在發送郵件中:
測試結果是郵件能夠正常收到,内容如下圖:
完結:以上就是如何使用shell語言去編寫一個簡單監控系統,并且經過簡單的測試證明能夠正常使用,如果實驗過程中遇到問題歡迎私信。
本文轉自 ZeroOne01 51CTO部落格,原文連結:http://blog.51cto.com/zero01/2045239,如需轉載請自行聯系原作者