1. 程式人生 > 其它 >[喵咪Liunx(4)Monit程序監控

[喵咪Liunx(4)Monit程序監控

[喵咪Liunx(4)Monit程序監控

前言

有一段時間沒有更新部落格了,最近因為公司專案全球化以及最近慢慢在偏向學習團隊管理忙的有點不可開交了,不過這次要給大家帶來兩篇關於Liunx日常開發維護管理中非常好用的兩款利器,其中一個就是Monit啦,Monit是什麼呢?他是一個程序級別的一個監控軟體,不賣關子我們就進入到今天的正文當中吧!

附上:

喵了個咪的部落格:w-blog.cn

Monit官網地址:https://www.mmonit.com/monit/documentation/monit.html

1. 問題

在我們平時研究一樣東西或者說遇到一項困難時我們會更具問題來尋找解決方案,那就看待Monit之前就要先了解遇到了什麼問題?

Nginx掛啦~~~~

筆者就是有意思客戶反映到領導那裡去了,你們平臺怎麼用不了了?,最後一查居然是Nginx死掉了~~死掉的時候是下午5點完成8點才收到反饋,使用者不反饋就算等到明天可能還不知道!

指令碼死了

Liunx開篇推薦的軟體Supervisor可以幫助你執行指令碼或者說軟體,但是執行的軟體預設連續過快退出三次就結束了,這個時候你怎麼知道沒有運行了?

2. Monit能搞定嗎?

Monit的核心功能就是郵件通知,當你配置好需要監控的程序之後,無論是程序死亡,或者是程序變更都會發送報警郵件並且會更具你的預先配置好的命令嘗試重啟它,更牛逼的事當monit被關閉的時候也會發送郵件通知Moint被關閉,並且它還可以完成如下功能!

附加功能

比如你不是用的雲伺服器自己管理的機器,但是機器數量又沒有特別多沒有到要搭建一套完整的監控系統的份上(zabbix或open-falcon)的份上Monit可以比較好的幫你低成本的解決這個問題

web管理

可以用過web介面監控服務的資源佔用,開始,暫停,重啟等.

3. 安裝Monit

這裡筆者還是使用的centos6.5進行安裝,只需要簡單的yum一下即可

yum install monit

然後通過service命令就可以開關monit了

service monit start
service monit stop

4. 配置檔案解讀

使用monit最重要的就是設定好配置檔案,具體的可以在官方文件檢視這裡只說幾個重要的

# 檢查時間預設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訪問配置 預設埠號2812
set httpd port 2812 and                                                                                            
    use address {能訪問到的外網地址}                                             
    allow 0.0.0.0/0  #限制的請求IP                                     
    allow admin:monit  #登入使用者名稱密碼

基本配置就完成了,如果配置正確我們就會有道一封Monit啟動的郵件

monit alert -- Monit instance changed {主機名}

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

並且能夠通過配置好的web埠訪問得到如下介面(一下是配置好監控項才會有的)

注意:配置檔案中還有系統報警等可以自行了解這裡不做太多說明

5. 配置報警的幾種方式

重中之重就是監控程序或者是伺服器的報警,我們一般會選擇**/etc/monit.d/**下面建立和監控的程序名一樣的檔案,Monit會自動讀取解析,這裡先來介紹幾種常見的配置

按照PID進行監控

使用PID進行監控的基本上是一些程式元件比如Nginx,PHP-FPM,Supervisor,KafKa等,它們都會有一個共同點就是會有一個*.pid的檔案來記錄系統程序標示,所以我們如下配置:

/etc/monit.d/nginx

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介面可以操作

按照程式絕對命令

還有一種就是我們執行的指令碼,不如運行了一個php index.php需要對它進行監控需要如下配置:

/etc/monit.d/phpindex

check process taskEmail with MATCHING 'php index.php'  
# 通過命令獲取pid監控方式                                                                                                              
if changed pid then alert

注意:這裡有過有多個命令都是php index.php會會出現問題

6. 總結

大家今天GET到了沒有啊,Monit在日常中可以在非常低的成本下幫助我們發現問題及時告知我們,並且還有一些簡單的web介面的配合,那麼今天就到這裡下一節將給大家介紹一個多伺服器管理利器pssh,多謝大家的支援!

注:筆者能力有限有說的不對的地方希望大家能夠指出,也希望多多交流!