有一堆作爲hadoop堆棧的一部分運行的服務;需要一個簡單的CLI腳本來檢查各種過程,併爲最終用戶提供簡單的輸出。腳本(當前bash) - 快速檢查其他主機集羣上的各種進程狀態
將有超過50個主機;以及每個主機需要檢查的大約10個服務。
當前用bash編寫;我喜歡輸出,但代碼是slllloooowww,因爲它檢查每個進程; 1通過無密碼的ssh和pgrep。
尋找建議或提示使其更快。
即:
Hostname | IP | Ping | SSH | Zookeeper | Namenode | Datanode
localhost | 127.0.0.1 | online | online | _ | _ | _
node1 | 172.30.50.150 | online | online | _ | _ | _
dn1 | 10.142.0.100 | online | online | online | online | online
示例代碼:
fun_datanode() {
zup=`ssh $1 "ps ax | grep -v grep | grep datanode | wc -l"`
if [ $zup -gt 0 ]; then
dn=online
else
dn="_"
fi
}
#main
#main loop that reads host file
for host in `awk '/^[0-9]/ { print $1 }' /etc/hosts`
do
#ping
fping -c1 -t10 -n $host > /dev/null 2>&1
RETVAL=$?
hname=`getent hosts $host | awk '{print $2 }'`
if [ $RETVAL -eq 0 ]; then
if ssh $host 'pgrep ssh' > /dev/null 2>&1; then
ssh=online
fun_zookeeper $host
fun_namenode $host
fun_datanode $host
fi
fun_print "$hname $host "online" $ssh $zoo $nn $dn"
echo
else
fun_print $hname $host "${red}offline${norm}" "_" "_" "_" "_"
echo
fi
done
你是對的,Cloudera經理或Ambari可能是一個更好的選項,專門監測Hadoop集羣。 – Tagar
有沒有CLI utils?這些監視應用程序中的大多數都是基於GUI和Web的極其痛苦的REST API,用於檢查進程狀態的簡單任務。 Amabari和CM特別接管了enitre安裝,並且不再允許您直接編輯配置文件並要求通過Web層進行的所有更改。 – zerobane
我們使用CM和so-o-o比手動編輯文件方便得多。監控也隨之而來。 – Tagar