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
相關文章
- 用自動化運維工具解放IT運維運維
- 運維監控工具運維
- MySQL基礎運維——percona-toolkit運維工具MySql運維
- 【IT運維】運維告警方式有哪些?哪個工具好用?運維
- redis工具擴容收縮運維工具Redis運維
- linux運維工具psshLinux運維
- Redis效能分析和運維工具Redis運維
- 這 4 種 Redis 常用運維工具都不會?你算啥運維人Redis運維
- 簡化IT運維工作,就要學會使用自動化運維工具!運維
- Linux運維人員必會開源運維工具體系Linux運維
- 運維自動化工具對比運維
- Ansible自動化運維工具運維
- 【IT運維監控】幾大運維監控工具優缺點介紹運維
- 運維工程師核心工作是什麼?用什麼運維工具好?運維工程師
- 10大HBase常見運維工具整理運維
- 自動化運維工具之Puppet模組運維
- GaussDB(DWS)運維利刃:TopSQL工具解析運維SQL
- 多伺服器運維管理皮膚工具伺服器運維
- 用萬能命令工具玩轉IT智慧運維運維
- Istio的運維-診斷工具(istio 系列五)運維
- 自動化運維工具Ansible介紹運維
- 運維相關環境與工具掃盲運維
- Linux運維比較實用的工具Linux運維
- 自動化運維工具SaltStack詳細部署運維
- 2017年Linux運維人員必會開源運維工具和體系Linux運維
- 2017年Linux運維人員必會開源運維工具體系薦Linux運維
- IT運維之自動化運維運維
- 工具化、產品化、運營化—「美團點評」運維的故事運維
- 自動化運維工具ansible的實踐運維
- Linux運維工程師必備工具合集Linux運維工程師
- 自動化運維工具——ansible詳解(一)運維
- 自動化運維工具——ansible詳解(二)運維
- Linux - 運維管理工具 - 1PanelLinux運維
- 工作中Redis有哪些好用的運維工具Redis運維
- sed、awk——運維必須掌握的兩個工具運維
- Linux下效能除錯工具運維筆記Linux除錯運維筆記
- 自動化運維工具Saltstack學習筆記運維筆記
- 自動化運維工具Ansible詳細部署運維