8. 傻瓜运维工具

做运维时,很多时候需要重复地使用一些命令来获取系统的状态信息,这些事情很可能是周而复始,除非是有特殊的要求需要特殊对待。因为这个特点,本案例可以写一个傻瓜运维工具,通过运行这个脚本工具来查看想要的信息。

具体要求如下:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值