公司的tomcat服務器java虛擬機運行不穩定,爲了安全考慮,安裝monit自監控。
Monit是一款功能非常豐富的進程、文件、目錄和設備的監測軟件,用於Unix平臺。它可以自動修復那些已經停止運作的程序,特使適合處理那些由於多種原因導致的軟件錯誤。服務能“死而復生”。
官網 http://mmonit.com/monit/documentation/monit.html
一、安裝
#tar -zxvf monit-5.8.1.tar.gz
#cd monit-5.8.1
#./configure --prefix=/usr/local/monit \
--without-pam \
--sysconfdir=/usr/local/monit/etc
#make&make install
#cp -a monit-5.8.1/monitrc /usr/local/monit/etc
#chmod 700 /usr/local/monit/etc/monitrc
二、配置文件
#vim /urs/local/monit/etc/monitrc
set daemon 300 #設置多少時間監測一次,單位爲秒
set logfile /usr/local/monit/log/monit.log #設置日誌文件位置
set mailserver smtp.xxxxx.com USERNAME "" PASSWORD "" #設置報警郵箱
set mail-format { from: 任意取名@域名 } #設置報警郵件格式,則收到的報警都是來自任 意取名@域名 這個郵箱
set alert 接收報警郵件的郵箱 #設置接收報警郵件的郵箱、有多個的話相同格式另取一行。
set httpd port 2812 and
use address 本機ip # only accept connection from localhost
allow ip(能訪問的ip) # allow localhost to connect to the server
allow admin:ccmonit # require user 'admin' with password 'monit'
allow @monit # allow users of group 'monit' to connect (rw)
allow @users readonly # allow users of group 'users' to connect readonly
#自監控tomcat
check host tomcat with address ip(本機ip)
start program = "/usr/local/tomcat/bin/catalina.sh start"
stop program = "/usr/local/tomcat/bin/shutdown.sh"
if failed
port 80
protocol http
request "/test/time.jsp" #時間測試頁面
then restart
if 4 restarts within 4 cycles then unmonitor #如果連續重啓4次都不能啓動tmcat則停止重啓
三、測試頁
#cd /usr/local/tomcat/webapps/
#mkdir test
#cd test
#vim time.jsp (顯示系統當前時間)
<HTML> <HEAD> <SCRIPT LANGUAGE="JavaScript"> function gettime(){ var d = new Date(); document.getElementById("t").innerHTML =d; window.setTimeout("gettime()",1000); } window.onload = gettime; </SCRIPT> </HEAD> <BODY> <div id="t"> </div> </BODY> </HTML>
訪問http://ip/test/time.jsp驗證
四、monit init腳本
#!/bin/bash # # Init file for Monit # # # chkconfig: - 80 20 # description: monit daemon # # processname: monit source /etc/rc.d/init.d/functions ### Default variables CONFIG="/usr/local/monit/etc/monitrc" [ -x /usr/local/monit/bin/monit ] || exit 1 [ -r "$CONFIG" ] || exit 1 bin_path=/usr/local/monit/bin RETVAL=0 prog="monit" desc="Monit daemon" start() { echo -n $"Starting $desc ($prog): " daemon $bin_path/$prog -c "$CONFIG" RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog return $RETVAL } stop() { echo -n $"Shutting down $desc ($prog): " killproc $prog RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog return $RETVAL } restart() { stop start } reload() { echo -n $"Reloading $desc ($prog): " killproc $prog -HUP RETVAL=$? echo return $RETVAL } case "$1" in start) start ;; stop) stop ;; restart) restart ;; reload) reload ;; condrestart) [ -e /var/lock/subsys/$prog ] && restart RETVAL=$? ;; status) #status $prog $bin_path/$prog status RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" RETVAL=1 esac exit $RETV
五、管理進程
#service monit monitor name|all 啓動對某服務|所有服務的監控
#service monit unmonitor name|all 關閉對某服務|所有服務的監控
#service monit start name|all 啓動某服務|所有服務
#service monit stop name|all 關閉某服務|所有服務
#service monit status 顯示監控的服務狀態