功能简单描述:
客户端(222.73.250.228) crontab每5分钟调用getdata.sh 把生成本机服务器信息,保存在data.properties文件
服务端(222.73.250.153) crontab每5分钟调用aaab把客户端的data.properties文件scp到服务端,并通过java代码解析
注:机器自动scp文件,省去密码输入,需要配置sra密钥
参考:linux sra密钥 (服务器之间交互不需要输入密码)
服务端目录结构
/root/synch
|--data
| --data-222.73.250.228.properties //复制过来的客户端信息,
| --data-222.73.250.*.properties //如果有多个客户端,则多个
|--lib //java所需jar包
|--logs
| --synchLogs
| --serverSynch.log
|--serverSynch.sh
|--synch.jar //java 功能jar包
|--synchLogs
| --serverSynch.log
客户端目录结构
/root/client
|--data
| --data.properties
| --getdata.log
|--getdata.sh
|--get.pl
服务端文件
1.serverSynch.sh
#bin/bash
LOGFILE="/root/synch/logs/getdatalog.log"
echo "Starting getdata for `date`" >> "$LOGFILE"
DIR="/root/synch/data/"
SERVER228="222.73.250.228"
#SERVER37="192.168.10.37"
RDIR="/root/client/data"
cd "$DIR"
echo "getdata from $SERVER228" >> "$LOGFILE"
scp -r root@$SERVER228:$RDIR/data.properties data-$SERVER228.properties
#echo "getdata from $SERVER31" >> "$LOGFILE"
#scp -r root@$SERVER31:$RDIR/data.properties data-$SERVER31.properties
echo -e "Complete getdata `date` SUCCESS\n" >> "$LOGFILE"
cd /root/synch/
echo -e "begin to synch 31 data to DB ...\n" >> "$LOGFILE"
/usr/jdk1.6.0_22/bin/java -cp .:./synch.jar:./lib/c3p0-0.9.1-pre9.jar:./lib/commons-lang.jar:./lib/commons-logging.jar:./lib/hessian-3.0.13.jar:./lib/jdom.jar:./lib/jtds-1.2.jar:./lib/junit.jar:./lib/log4j-1.2.8.jar:./lib/nlscharset12.jar:./lib/ojdbc14.jar:./lib/servlet.jar:./lib/spring-aop.jar:./lib/spring-beans.jar:./lib/spring-core.jar:./lib/spring.jar:./lib/standard.jar:./lib/commons_t2cn.jar com.t2cn.synch.StartSynch $SERVER228
#echo -e "begin to synch 37 data to DB ...\n" >> "$LOGFILE"
#/usr/jdk150/bin/java -cp .:./synch.jar:./lib/c3p0-0.9.1-pre9.jar:./lib/commons-lang.jar:./lib/commons-logging.jar:./lib/hessian-3.0.13.jar:./lib/jdom.jar:./lib/jtds-1.2.jar:./lib/junit.jar:./lib/log4j-1.2.8.jar:./lib/nlscharset12.jar:./lib/ojdbc14.jar:./lib/servlet.jar:./lib/spring-aop.jar:./lib/spring-beans.jar:./lib/spring-core.jar:./lib/spring.jar:./lib/standard.jar:./lib/commons_t2cn.jar com.t2cn.tester.StartSynch $SERVER37
echo -e "Complete synch data to DB --- `date` SUCCESS\n---------------------------------------------------------------------" >> "$LOGFILE"
客户端文件
1.getdata.sh
#/bin/bash
LOGFILE="/root/client/data/getdata.log"
#echo $LANG
#export LANG=zh_CN.GBK
#echo 'path0-->'$PATH
source /root/.bash_profile
#export PATH=/usr/bin:/bin:/usr/sysstat-10.0.3
#echo 'path1-->'$PATH
DIR="/root/client/data/"
echo -e "Begin to getdata\n">>"$LOGFILE"
cd "$DIR"
#/root/client/get.pl >/root/client/data/data-192.168.10.37-`date +%Y-%m-%d-%H-%M`.properties
/root/client/get.pl >/root/client/data/data.properties
echo -e "Complete getdata `date` SUCCESS\n--------------------------------------------" >>"$LOGFILE"
2.get.pl
#!/usr/bin/perl
#INFO
print("SERVER_IP=222.73.250.228","\n");
print("SERVER_NAME=friends","\n");
print("SERVICE_ID=1","\n");
print("DRISTRICT_ID=3","\n");
print("PROCESS_NUM=1","\n");
#print("lang_ ",$LANG);
#PROCESS
print "\n#PROCESS\n";
$process=` ps auxf |grep tomcat_login |grep root |grep Xmx1024m |grep -v grep`;
#$process=` ps -auxf |grep tomcat_login |grep root |grep Xmx1024m |grep -v grep`;
#process=` ps -auxf |grep proxy_1 |grep root |grep Xmx256m |grep -v grep`;
@array = split(/ +/,$process);
print ("USER_1=" , @array[0] , "\n");
print ("PID_1=" , @array[1] , "\n");
print ("%PCPU_1=" , @array[2] , "\n");
print ("%MEM_1=" , @array[3] , "\n");
#print ("COMMAND_1=" , @array[10] , "\n");
print("PROCESS_NAME_1=friends","\n");
print("PROCESS_DESC_1=friends","\n");
#mem
print "\n#mem\n";
$mem=` free |grep Mem`;
@array = split(/ +/,$mem);
print ("memtotal=" , @array[1] , "\n");
print ("memused=" , @array[2] , "\n");
print ("memfree=" , @array[3] , "\n");
$swap=` free |grep Swap`;
@array = split(/ +/,$swap);
print ("swaptotal=" , @array[1] , "\n");
print ("swapused=" , @array[2] , "\n");
print ("swapfree=" , @array[3] , "\n");
#CPU
print "#CPU\n";
$cpu=` sar -u 2 5 |grep 平均时间`;
#$cpu=` sar -u 2 5 |grep Average`;
#$cpu1=` sar -u 2 5`;
#$cpu2=` sar -u 2 5 |grep 平均时间`;
#print ("cpu1=" , $cpu1 , "\n");
#print ("cpu2=" , $cpu2 , "\n");
@array = split(/ +/,$cpu);
print ("%cpu=" , @array[2] , "\n");
print ("%iowait=" , @array[5] , "\n");
#disk
print "\n#disk\n";
$ret = `df | grep -v Filesystem`;
$ret =~ s/($ARGV[0])(.* )(.*[0-9])(.* )(.*[0-9])(.* )(.*[0-9])(.* )(.*[0-9])%(.* )//;
print "total=$3\n";
print "used=$5\n";
print "free=$7\n";
print "percent=$9%\n";
#ping
print "\n#ping\n";
#$ping = `ping -c 1 222.73.250.228 | grep icmp_seq`;
#$ping =~ m/(.*time=)(.*) (ms|usec)/;
#print "time=$2\n";
print "time=0\n";
#watch_time
print ("WATCH_TIME=" , `date +%Y-%m-%d\\ %T`);