1. 程式人生 > >monit 監控並自動重啟服務

monit 監控並自動重啟服務

Monit是一款功能非常豐富的程序、檔案、目錄和裝置的監測軟體,用於Unix平臺。 它可以自動修復那些已經停止運作的程式,特使適合處理那些由於多種原因導致的軟體錯誤。monit運行於應用層 安裝很簡單,三部曲 #./configure #make #make install 複製配置檔案 # cp monitrc /etc/monitrc 接下來我們根據實際情況來修改這個配置檔案 set daemon 120 # Poll at 2-minute intervals//每2分鐘檢查一次
set logfile /home/monit/log/monit.log          //monit的日誌檔案
set alert
[email protected]
with reminder on 1 cycle  //出現1次錯誤的時候發報警郵件到指定的郵箱
#set mailserver mail.tildeslash.com, mail.foo.bar port 10025, localhost with tim
eout 15 seconds
set mailserver 10.10.9.109    //設定郵件伺服器 set httpd port 2812 and use address 10.10.8.2 //設定http監控頁面的埠和ip
    allow localhost   # Allow localhost to connect //允許本機訪問
    allow 10.10.8.0/24                                            //允許此IP段訪問
    allow admin:nishiwode # Allow Basic Auth   //認證的使用者名稱和密碼 # all system                                                         //平均負載.記憶體使用率,cpu使用率
check system 10.10.8.2
   if loadavg (1min) > 4 then alert
   if loadavg (5min) > 2 then alert
   if memory usage > 75% then alert
   if cpu usage (user) > 70% then alert
   if cpu usage (system) > 30% then alert
   if cpu usage (wait) > 20% then alert # all disk                                                              //磁碟空間使用率
check device data with path /dev/sda2
   if space usage > 90% then alert
   if inode usage > 85% then alert check device home with path /dev/sda3
   if space usage > 85% then alert
   if inode usage > 85% then alert
# all rsync #10.10.8.2
check process sshd with pidfile /var/run/sshd.pid
start program "/etc/init.d/sshd start"
stop program "/etc/init.d/sshd stop"
if failed host 127.0.0.1 port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout //監控ssh服務
check process httpd with pidfile /var/run/httpd.pid
group apache
start program = "/etc/init.d/httpd start"
stop program = "/etc/init.d/httpd stop"
if failed host 127.0.0.1 port 80
protocol http then restart
if 5 restarts within 5 cycles then timeout
//監控http服務
//監控自定義服務
check process web_lb with pidfile /data/v20/server/web_lb/httpd.pid
    start program = "/data/v20/bin/lb.sh"  //啟動指令碼
    stop  program = "/data/v20/bin/lb_stop.sh" //停止指令碼
    if failed host 10.10.8.2 port 16101 proto http then restart
    if failed host 10.10.8.2 port 16101 proto http for 5 times within 5 cycles t
hen exec "/data/v20/bin/lb_pay.sh"
    if failed host 10.10.8.2 port 16102 type TCPSSL proto http then restart
    if failed host 10.10.8.2 port 16102 type TCPSSL proto http for 5 times withi
n 5 cycles then exec "/data/v20/bin/lb_pay.sh
RHEL可以用如下方法啟動monit
# vi /etc/inittab
新增:
mo:2345:respawn:/usr/local/bin/monit -Ic /etc/monitrc Now start monit:
# init -q或者# telinit -q
You can verify that monit is started from /var/log/message log file:
# tail -f /var/log/message
如果正常啟動能看到如下輸出:
Nov 21 04:39:21 server monit[8759]: Starting monit daemon
Nov 21 04:39:21 server monit[8759]: Monit started
 
最後可以測試一下,看看是否有讓你滿意的效果.