做运维时,很多时候需要重复地使用一些命令来获取系统的状态信息,这些事情很可能是周而复始,除非是有特殊的要求需要特殊对待。因为这个特点,本案例可以写一个傻瓜运维工具,通过运行这个脚本工具来查看想要的信息。
具体要求如下:
1)当执行脚本时,首先会打印出系统的几个状态值:系统时间、负载、CPU使用情况、内存使用情况、磁盘使用情况、网卡流量(5s内均值,需列出所有网卡);
2)然后会列出一个命令列表,用户只需打出对应数字,就可以执行相应命令;
3)列表中的功能有:
1.查看网站访问日志最后100行(假设该服务器上只有一个网站,访问日志路径 /data/logs/www.log);
2.查看mysql的慢查询日志最后50行(mysql慢查询日志路径 /data/mysql/slow.log);
3.查看php-fpm的慢查询日志最后50行(日志路径 /usr/local/php-fpm/logs/slow.log);
4.重启php-fpm服务;
5.重启nginx服务;
6.查看mysql队列,假如mysql密码是dR6wB1jzq ;
7.退出脚本。
参考脚本如下:
#!/bin/bash
#傻瓜运维脚本,根据列表输入数字即可实现对应功能
LANG=en
sar=`which sar |grep '/usr/bin/sar' |wc -l`
bc=`which bc |grep '/usr/bin/bc' |wc -l`
if [ $sar -ne 1 ]
then
yum install -y sysstat
fi
if [ $bc -ne 1 ]
then
yum install -y bc
fi
sar 1 5 > /tmp/cpu.log &
sar -n DEV 1 5 |grep '^Average:' > /tmp/net.log &
echo -n "收集数据中"
for i in `seq 1 5`
do
echo -n "."
sleep 1
done
echo
mysql_p="dR6wB1jzq" #数据库root密码
t=`date +"%F %T"`
load=`uptime |awk -F 'load averages?: ' '{print $2}' |cut -d '.' -f1` #5分钟CPU平均负载个位值
cpu_idle=`tail -1 /tmp/cpu.log |awk '{print $NF}'`
cpu_use=`echo "scale=2;100-$cpu_idle" |bc |sed 's/^./0./g'` #已用CPU百分比
mem_tot=`free -m |grep '^Mem:' |awk '{print $2}'`
mem_ava=`free -m |grep '^Mem:' |awk '{print $NF}'` #可用内存
net_status=`sed '1d' /tmp/net.log |awk '{print "网卡"$2":入口流量"$5/1000*8"Mbi,出网流量"$6/1000*8"Mbi"}'`
echo -e "\033[32m当前时间:$t \033[0m"
echo "###############"
echo -e "\033[31m当前负载:$load \033[0m"
echo "###############"
echo -e "\033[33mCPU使用率:$cpu_use% \033[0m"
echo "###############"
echo -e "\033[34m内存总数:$mem_tot"MB",内存剩余:$mem_ava"MB" \033[0m"
echo "###############"
echo -e "\033[35m磁盘空间使用情况: \033[0m"
df -h
echo "###############"
echo -e "\033[36m磁盘inode使用情况: \033[0m"
df -i
echo "###############"
echo -e "\033[32m$net_status \033[0m"
echo "###############"
get_acc_log()
{
tail -100 /data/logs/www.log
}
get_mysql_slow_log()
{
tail -50 /data/mysql/slow.log
}
get_php_slow_log()
{
tail -50 /usr/local/php-fpm/logs/slow.log
}
restart_php()
{
/etc/init.d/php-fpm restart
}
restart_nginx()
{
systemctl restart nginx
}
get_mysql_process()
{
mysql -uroot -p$mysql_p -e "show processlist"
}
PS3="请选择你想要做的操作:"
select c in 查看访问日志 查看mysql慢查询日志 查看php-fpm慢查询日志 重启php-fpm 重启nginx 查看mysql队列 退出
do
case $c in
查看访问日志)
get_acc_log
;;
查看mysql慢查询日志)
get_mysql_slow_log
;;
查看php-fpm慢查询日志)
get_php_slow_log
;;
重启php-fpm)
restart_php
;;
重启nginx)
restart_nginx
;;
查看mysql队列)
get_mysql_process
;;
退出)
echo $"Usage: $c 请使用:{1|2|3|4|5|6}"
exit 0
;;
*)
echo $"Usage: $1 请使用:{1|2|3|4|5|6}"
continue
;;
esac
done