您的位置:首页 > 其它

线上日志分析与其他一些脚本

2016-01-29 11:11 471 查看
对一些线上常用的脚本进行了一下总结和说明,免得以后忘记了~

一·线上发布API集群的代码脚本:

#!/bin/bash
#Author CCC

host='
10.44.22.113
10.44.22.113
10.44.22.112
10.44.22.112
10.44.22.113
10.44.22.113
10.44.22.114
10.44.22.114
10.44.22.115
10.44.22.115
10.44.22.119
10.44.22.119
'
#basePath='/var/www'--------------------定义要发布的文件路径
basePath='/root/xxxx/2016-01-27'----------定义源文件的路径
check_port()---------检查端口已经已经起来了。
{

ss=0;
count=0;

ip=$2;
port=$1;
for ((i=0;i<120;i++))
do
#    $((count++))
if [[ -n $(ssh $ip "netstat -ntlp | grep $port") ]]
then
ss=1;
break;
else
ss=0;
fi
sleep 1
done

return $ss;

}

check_return()---------检查返回内容
{
if [[ "$1" == "0" ]]
then
echo $2
exit
fi
echo $2
host_ip=""
}

sed -i "s/HEAP_MAX=2g/HEAP_MAX=6g/g" $basePath/query/bin/properties/jvm.properties------------------------修改一些JVM参数,因为目前打包是公共打包,参数可能配置不准确
sed -i "s/PERM_SIZE=128m/PERM_SIZE=256m/g" $basePath/query/bin/properties/jvm.properties
sed -i "s/HEAP_INIT=2g/HEAP_INIT=6g/g" $basePath/query/bin/properties/jvm.properties
sed -i "s/YOUNG_GEN_SIZE=256m/YOUNG_GEN_SIZE=4g/g" $basePath/query/bin/properties/jvm.properties
for i in $host--------------循环进行每台机器的发布
do
echo "deploy $i"
ssh -o StrictHostKeyChecking=no $i "source /etc/profile;sh /var/www/query/bin/stop.sh"
rsync -e "ssh -o StrictHostKeyChecking=no" -av  $basePath/query $i:/var/www/ --delete >> /dev/null 2>&1
ssh -o StrictHostKeyChecking=no $i "source /etc/profile;sh /var/www/query/bin/restart.sh"
check_port 82 $i
check_return $? $i
sleep 10

done


二、线上GET方式查看API集群中API的返回结果:

#!sbin/bash
#author CCC

providers="`cat server_ip`" ----------找到同目录底下的ip列表

for host in $providers
do

RESULT=`curl 'http://'$host':82/productapi/xxxxxxx?bbb=23451243&22=1'` ----------循环执行命令和请求
echo $host    $RESULT ------打印日志

done


三、查看服务器列表的时间,与上一个相似:

#!sbin/bash
#author CCC

providers="`cat server_ip`"

for host in $providers
do
ssh -o StrictHostKeyChecking=no $host "date"
done


四、集群日志分析与返回,是个用的比较多的脚本 *****:

#!/bin/bash
#Author CCC

