开发自己的监控系统一、email篇

前言:

随着维护服务器量的增多,越来越觉得监控的重要性。监控,就是运维人员的眼睛,没有了监控,你不知道磁盘是否满了,网络流量是否超标,甚至服务器是否宕机。监控的重要性不言而喻。市面上的监控软件也很多,如商业版的ipmontor、opmanager,免费开源的nagios、cacti等。每个监控软件都有各自优缺点和应用场景,这里不去探讨。本文要探讨的是从一个初学者的角度去打造属于自己的监控系统。共分为三部分:email篇web篇移动篇(android)。好了,不废话了,下面开始。

email篇:

关键字:shell、email

原理:
定时执行监控脚本,提取服务器运行状态,如系统负载、磁盘空间或是相关服务是否运行等,只要有一项异常,即马上发送邮件警报。下面是脚本内容(由于只是个事例,所以只设定了两个监控项目,大家根据自己的需求增减监控项目)。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

 

#!/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目录下,给予执行权限:

chmod 755 /root/tool/system_monitor.sh

放入crontab中,每3分钟执行一次:

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

实际生产环境下执行该脚本后收到的警报邮件:
开发自己的监控系统一、email篇 - 安时代 - 理想时代

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值