2014-05-01 13:29 by MikeZhou, 677 閱讀, 0 評論, 收藏, 編輯html
上週用monit搭建或者說定製了一個監控系統,來監控服務器發生事情。固然了主要是監控異常,由於咱們的產品屬於服務器類型,不少進程都daemon,要不停的運行。咱們搭建監控目的不過是出現問題可以及時的知道,平時可從web UI上看到整個系統的情況,同時它自己要輕量級,不要影響性能。固然了相似的產品不少了,好比Ganglia,我在老科長波哥曾經搭建過一個Ganglia系統監控科室十幾臺服務器,讓我非常崇拜。本文重點介紹monit。
monit是一個能夠監控系統,進程,文件系統,目錄,設備的監控軟件,能夠自動喚起那些異常退出的進程,還可定製你想監控的東西。同時monit提供了內置的WEB UI的功能,能夠一目瞭然地瞭解監控項的狀況。其中正常項爲綠色,異常項爲紅色,很方便的告警,另外,monit還提供了發郵件通知的功能,對於緊急的異常狀況能夠發送郵件到指定郵箱。好比發生了coredump,發生了DB corrupt,daemon進程異常重啓,能夠第一時間郵件通知到管理員,呵呵很強大吧。片湯話咱們很少講,講講怎麼用monit搭建一個監控系統。
monit是一個很輕量級的程序,只須要一個可執行程序monit,一個配置文件monitrc便可工做,固然了咱們仍是要講講安裝過程:
Ubuntu系統下,安裝一如既往的方便:linux
CentOS系統下也是同樣:web
我比較喜歡源碼安裝,緣由是我喜歡看下源碼:chrome
注意configure的時候可能會報錯:apache
固然了你能夠加上--without-pam這個選項繞過這個問題,這個問題在Ubuntu下的解決辦法是:ubuntu
這個問題事後,再次執行./configure又會出現SSL的報錯:瀏覽器
解決辦法是:服務器
安裝了libssl以後,configure仍然報錯,緣由是它找不到libssl.so,你能夠手工搜索libssl.so的位置,而後用 --with-ssl-lib-dir告知configure。
好比在個人ubuntu下:post
那麼能夠執行:性能
OK,configure以後,能夠執行make 和 make install 了。make install以後,將源碼路徑下的配置文件monitrc拷貝到/etc目錄下:
這些事情作好以後,monit就安裝完畢了。咱們嘗試啓動monit
前文講過,monit內置了一個http,能夠經過browser查看,咱們先看下monitrc配置文件的http相關配置:
這部份內容是http相關的配置,port 2812是端口號,localhost是訪問IP,allow localhost表示只容許本機訪問,用戶名密碼是:admin/monit。這不太符合咱們的需求,好比咱們不可能每次都在服務器上用瀏覽器查看服務器的狀態,這太假了,若是咱們有閒情逸致登上服務器,何須要咱們的監控系統。咱們將此處的配置改成:
咱們能夠用chrome瀏覽器輸入 http://10.64.74.99:2812去查看輸出。第三行的意思是咱們容許任何機器登陸咱們UI,訪問咱們monit的數據,第四行表示登陸須要用戶名和密碼:manu/manu。此時咱們的monit監控系統以下所示:
此時還比較單薄,啥東西也沒有,咱們繼續講如何配置monitrc。
這個比較簡單,多久檢測一次。咱們監控條目有若干,咱們不能時時刻刻都作一遍檢查,那就成了死循環了,對系統性能損耗太大了。60秒錶示每60秒檢查一次配置文件裏面配置的監控項。這個好理解很少說。
這個配置項表示monit進程自己的log記錄在/var/log/monit.log。
在web UI上也能夠查看monit的log。點擊monit首頁的runnning,
進入monit running status頁面,而後點擊最右下角的的view log。這個也很少說了。
咱們講述發mail的配置:
set mail-format {
from: BETA_SERVER_128@trend.com
subject: monit alert -- $EVENT $SERVICE
message: $EVENT Service $SERVICE
Date: $DATE
Action: $ACTION
Host: $HOST
Description: $DESCRIPTION
Your faithful employee,
bean
}
set alert xxxx@trendmicro.com.cn # receive all alerts 設置收件人
有不少人發不出郵件的關鍵不在monit程序,而在於沒有一個SMTP Server,幫助你轉發Mail,用所謂的163 或者google的SMTP Server始終沒有成功過。我開始也是發不出Mail,後來有了一個不須要用戶名密碼的SMTP Server以後,天然就能發出郵件通知了。如何搭建一個SMTP Server這是另一個話題了,我按下不表。我用的是咱們公司內部的一個SMTP Server。收到的Mail以下圖所示:
發Mail問題解決以後,咱們就能專一於定製咱們本身須要的監控項了。
============================華麗的分割線=========================================
1 監控進程
好比咱們服務器上有Apache,咱們要監控Apache的狀況,若是Apache異常重啓,須要Mail通知。
全部進程類的監控是一類,以check process abc打頭,其中with pidfile是指進程的PID記錄在/var/run/httpd.pid。咱們知道apache的PID記錄在/var/run/httpd.pid之中,monit經過這個pid文件就能夠明白,咱們要求它監控那個進程了。
沒有PID文件的進程咋辦?
這是個好問題,畢竟大多數的進程都是沒有PID文件的。好比你的進程叫作test_abc,是你經過./test_abc叫起的進程,如何告訴monit我要監控這個進程。monit提供了新的方法。MATCHING,就是進程cmdline匹配到了test_abc,我就監控這個進程,監控項叫test_abc
咱們新增了監控進程,看下WEB UI的變化:
點擊apache,能夠看詳細情形,這裏就不贅述了。
2 監控文件系統或者監控設備
咱們通常有存放數據的分區,也有存放日誌的分區,若是日誌分區使用空間到了90%,咱們認爲這是出了問題了,咱們要注意這種事件的發生:
check filesystem tmpfs with path /var
if space usage > 80% then alert
上述語句代表tmpfs 掛載在/var目錄下,若是空間使用了80%,代表出現了異常,須要發mail通知到管理員。
新增了文件系統監控項後,UI上會增長以下顯示:
點擊tmpfs 或者VAR_LOG能夠進入二層頁面看下文件系統的詳細信息,我也不贅述了。
3 監控文件
monit也可監控某個文件,監控文件的屬性,好比咱們的文件permission 是700,若是發生變化則發郵件通知:
假如咱們關注的事情發生了,咱們須要執行本身的腳本,能夠用 then exec 「your_action」的方式處理。
4 監控program
有不少的狀況,很差歸類,好比,個人系統裏面若是產生coredump,我但願能夠檢測到,同時在WEB UI上顯示而且給我發Mail。我能夠本身寫個查看有沒有coredump的腳本,告訴monit系統,我期待的結果,若是執行腳本與我期待的結果不一樣,那麼表示本監控項出了異常
咱們前面一直沒提到,若是監控項爲異常,WEB UI該項爲紅色,不然,該項爲綠色。咱們如今看下監控program之COREDUMP_EXIST:
由於咱們有coredump文件,因此該項爲紅色。
5 監控主機
咱們還能夠監控其餘host,好比咱們可見ping某臺host,若是屢次沒有迴應,那麼郵件通知我
介紹了不少用法,可是掛一漏萬,終極的學習方法仍是看手冊 http://mmonit.com/monit/documentation/monit.html#connection_testing。這個基本介紹的很詳細,我遇到的一些問題,也是從這裏找的答案。
技術改變世界! --狂詩絕劍