有个需求,要在测试Hadoop上部署一个系统性能收集系统,结合了hadoop本身的sshkeygen特点,走了ssh协议,不建议在生产hadoop上部署,网络代价太大了。
下面是脚本内容。
可能会需要dstat-0.7.2-1.el5.rfx.noarch.rpm
部署时先执行init.sh
再修改allserver-collect.sh 的$HADOOP_HOME和dstat命令参数,现在的参数可是只输出时间的。
最后添加* * * * * ~/monitor/allserver-collect.sh >/dev/null </dev/null 2>&1
到crontab
cd ~/monitor
cat init.sh
#!/bin/sh
mkdir ~/monitor
for i in `cat $HADOOP_HOME/conf/masters $HADOOP_HOME/conf/slaves|uniq` ;do
mkdir ~/monitor/$i
ssh $i "mkdir ~/monitor/"
#scp dstat-0.7.2-1.el5.rfx.noarch.rpm $i:~/monitor
#ssh $i "rpm -Uvh dstat-0.7.2-1.el5.rfx.noarch.rpm"
ssh $i "nohup dstat -t --output ~/monitor/dstat.log 60 >/dev/null </dev/null 2>&1 &"
done
cat allserver-collect.sh
#!/bin/sh
#crond add "* * * * * ~/monitor/allserver-collect.sh >/dev/null </dev/null 2>&1 "
HADOOP_HOME="$HADOOP_HOME"
serverlist=`cat $HADOOP_HOME/conf/masters $HADOOP_HOME/conf/slaves|uniq`
dstat_log="~/monitor/dstat.log"
for i in `echo $serverlist` ;do
ssh $i "tail -n 1 $dstat_log">>~/monitor/$i/$i.dstat.log
done
更多Hadoop相关信息见Hadoop 专题页面 ?tid=13