開發本身的監控系統1、email篇

前言: php

隨着維護服務器量的增多,愈來愈以爲監控的重要性。監控,就是運維人員的眼睛,沒有了監控,你不知道磁盤是否滿了,網絡流量是否超標,甚至服務器是否宕機。監控的重要性不言而喻。市面上的監控軟件也不少,如商業版的ipmontor、opmanager,免費開源的nagios、cacti等。每一個監控軟件都有各自優缺點和應用場景,這裏不去探討。本文要探討的是從一個初學者的角度去打造屬於本身的監控系統。共分爲三部分:email篇web篇移動篇(android)。好了,不廢話了,下面開始。

email篇:

關鍵字:shell、email html

原理:
定時執行監控腳本,提取服務器運行狀態,如系統負載、磁盤空間或是相關服務是否運行等,只要有一項異常,即立刻發送郵件警報。下面是腳本內容(因爲只是個事例,因此只設定了兩個監控項目,你們根據本身的需求增減監控項目)。 linux

#!/bin/bash
#Server status monitor
#by caishzh 2013
 
#初始化變量及設置閥值
DIR="/root/tool"
NOW=$(date "+%F %T")
>${DIR}/messages.txt  #先清空messages.txt裏的內容
 
ADMIN="xxx@qq.com" #郵箱地址,用於接收警報郵件
HOSTNAME="Server1"
IP=$(ifconfig eth0|grep 'inet addr'|sed 's/.*addr:\(.*\) Bcast:.*/\1/')
 
UPTIME_MAX=3 #系統負載
DISK_MAX=90 #磁盤使用率
 
#系統負載
UPTIME=$(uptime|sed 's/^.*age: \(.*\)$/\1/')
UPTIME_NOW=$(echo $UPTIME|awk -F',' '{print $1}')
if echo "$UPTIME_NOW>$UPTIME_MAX"|bc >/dev/null;then  #UPTIME_NOW包含小數,而test只支持整數間的比較,因此這裏使用bc
     echo "UPTIME: $UPTIME" >>${DIR}/messages.txt
fi
 
#根分區
DISK=$(df -h|grep /$|awk '{print $5,$2,$4}')
DISK_USAGE=$(echo $DISK|awk '{print $1}'|tr -d '%')
[ "$DISK_USAGE" -ge "$DISK_MAX" ] && $(echo "DISK: $DISK" >> ${DIR}/messages.txt)
 
#若是messages.txt文件不爲空則發送警報信
if [ -s ${DIR}/messages.txt ];then
     mail -s "system monitor: $NOW  $IP  $HOSTNAME" "$ADMIN" <${DIR}/messages.txt
fi

將腳本放到/root/tool目錄下,給予執行權限: android

chmod 755 /root/tool/system_monitor.sh

放入crontab中,每3分鐘執行一次: ios

echo "*/3 * * * * root /root/tool/system_monitor.sh" >>/etc/crontab

實際生產環境下執行該腳本後收到的警報郵件:
monitor_email web

開發本身的監控系統2、web篇
開發本身的監控系統3、移動篇(android) shell

參考:

簡單的系統監控腳本
鳥哥的linux私房菜–學習shell scripts bash

相關文章
相關標籤/搜索