linux-shell指令碼,監控nginx,tomcat,redis,php-cli,磁碟狀態
郵件配置:
[[email protected] sh]# which mail
/bin/mail
You have new mail in /var/spool/mail/root
[[email protected] sh]#
從上面的命令看,系統已經安裝了mail,對些我們還需要設定一下mail,讓它使用外面的郵箱進行發郵件。設定檔案是 /etc/mail.rc
我使用的是公司代理的郵箱,已經開啟了smtp服務的了,如其他郵箱自行開啟就行了
只需要在 /etc/mail.rc 最後新增兩行即可,如下
set [email protected]
set smtp=smtp.exmail.qq.com
set
set smtp-auth-password=你的郵件密碼smtp的哦,如果是126等的要開通smtp功能
set smtp-auth=login
溫馨提示:mail -s title [email protected] [email protected] < /sh/abc.log 可以傳送多個使用者哦
然後用crontab來啦,crontab 預設是分鐘為單位的,所以需要在shell裡面迴圈,做到秒級咯!
**
Tomcat秒級監控和nginx分鐘監控:
**
#/bin/sh
#auth yangxingyi 2017-04-28 10:02
#email [email protected]
#update 2017-09-05 optimize second,2017-09-21 add nginx status
#version 1.2
webIp="www101.200.196.146"
nginxStatus=$(ps -ef|grep /usr/local/nginx/sbin/nginx|wc -l)
if [ "$nginxStatus" -ge "2" ]
then
echo "$(date) nginx is healthy" >> /sh/nginx.log
else
echo "$(date) down" >> /sh/nginx.log
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf&
echo "{$webIp} nginx was down!" | mail -s "nginx server down !" 269754243@qq.com
fi
for ((i=1;i<60;i++))
do
tomcatStatus=$(ps -ef|grep /usr/java/jdk1.7.0_67/bin/java|wc -l)
if [ "$tomcatStatus" -ge "2" ]
then
echo "$(date) healthy" >> /sh/tom.log
else
echo "$(date) down" >> /sh/tom.log
cd /opt/apache-tomcat-7.0.61/bin && /opt/apache-tomcat-7.0.61/bin/startup.sh &
echo "{$webIp} java tomcat was down!" | mail -s "java tomcat down !" 269754243@qq.com
fi
sleep 1
done
磁碟用量hard_disk_capacity_check.sh:
#/bin/sh
#auth yangxingyi 2017-04-18 23:33
#update at 2017-04-30 11:57
#email [email protected]
#desc this script check hard disk Size Used/Avail ,when nginx log gt 2GB tar zcvf and echo null to log file
#and check /opt/apache-tomcat-7.0.61/logs/ ,when apache-tomcat log gt 2GB tar zcvf and echo null to log file
userEmail="[email protected]"
webIp="www101.200.196.146"
rate=$(df -h | awk '{print $5}'| cut -d "%" -f1|sed -n '2p')
if [ $rate -ge 70 ]
then
#echo "$(date) hard disk was gt 93% !" >> /sh/log_hard_disk_check
echo "hard disk full {$webIp}!" | mail -s "{$webIp} hard disk full !" {$userEmail}
fi
#if /home/wwwlogs/www.duoduofenqi.com.log size gt 1GB tar zcvf this log file and echo null to this log file
logSize=$(ls -l /home/wwwlogs/www.duoduofenqi.com.log|awk '{print $5}')
#if [ "$logSize" -gt "1073741824" ]
if [ "$logSize" -gt "1073741824" ]
then
echo "nginx log filesize warming large then 1GB,{$webIp}!" | mail -s "nginx log filesize warming!" {$userEmail}
tar -zcvf /var/www/logBackUp/www.duoduofenqi.com.log_$(date +"%Y_%m_%d").tar.gz /home/wwwlogs
echo "">/home/wwwlogs/www.duoduofenqi.com.log
echo "">/home/wwwlogs/www.duoduofenqi.com.error.log
echo "nginx log size auto moved success!" | mail -s "nginx log size auto move and tar zcvf success!" {$userEmail}
fi
#/opt/apache-tomcat-7.0.61/logs/catalina.out
tomcatLogSize=$(ls -l /opt/apache-tomcat-7.0.61/logs/catalina.out|awk '{print $5}')
if [ "$tomcatLogSize" -gt "1073741824" ]
then
echo "position /opt/apache-tomcat-7.0.61/logs size warming bigger then 1GB!" | mail -s "tomcat log size warming large than 1GB!" {$userEmail}
tar -zcvf /var/www/logBackUp/tomcat/catalina.out_log_$(date +"%Y_%m_%d").tar.gz /opt/apache-tomcat-7.0.61/logs/catalina.out
echo "">/opt/apache-tomcat-7.0.61/logs/catalina.out
fi
#backup
backpath="/var/www/"
webpath="/var/www/www.duoduofenqi.com/"
today=`date +%Y%m%d`
day02=`date -d '2 days ago' +%Y%m%d`
#cd ${webpath}
#tar -zcvf ${backpath}backup_${today} ${webpath} --exclude *.txt --exclude *.csv --exclude *.log --exclude *.jpeg --exclude *.png --exclude *.json --exclude log
#--exclude Runtime --exclude *.xls --exclude *.docx
#rm -rf ${backpath}backup_${day02}
PHP程序監控指令碼:
#!/bin/bash
#Date 2017-04-21 0:36
#update 2017-05-20 16:00
#auth yangxignyi
#mail [email protected]
#func:This script is for www server php-cli check CsvStatus,popIceFeedQue status,popRiskQue status,popIceUpdateFeedQue status,popIceAliPayQue status,pop_sync_kk_Que status
#if this php-cli was down crontab will restart without human,crontab can restart this shell!!!
#version 2.0
CsvStatus=$(ps -ef |grep Home/Worker/exportCsv|grep index.php|awk '{print $8}')
popIceFeedQue=$(ps -ef |grep Home/Worker/popIceFeedQue|grep index.php|awk '{print $8}')
popRiskQue=$(ps -ef |grep Home/Worker/popRiskQue|grep index.php|awk '{print $8}')
popIceUpdateFeedQue=$(ps -ef |grep Home/Worker/popIceUpdateFeedQue|grep index.php|awk '{print $8}')
popIceAliPayQue=$(ps -ef |grep Home/Worker/popIceAliPayQue|grep index.php|awk '{print $8}')
pop_sync_kk_Que=$(ps -ef|grep Home/Worker/pop_sync_kk_Que|grep index.php|awk '{print $8}')
pop_newRiskCsv_Que=$(ps -ef|grep Home/Worker/pop_newRiskCsv|grep index.php|awk '{print $8}')
webPath="/var/www/www.duoduofenqi.com/"
logPath="/sh/csv.log"
userEmail="[email protected]"
webIp="101.200.196.146 php-cli"
if [ "$CsvStatus" == "php" ]
then
echo "$(date) csv php-cli is healthy" >> ${logPath}
else
echo "$(date) csv php-cli was down" >> ${logPath}
cd ${webPath} && php index.php Home/Worker/exportCsv &
echo "${webIp} php index.php Home/Worker/exportCsv & was down!" | mail -s "php index.php Home/Worker/exportCsv down !" ${userEmail}
fi
#popIceFeedQue
if [ "$popIceFeedQue" == "php" ]
then
echo "$(date) popIceFeedQue php-cli is healthy" >> ${logPath}
else
echo "$(date) popIceFeedQue php-cli was down" >> ${logPath}
cd ${webPath} && nohup php index.php Home/Worker/popIceFeedQue &
echo "${webIp} php index.php Home/Worker/popIceFeedQue was down!" | mail -s "php index.php Home/Worker/popIceFeedQue was down !" ${userEmail}
fi
#popRiskQue
if [ "$popRiskQue" == "php" ]
then
echo "$(date) popRiskQue php-cli is healthy" >> ${logPath}
else
echo "$(date) popRiskQue php-cli was down" >> ${logPath}
cd ${webPath} && nohup php index.php Home/Worker/popRiskQue &
# echo "${webIp} php index.php Home/Worker/popRiskQue & was down!" | mail -s "php index.php Home/Worker/popRiskQue was down !" ${userEmail}
fi
#popIceUpdateFeedQue
if [ "$popIceUpdateFeedQue" == "php" ]
then
echo "$(date) popIceUpdateFeedQue php-cli is healthy" >> ${logPath}
else
echo "$(date) popIceUpdateFeedQue php-cli was down" >> ${logPath}
cd ${webPath} && nohup php index.php Home/Worker/popIceUpdateFeedQue &
echo "${webIp} popIceUpdateFeedQue was down!" | mail -s "php popIceUpdateFeedQue was down !" ${userEmail}
fi
#popIceAliPayQue
if [ "$popIceAliPayQue" == "php" ]
then
echo "$(date) popIceAliPayQue php-cli is healthy" >> ${logPath}
else
echo "$(date) popIceAliPayQue php-cli was down" >> ${logPath}
cd ${webPath} && nohup php index.php Home/Worker/popIceAliPayQue &
echo "${webIp} php index.php Home/Worker/popIceAliPayQue >cli_ice_error.log 2>&1 & was down!" | mail -s "php popIceAliPayQue was down !" ${userEmail}
fi
#pop_sync_kk_Que
if [ "$pop_sync_kk_Que" == "php" ]
then
echo "$(date) pop_sync_kk_Que php-cli is healthy" >> ${logPath}
else
echo "$(date) pop_sync_kk_Que php-cli was down" >> ${logPath}
cd ${webPath} && nohup php index.php Home/Worker/pop_sync_kk_Que&
echo "${webIp} nohup php index.php Home/Worker/pop_sync_kk_Que >cli_ice_error.log 2>&1 & was down!" | mail -s "php pop_sync_kk_Que was down !" ${userEmail}
fi
相關推薦
linux-shell指令碼,監控nginx,tomcat,redis,php-cli,磁碟狀態
郵件配置: [[email protected] sh]# which mail /bin/mail You have new mail in /var/spool/mail/root [[email protected] sh]#
linux shell指令碼監控程序是否存在
用shell指令碼監控程序是否存在 不存在則啟動的例項,先上程式碼乾貨: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]thenecho "start process....."elseecho
linux shell指令碼監控程序,如果程序不在,則重啟之
#!/bin/sh while [ 1 ] do procID=`pidof ffmpeg` if [ "" == "$procID" ]; then ffmpeg -f video4linux2 -s 320x240
linux shell指令碼定時清理tomcat日誌檔案(初稿)
清理日誌的shell指令碼 ------------------------------------------------------------------------------------------------ #!/bin/bash tomcatnum=2 #清
Linux shell 指令碼新增環境變數,監控web 服務是否正常
例項1:寫shell指令碼定義函式設定環境變數路徑 prepend() { [ -d “$2” ] && eval $1="$2${$1:+’:’$$1}" && export $1 } 執行 prepend PATH /opt/myapp/bin 說明:
利用shell指令碼監控redis的使用記憶體
前些天搭建的redis叢集終於在生產環境使用了,為了系統的穩定,研究了下redis的監控報警。 雖然之前搭建了RedisLive,可以實時檢視redis的資訊,但是做不到實時的簡訊報警監控。 目前只針
如何在Linux查詢Nginx, Tomcat, Apache, PHP, Java的版本號?
1、查詢Nginx版本號: # cd /usr/local/nginx/sbin # ./nginx -v nginx version: nginx/1.11.3 2、查詢Tomcat版本號: # cd /home/server/tomcat-dfs/bin # ./version.sh Using
利用shell指令碼監控linux中CPU、記憶體和磁碟利用率。(centos7)
這篇部落格中所寫的,在實際工作中並沒有什麼卵用,工作中並不會用到這種指令碼去監控。不過自己寫一遍,可以讓初學者對CPU、記憶體、磁碟等一些基礎知識和基礎命令更加了解。 1、利用vmstat工具監控CPU詳細資訊,然後基於/proc/stat計算CPU利用率進行監控,超過80報警並提取出佔用cpu最高的前十
nginx之 nginx + tomcat + redis 負載均衡且session一致性
權限 gzip 通過 del 跳轉 home val zhang ctp 說明: 本文描述的是 nginx + tomcat + redis 實現應用負載均衡且滿足session一致性,從安裝到配置的全部過程,供大家學習!nginx 代理服務器ip: 10.219.24.2
Nginx+Tomcat+Redis實現session共享
linux nginx tomcat redis session 通過Nginx作為前端的負載,把請求分發到後端的Tomcat服務器上,提高並發數;但是單純的通過Nginx的ip_hash負載是很多問題的。只要用戶一切換網絡或者後端Tomcat主機宕機session就失效;架構圖:基本環境
CentOS+Nginx+Tomcat+Mysql+PHP 環境搭建及系統部署
Linux Centos tomcat mysql nginx ==============安裝centos 7.0=======================選擇最小安裝,將相關的"調試工具"、“兼容性程序庫”、“開發工具”選中。此操作是為了減少後期安裝或編譯相關服
nginx+tomcat+redis負載均衡,實現session共享
session共享實驗環境: 系統: centos 7.4 3.10.0-327.el7.x86_64 docker: 18.03.0-ce docker-compose:docker-compose version 1.21.0 redis: 4.0.9 nginx: 1.12.2 tomcat:8.5.
Linux-Shell指令碼程式設計基礎(1)
1. 我們一般在使用Linux系統的時候,都活接觸到shell指令碼的使用,例如我們經常在linux系統中使用的ls命令、cd命令等,都是衣蛾簡單而又基本的shell命令,在 linux系統中我們一般的使用如下的格式來進行shell指令碼的編寫: (1)格式 #!bin/bash e
學習Linux shell指令碼中連線字串的方法
這篇文章主要介紹了Linux shell指令碼中連線字串的方法,如果想要在變數後面新增一個字元,可以用一下方法: 程式碼如下: $value1=home $value2=${value1}"=" echo $value2 把要新增的字串變數新增{},並且需要把$放到外面。 這樣輸出的結果
Linux Shell指令碼獲取當前路徑
shell指令碼獲取當前路徑 #方法一 #!/usr/bin/env bash Cur_Dir=$(pwd) echo $Cur_Dir #方法二 #!/usr/bin/env bash basedir=cd $(dirname $0); pwd
linux shell 指令碼【1】 ---- echo 與 printf 用法
終端列印的常用命令有 echo 和 printf 兩種。 先說基本用法: echo: 1. echo Hello Word ! 命令列輸出:Hello Word ! 2. echo 'Hello Word !' 命令列輸出:Hello Word ! 3. echo
linux shell 指令碼【3】 ---- 重定向 與 tee 命令
1.重定向: echo "ABCD" > temp.txt 將ABCD寫入到temp.txt中 echo "ABCD" >> temp.txt 講ABCD追加到temp.txt中 其中 > 相當於 1>
linux shell 指令碼【2】 ---- 數學運算
在Bash shell環境中,可以利用 let、 (()) 、 [ ]、 expr 、 bc 進行數學運算 用法直接上程式碼,如下: #! /bin/bash echo "數學運算篇 START" #基本運算----let a=5; b=4; echo "a = $a
Linux Shell指令碼程式設計 --awk命令詳解
簡單使用: awk :對於檔案中一行行的獨處來執行操作 。 awk -F :'{print $1,$4}' :使用‘:’來分割這一行,把這一行的第一第四個域打印出來 。  
Linux Shell 指令碼讀取配置檔案
一、應用場景 為了靈活應用shell指令碼,適當的加入配置檔案,對於後期的維護和優化會有很大幫助。例如指令碼中使用的檔案/檔案路徑,都可以通過讀取配置檔案完成。 配置檔案 filename=boomlee 指令碼檔案 #!/bin/bash workdir=$(cd $(di