有个需求,要在测试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 $HBASE_HOME/conf/regionservers|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 $HBASE_HOME/conf/regionservers|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