伊莉討論區

標題: [轉貼] 如何應用Linux監控遠端主機狀態,建立Alert機制 [打印本頁]

作者: c66a33    時間: 2016-7-5 10:18 AM     標題: [轉貼] 如何應用Linux監控遠端主機狀態,建立Alert機制

本帖最後由 c66a33 於 2016-7-5 10:18 AM 編輯

發佈日期: 2008/07/07
版本:Version1
發佈網址:http://blog.roodo.com/yungchingman
email:kayung@sparqnet.net
文章歡迎轉貼,轉貼時請註名出處。

前言
IT人員在公司裡面對使用者反應系統有問題不外兩種反應:
以下為對話情境:
1.User:公司Web不能連線是不是有問題?
  IT:是嗎?我檢查一下server,再回覆你。
2.User:mail不能收發,是不是有問題?
  IT:因為郵件伺服器有問題,我們正在處理,待兒就可使用了。
兩種情況我想大部分的User都會覺得第二種給他的感覺比較好
面對系統有問題IT人員能第一時間發現,並解決問題,不會讓User總是覺得IT人員慢半拍
因此本文將針對Serve狀態作監控,一有異常馬上通知系統管理者
本文適用:熟悉Linux Shell Script的IT人員
此監控程式將透過Linux主機以ping及namp監控遠端主機Service port的方式,每五鍾監控一次
若主機主機或service沒有回應,則通知管理者,若serivce恢復正常,則再通知管理者。
通知的方式有郵件、手機簡訊、Winpop
環境:
Linux Centos 5.0 + nmap + smbclient
要監控的主機為遠端的
File Server 10.1.1.3
Web Server  10.1.1.2


首先編輯一個script檔
內容如下:
!#/bin/bash

FILESRV=`ping -c1 10.1.1.3 |grep 10.1.1.3 |grep -c ttl`
FILESRV_status=`grep -c down /root/Filesrv-status`
#定義兩個變數,第一個變數為使用ping的方式ping主機,由回應值去判斷主機是否正常
#第二個變數為確認/root/Filesrv-status是否有down字串

if [ $FILESRV -eq 0 ] && [ $FILESRV_status -eq 0 ]
then
        mail -s "Fileserver down" kayung@sparqnet.net < /root/test
        echo 'Fileserver down' > /root/Filesrv-status

elif [ $FILESRV -eq 1 ] && [ $FILESRV_status -eq 1 ]
then
        mail -s "Fileserver live" kayung@sparqnet.net < /root/test
        echo > /root/Filesrv-status
fi

#接下來寫一個判斷式,如果第一、二個變數的結果皆為0,則表示主機已經無回應
#那麼就發mail主旨為filesrv down內容為空白的通知信通知管理者,/root/test的內容為空白
#並將 Fileserver down這個字串放到/root/FILESRV-status 若出現第一、二個變數皆為1
#則表示主機已經正常,那麼就發mail通知管理者,並將/root/Filesrv-status檔案清空。
#這樣我們就完成了一台主機的監控。
#接下來我們要監控第二台主機Web Server

WEB=`nmap 10.1.1.2 -p 80 |grep -c '80/tcp open' `
WEB_status=`grep -c down /root/WEB-status`

#同樣定義兩個變數,第一個變數是用nmap去判斷Web Server主機的80 port是否有通,
#第二個變變數是確認/root/WEB-status是否有down字串

if [ $WEB -eq 0 ] && [ $WEB_status -eq 0 ]
then
        mail -s "WEB Server web service down" kayung@sparqnet.net < /root/test
        echo 'WEB Server web service down' > /root/WEB-status

elif [ $WEB -eq 1 ] && [ $WEB_status -eq 1 ]
then
        mail -s "WEB Server web service live" kayung@sparqnet.net < /root/test
        echo > /root/WEB-status
fi

#以上的判斷式跟上面的大同小異,只是把發mail的內容換成Web主機


到這邊這個script就好了,我們將他們命名為detect.sh,放於/root/
然後在/root/裡新增兩個檔案
touch Filesrv-status WEB-status,作為detect.sh裡的變數判斷檔案
在/etc/crontab 新增以下字串
*/5 * * * * root /root/detect.sh

剛剛談到的是使用郵件的通知,那像windwos的 net send方式通知如何作
因為Linux裡沒有net send這個指令,不過我們可以使用Samba-client這個套件裡的幾個指令達成
系統需安裝samba-client

yum install samba-client

裝完編輯一個script檔
內容為
#!/bin/bash

case "$1" in
    send)
        echo "$3"|smbclient -I "$2" -M `nmblookup -A "$2"|sed -e '1d' -e '3,/*/d'|cut -f2|cut -d' ' -f1`
        ;;
    *)
        echo "Usage:net send  "
        exit 1
esac   

我們將它存檔為msg
現在我們可以用這個指令加send來送訊息到windows,不過前提是windwos xp 要將messenger這個service開啟
只要輸入 msg send 10.1.1.5 "hello world"就可以將hello world這個訊息送到10.1.1.5這個windows主機
所以運用以下方式我們可以將它加入至detect.sh這個script作為通知使用。

再來我們來談一下手機簡訊如何作
手機簡訊目前我瞭解是很多種作法,我這提兩種作法
第一種:就是利用郵件發到一特定的email,郵件內容就包含帳號密碼及要送至的手機號碼及簡訊內容
第二種:透過程式跟遠端的主機溝通,將要送的訊息傳給程式
以上兩種方式我都用過,第一種方式請參考http://www.twsms.com/
本文是使用第二種方式,就是hinet企業簡訊
參考網址http://sms.hinet.net/new/sent_program.htm


結論
系統監控Alert在商用軟體裡不乏相關功能,像whatup..等,本文只是基本的應用,實際更多的應用留待讀者去發掘,Linux的優點就是彈性,只是我們要花更多時間去熟悉其系統運作,本文的監控系統希望能讓系統管理者在系統出現異常時能第一時間即時反應,減少downtime時間,讓處理效率更好。




作者: hoare    時間: 2016-8-4 12:05 AM

提示: 作者被禁止或刪除 內容自動屏蔽
作者: kenaaakimo    時間: 2017-7-17 04:58 PM

可以參考Cacti,目前蠻多plugin,可以達成許多監控的需要。
作者: gscsale    時間: 2017-7-25 08:48 AM

感覺蠻復雜的..不過LIUNX 真的很好玩..值得研究
作者: ROCK8    時間: 2018-2-1 04:43 PM

= =該說啥...glances 可以符合你的需求....
作者: 54jocker    時間: 2018-4-22 09:24 AM

感覺複雜又好有趣,來去分享器玩玩看




歡迎光臨 伊莉討論區 (http://www76484.eyny.com/) Powered by Discuz!