yohoPerformanceTestAuto_Mysql_InfluxDB.sh
5.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/bin/bash
if [ -f ~/.bash_profile ];
then
. ~/.bash_profile
fi
MYSQL_IP=192.168.104.43
MYSQL_PORT=3306
MYSQL_USERNAME=ypt
MYSQL_PASSWORD=123456
MYSQL_DBNAME=ypt
INFLUXDB_IP=192.168.104.43
INFLUXDB_DB=ypt
YPT_IP=192.168.104.43
basepath=$(cd `dirname $0`; pwd)
ip=$(/sbin/ip addr show | grep eth | grep inet | awk '{print $2}' | awk -F '/' '{print $1}')
#YPTLOCKPATH_USER=/Data/logs/jmeter/ypt.user.lock
#YPTLOCKPATH_RESULTID=/Data/logs/jmeter/ypt.resultId.lock
#RUNTIMELOG_PATH=/Data/logs/jmeter/runtime.log
function exeMysql(){
mysql -h${MYSQL_IP} -P${MYSQL_PORT} -u${MYSQL_USERNAME} -p${MYSQL_PASSWORD} ${MYSQL_DBNAME} --default-character-set=utf8 -e "$1"
}
function exeInfluxdb(){
curl -XPOST "http://${INFLUXDB_IP}:8086/write?db=${INFLUXDB_DB}" --data-binary "$1"
}
function exeYptInterface(){
curl -XPOST "http://${YPT_IP}:8080/ypt/machines/updateMachines" --data-binary "$1"
}
function uploadLoadInfo(){
tmp_file_path=/tmp/yohoPerformanceTestAuto_Mysql_Monitor.nmon
#生成1次nmon结果文件
${basepath}/nmon_linux_x86_64 -F ${tmp_file_path} -N -s 1 -c 1
sleep 2
#ip=$(/sbin/ifconfig | grep "inet "|grep -v "127.0.0.1" | awk '{print $2}' | awk '{print substr($0 , index($0 , ":")+1)}')
#ip=$(/sbin/ip addr show | grep eth | grep inet | awk '{print $2}' | awk -F '/' '{print $1}')
#cpu负载-1分钟
cpu_load=$(cat /proc/loadavg | awk '{print $1}')
#cpu使用率 %
cpu_ratio=$(awk -F ',' '$1=="CPU_ALL"&&$2=="T0001"{print 100-$6}' <${tmp_file_path})
#内存使用率 %
memory_ratio=$(awk -F ',' '$1=="MEM"&&$2=="T0001"{print ($3-$7)*100/$3}' <${tmp_file_path})
memory_ratio=$(echo $memory_ratio | awk -v n=$memory_ratio '{printf("%.2f", n)}')
#网络收发吞吐量 Mbps
net=$(awk -F ',' '$1=="NET"&&$2=="T0001"{max=$4;if($6>$4) max=$6;print max*8/1024}' <${tmp_file_path})
net=$(echo $net | awk -v n=$net '{printf("%.2f", n)}')
#磁盘IO 使用率 %
disk_busy=$(cat ${tmp_file_path} | grep DISKBUSY,T0001 | awk -F ',' '{max=0.0;for(i=3;i<=NF;i++) if($i>max) max=$i ;print max}')
#使用的端口号数量
#tcp_num=$(netstat -a | grep tcp | wc -l)
#获取服务器配置信息
hostname=$(hostname)
cpu_num=$(cat /proc/cpuinfo | grep processor | wc -l)
memory_total=$(cat /proc/meminfo | grep MemTotal | awk '{print int($2/1024/1024)==$2/1024/1024?$2/1024/1024:int(int($2/1024/1024*10/10+1))}')
#检查是否已经装好:java、svn、jmeter、gor、log_directory、
#last:检查jmeter是否已经启动,如未占用,清空占用者
#exeSqlStr=""
#username=""
#if [ -f ${YPTLOCKPATH_USER} ];then
#username=$(cat ${YPTLOCKPATH_USER})
#fi
#if [ "$ip" == "$MYSQL_IP" ];then
#username="CONSOLE"
#fi
#is_jmeter_running=0
#jmeterPsCount=$(ps -ef| grep -e "/opt/jmeter/bin/jmeter.*-n.*-t.*-X" -e "java -server -XX:+HeapDumpOnOutOfMemoryError.*-XX:+CMSClassUnloadingEnabled -jar /opt/jmeter/bin/ApacheJMeter.jar -n -t" -e "/opt/jmeter/bin/jmeter-server" -e "/opt/jmeter/bin/jmeter.*-Djava.rmi.server.hostname=" -e "java -server -XX:+HeapDumpOnOutOfMemoryError.*-jar /opt/jmeter/bin/ApacheJMeter.jar -Dserver_port=" | grep -v grep | wc -l)
#if [ $jmeterPsCount -gt 0 ];then
#is_jmeter_running=1
#exeSqlStr="UPDATE machines SET hostname=\"${hostname}\" , cpu=${cpu_num} , memory=${memory_total} , monitor_cpu_load=${cpu_load} , monitor_cpu_ratio=${cpu_ratio} , monitor_memory_ratio=${memory_ratio} , monitor_net=${net} , monitor_disk_busy=${disk_busy} ,is_jmeter_running=${is_jmeter_running} WHERE ip=\"${ip}\""
#else
#is_jmeter_running=0
#exeSqlStr="UPDATE machines SET hostname=\"${hostname}\" , cpu=${cpu_num} , memory=${memory_total},username=\"${username}\",monitor_cpu_load=${cpu_load} , monitor_cpu_ratio=${cpu_ratio} , monitor_memory_ratio=${memory_ratio} , monitor_net=${net} , monitor_disk_busy=${disk_busy} ,is_jmeter_running=${is_jmeter_running} WHERE ip=\"${ip}\""
#fi
#exeSqlStr="UPDATE machines SET hostname=\"${hostname}\" , cpu=${cpu_num} , memory=${memory_total} , monitor_cpu_load=${cpu_load} , monitor_cpu_ratio=${cpu_ratio} , monitor_memory_ratio=${memory_ratio} , monitor_net=${net} , monitor_disk_busy=${disk_busy} WHERE ip=\"${ip}\""
#exeSqlStr2=""
#resultId=0
#if [ -f ${YPTLOCKPATH_RESULTID} ];then
#resultId=$(cat ${YPTLOCKPATH_RESULTID})
#fi
#if [ -f ${RUNTIMELOG_PATH} -a $resultId -gt 0 ];then
#startTime=$(cat ${RUNTIMELOG_PATH} | grep "Starting the test" | awk -F '(' '{print $2}' | awk -F ')' '{print $1}')
#endTime=$(cat ${RUNTIMELOG_PATH} | grep "Tidying up remote" | awk -F '(' '{print $2}' | awk -F ')' '{print $1}')
#if [ "$startTime" != "" ];then
#startTime=$(echo ${startTime} | cut -c 1-10 | xargs -t -i date -d @{} "+%F %T")
#if [ "$endTime" = "" ];then
#exeSqlStr2="UPDATE test_result SET start_time=\"${startTime}\" WHERE id=${resultId}"
#else
#endTime=$(echo ${endTime} | cut -c 1-10 | xargs -t -i date -d @{} "+%F %T")
#exeSqlStr2="UPDATE test_result SET start_time=\"${startTime}\" , end_time=\"${endTime}\" WHERE id=${resultId}"
#fi
#exeMysql "$exeSqlStr2"
#fi
#fi
#上传到mysql
#exeYptInterfaceStr="hostname=${hostname}&cpu=${cpu_num}&memory=${memory_total}&monitor_cpu_load=${cpu_load}&monitor_cpu_ratio=${cpu_ratio}&monitor_memory_ratio=${memory_ratio}&monitor_net=${net}&monitor_disk_busy=${disk_busy}&ip=${ip}"
#exeMysql "$exeSqlStr"
#exeYptInterface "$exeYptInterfaceStr"
#上传到influxdb
exeInfluxdbStr="machine_info,ip=${ip} cpu_load=${cpu_load},cpu_ratio=${cpu_ratio},memory_ratio=${memory_ratio},net=${net},disk_busy=${disk_busy}"
exeInfluxdb "$exeInfluxdbStr"
}
#while true
#do
uploadLoadInfo
#sleep 7
#done