有一段時間沒有更新博客了,最近因為公司項目全球化以及最近慢慢在偏向學習團隊管理忙的有點不可開交了,不過這次要給大家帶來兩篇關於Liunx日常開發維護管理中非常好用的兩款利器,其中一個就是Monit啦,Monit是什麼呢?他是一個進程級別的一個監控軟件,不賣關子我們就進入到今天的正文當中吧!
附上:
喵了個咪的博客:w-blog.cn
Monit官網地址:https://www.mmonit.com/monit/documentation/monit.html
在我們平時研究一樣東西或者說遇到一項困難時我們會更具問題來尋找解決方案,那就看待Monit之前就要先了解遇到了什麼問題?
Nginx掛啦
筆者就是有意思客戶反映到領導那裡去了,你們平臺怎麼用不了了?,最後一查居然是Nginx死掉了~~死掉的時候是下午5點完成8點才收到反饋,用戶不反饋就算等到明天可能還不知道!
腳本死了
Liunx開篇推薦的軟件Supervisor可以幫助你運行腳本或者說軟件,但是運行的軟件默認連續過快退出三次就結束了,這個時候你怎麼知道沒有運行了?
Monit的核心功能就是郵件通知,當你配置好需要監控的進程之後,無論是進程死亡,或者是進程變更都會發送報警郵件並且會更具你的預先配置好的命令嘗試重啟它,更牛逼的事當monit被關閉的時候也會發送郵件通知Moint被關閉,並且它還可以完成如下功能!
附加功能
比如你不是用的雲服務器自己管理的機器,但是機器數量又沒有特別多沒有到要搭建一套完整的監控系統的份上(zabbix或open-falcon)的份上Monit可以比較好的幫你低成本的解決這個問題
web管理
可以用過web界面監控服務的資源佔用,開始,暫停,重啟等.
3. 安裝Monit
這裡筆者還是使用的centos6.5進行安裝,只需要簡單的yum一下即可
<code>yum install monit/<code>
然後通過service命令就可以開關monit了
<code>service monit startservice monit stop/<code>
4. 配置文件解讀
使用monit最重要的就是設置好配置文件,具體的可以在官方文檔查看這裡只說幾個重要的
<code># 檢查時間默認30秒一次set daemon 30 # 郵箱配置({名稱}替換成實際值)set mailserver {smtp地址} username "{郵箱用戶名}" password "{郵箱密碼}" set mail-format { # 郵件模板自定義 from: {郵箱用戶名} subject: monit alert -- $EVENT $SERVICE message: $EVENT Service $SERVICE Date: $DATE Action: $ACTION Host: $HOST Service: $SERVICE Description: $DESCRIPTION Your faithful employee, Monit } set alert {接受的郵箱1}set alert {接受的郵箱2}# web訪問配置 默認端口號2812set httpd port 2812 and use address {能訪問到的外網地址} allow 0.0.0.0/0 #限制的請求IP allow admin:monit #登錄用戶名密碼 /<code>
基本配置就完成了,如果配置正確我們就會有道一封Monit啟動的郵件
monit alert -- Monit instance changed {主機名}
<code>Monit instance changed Service {主機名} Date: Fri, 14 Oct 2016 23:23:52 Action: start Host: {主機名} Service: {主機名} Description: Monit 5.14 started Your faithful employee, Monit/<code>
並且能夠通過配置好的web端口訪問得到如下界面(一下是配置好監控項才會有的)
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-OzsrMlOF-1580289953294)(http://i.imgur.com/S5Epjlj.png)]
注意:配置文件中還有系統報警等可以自行了解這裡不做太多說明
5. 配置報警的幾種方式
重中之重就是監控進程或者是服務器的報警,我們一般會選擇/etc/monit.d/下面建立和監控的進程名一樣的文件,Monit會自動讀取解析,這裡先來介紹幾種常見的配置
按照PID進行監控
使用PID進行監控的基本上是一些程序組件比如Nginx,PHP-FPM,Supervisor,KafKa等,它們都會有一個共同點就是會有一個*.pid的文件來記錄系統進程標示,所以我們如下配置:
/etc/monit.d/nginx
<code>check process nginx with pidfile /var/run/nginx.pid #通過PID文件監控nginx start program "/etc/init.d/nginx start" #啟動程序 死亡自動啟動 stop program "/etc/init.d/nginx stop" #關閉程序 web界面可以操作/<code>
按照程序絕對命令
還有一種就是我們運行的腳本,不如運行了一個php index.php需要對它進行監控需要如下配置:
/etc/monit.d/phpindex
<code>check process taskEmail with MATCHING 'php index.php' # 通過命令獲取pid監控方式 if changed pid then alert/<code>
注意:這裡有過有多個命令都是php index.php會會出現問題
大家今天GET到了沒有啊,Monit在日常中可以在非常低的成本下幫助我們發現問題及時告知我們,並且還有一些簡單的web界面的配合,那麼今天就到這裡下一節將給大家介紹一個多服務器管理利器pssh,多謝大家的支持!
注:筆者能力有限有說的不對的地方希望大家能夠指出,也希望多多交流!
閱讀更多 文振熙後端技術 的文章