host=' -----------host列表
10.44.44.211
10.44.44.211
10.44.44.211
10.44.44.211
10.44.44.211
10.44.44.211
10.44.44.211
10.44.44.211
10.44.44.11
10.44.44.11
10.44.44.11
10.44.44.11
10.44.44.11
10.44.44.11
10.44.44.11
10.44.44.11
10.44.44.11
10.44.44.11
10.44.44.11
10.44.44.11
10.44.44.11
10.44.44.11
10.44.44.11
10.44.44.11
'
for i in $host
do
echo "deploy $i"
# ssh $i 'grep "java.net.UnknownHostException: xxxxxxxxx.idc2" /d1/joblog/query/dailylog.2015-12-18_09|awk "{print NR==1}"' ------------查到每台机器上面的xx目录下这个错误的内容,并且找到第一列的内容打印
# ssh $i "grep find_gift /d1/joblog/query/accesslog.2015-12-30|grep 20633051|awk '{if(\$NF>200){print \$0}}'" ----找到每个机器上面find_gift接口中商品id是20633051的接口返回时间大于200ms的内容并打印
# ssh $i "grep find_xxx_lighter  /d1/joblog/query/accesslog.2016-01-12_19|grep 20633051|awk '{print \$NF}'|sort|uniq -c"----找到xxxx接口中内容包含20633051商品的返回时间(最后一列)排序并计数
# ssh $i "grep product.php /d1/joblog/query/dailylog.2015-12-28*|awk '{print \$NF}'|tr -d ms|sort|uniq -c" ----找到product.php的响应时间,替换到ms关键词,排序计数
ssh $i "grep promo_product /d1/joblog/query/accesslog.2016-01-24|grep 20260420|wc -l"----同上上
#  ssh $i "grep 'Request:' /d1/joblog/query/dailylog.2016-01-05*|grep 'Use time:'|awk {'print \$NF'}|tr -d ms|awk '{if(\$1>500){print \$1}}'|wc -l"----找到外部请求超过500ms的接口并计数
# ssh $i "sed -n '/^10:00:/','/^10:20:/p' /d1/joblog/query/accesslog.2016-01-13| grep find_lighter|awk '{print \$NF}'|sort|uniq -c"----找到日志在10点到10点20之间lighter接口的响应时间
done


五、全量清理Redis:

host='
10.66.66.66
10.66.66.66
10.66.66.66
10.66.66.66
10.66.66.66
10.66.66.66
10.66.66.66
'
ports='
8279
8379
8479
8579
'
for h in $host
do
for p in $ports
do
/usr/local/bin/redis-cli -h $h -p $p FLUSHALL
sleep 10
done
done


六、整理内容发邮件:

DATE=`date -d "-1 hour" +%Y-%m-%d_%H_%M`  -------时间定义
cd /root/analyze -------目录
python query.py > /root/analyze/result_$DATE.txt----运行python脚本并输出到文件中
mail -s "aaaaa Statistics @ $DATE" aaaaaaaaaaa@qq.com < /root/analyze/result_$DATE.txt ---发送邮件


七、项目整体发布脚本:

#!bin/bash
#author CCC

cd /home/cxht/svn/cxht/XXXXX-parent  -----------更新代码与打包
svn update
#/home/cxht/apache-maven-3.2.1/bin/mvn -e -U clean install package -Dmaven.test.skip=true
cd /home/cxht/svn/cxht/XXXXX-parent/XXXXX-package
/home/cxht/apache-maven-3.2.1/bin/mvn -e -U clean install -Dmaven.test.skip=true
/home/cxht/apache-maven-3.2.1/bin/mvn package

kill -9 `ps -ef|grep /home/cxht/tomcat|grep -v grep|awk '{print $2}'`   ---------杀掉tomcat进程
ps -ef|grep java|grep /var/www/YYYYY/|awk '{print $2}'|xargs -i kill -9 {} ---------杀掉其他main方法方式运行的程序
rm -fr /var/www/YYYYY/* --------删除所有代码

cd /var/www/YYYYY/

find  /home/cxht/svn/cxht/XXXXX-parent/* -name *.gz|xargs -i tar -xvf {} ----------找到所有的gz包解压
unzip /home/cxht/svn/cxht/XXXXX-parent/XXXXX-web/target/XXXXX-web.war -d /var/www/YYYYY/XXXXX-web --------解压war包
unzip /home/cxht/svn/cxht/XXXXX-parent/XXXXX-event-maker/target/XXXXX-event-maker-bin.zip -d /var/www/YYYYY/XXXXX-event-maker

#change jvm memory size ------------设置 一些jvm的属性
sed -i "s/HEAP_INIT=2g/HEAP_INIT=512m/g" `find /var/www/YYYYY/* -name jvm.properties`
sed -i "s/HEAP_MAX=2g/HEAP_MAX=1g/g" `find /var/www/YYYYY/* -name jvm.properties`

#start ------重启

find /var/www/YYYYY/* -name restart.sh|xargs -i sh {}
sh /home/cxht/tomcat/bin/startup.sh
sh /var/www/YYYYY/XXXXX-event-maker/XXXXX-event-maker/bin/main.sh restart
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: