1. 程式人生 > >linux-shell指令碼,監控nginx,tomcat,redis,php-cli,磁碟狀態

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

[email protected]
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最高的前十

nginxnginx + 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