定時獲取linux服務器信息

功能簡單描述:

客戶端(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`);


 

 

發佈了23 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章