系统实时监视
发表于:2007-07-04来源:作者:点击数:
标签:
如何实时监视系统运行状况并在异常发生的时候自动发邮件到管理员的邮箱或在严重错误的时候发短信给管理员?其实,利用HP-UX系统工具和自带的sendmail邮件发送功能,就能实现配置一个比较通用的监视系统! 以下为HP-UX11.00环境下配置的详细过程。 HP-UX11.00
如何实时监视系统运行状况并在异常发生的时候自动发邮件到管理员的邮箱或在严重错误的时候发短信给管理员?其实,利用HP-UX系统工具和自带的sendmail邮件发送功能,就能实现配置一个比较通用的监视系统! 以下为HP-UX11.00环境下配置的详细过程。
HP-UX11.00系统安装时也会安装Sendmail,版本大概是8.9.x!这个版本的Sendmail应该也算稳定的,但是我这里配置时会出现sendmail.cf文件版本太旧的错误!于是干脆download一个新版的算了!在这里可以下载到HP-UX特别版的Sendmail 8.11.1:
http://www.software.hp.com/ISS_products_list.html(需要填一些个人和公司信息,不一定填真实的:p,就可以下载了,大概1.3M吧,也算够新的了!如果你想用更新的版本,可以到
http://www.sendmail.org去下载8.12.6的,不过安装起来麻烦得多也比较容易出问题)。文件下载下来以后是一个叫做Sendmail8111.depot的文件,好家伙,能用swinstall轻松搞定!!!把它ftp到你的HP-UX系统吧,注意需要用binary的模式传输,否则安装时会出现错误。完了,可以安装了,假如你ftp到/tmp下,那么用: #swinstall –s /tmp/Sendmail8111.depot ,按提示完成即可。
假如你的系统配置了DNS服务,那么配置Sendmail会简单一点,否则就稍微麻烦一点(其实也没麻烦多少)。我们先假设一些前提:HP-UX系统主机名:hosta,IP地址:192.168.0.1 (C类网址,下同),默认网关: 192.168.0.2;假设公司邮件
服务器是hostb(很少直接用sendmail直接做公司业务邮件服务器的哦),IP地址:192.168.1.5,域名是myhpux.com,hostb允许为hosta提供邮件代理服务。
具体步骤:
# vi /etc/hosts
192.168.1.5 hostb myhpux.com
192.168.0.1 hosta hosta.myhpux.com
…
如果存在/etc/nsswitch.conf ,那么直接修改该文件;如果不存在,则需要拷贝一个:
#cp -p /usr/newconfig/etc/nsswitch.files /etc/nsswitch.conf
#vi /etc/nsswitch.conf
hosts: files
…
#nslookup
Using /etc/hosts on : hosta
>myhpux.com
没问题的话,继续;有问题则不能怪我了,看看自己上面做对了没有!!!(IP地址、网关、域名和hostname等需要替换成你自己的)
#vi /etc/mail/sendmail.cf
找到:#Dj$w.Foo.COM 这行,并在下面增加一行:
Dj$w.sysinfo (发送邮件时,系统默认发信人是: root@hosta.sysinfo )
然后,找到DS 行,改成:
DShostb
存盘退出!
可以测试了:
#/sbin/init.d/sendmail stop
#/sbin/init.d/sendmail start
#sendmail –v admin@myhpux.com
<输入邮件内容>
.
(注意,最后一行的“.”号结束邮件内容输入)
正常系统和
网络都没问题的话,你的 admin@myhpux.com就会收到root@hosta.sysinfo发给你的邮件了!这只是通常的情况,假如你需要发邮件到Inte
.net,如 hpux@vip.sina.com:
1、假如你的HP-UX主机没有直接Internet连接,需要通过hostb代理,则:
# vi /etc/hosts
192.168.1.5 hostb vip.sina.com
然后就可以发了:
#mailx –s “test” hpux@vip.sina.com 2、假如你的HP-UX有直接Internet连接,则:
#vi /etc/hosts
202.101.111.222 sinahost vip.sina.com
#vi /etc/mail/sendmail.cf
修改DShostb 为DSsinahost
#/sbin/init.d/sendmail stop
#/sbin/init.d/sendmail start
测试:
#mailx –s “Test” hpux@vip.sina.com 说明,202.101.111.222是#ping vip.sina.com得到的IP地址。
好,邮件服务搞定,接下来写监视脚本!!!
根据我自己的实际状况,我需要监视的系统运行状况主要有文件系统空间、
网络和数据库服务!先说明文件系统的监视。文件系统空间不同挂起点设定的临界值是不一样的,比如/var,可以设定警告线是80%,错误线是95%,而数据库/oradb的警告线可能是60%,错误线80%,由此必须设定一个文件系统临界线设置文件:比如/etc/fs.sysmon (/etc下系统默认配置文件没有.sysmon结尾的,放心使用不会影响系统的)。/etc/fs.sysmon文件结构是这样的:注释的行不考虑,分3段,分别是挂起点、警告线、错误线。具体例子如下:
##############################################################
# Which mount point must be monitored and how to monitored. #
# | Mount Point | % Warning | % Error | #
# Attention: /lvol1 is incorrect , it should be lvol1 #
##############################################################
# lvol1 90 95
/ 50 60
mfg1 60 75
stand 70 80
var 60 70
usr 70 80
users 50 80
tmp 70 80
opt 70 80
mfg8 70 80
mfg7 70 80
database 40 90
临界值随时可以改,监测脚本以这个文件的临界值为准判断文件系统是否出问题。
系统监视脚本fsmon,内容大致如下:
#!/usr/bin/sh
##Check file system usage!
# $mntpt --- Mount point
# $usdpct --- %used (bdf output)
# $usdamt --- %used * 100 (If usdpct = 63% then usdamt = 63 )
# $wpect --- Max Warning Percentage
# $epct ---Max Error Percentage
# Check if fsswitch exists ------
if [[ ! -f /etc/fs.sysmon ]]
then
echo "The configuration file /etc/fs.sysmon does not exist!"
exit
fi
touch $$.rslt
bdf |grep -iv filesystem |awk '{print $6" "$5}' |while read mntpt usdpct
do
mntpt=`echo $mntpt |tr -d "/"`
if [[ $mntpt = "" ]]
then
mntpt="/"
fi
usdamt=`echo $usdpct |tr -d "%"`
wpct=`more /etc/fs.sysmon|grep -v "#"|grep "$mntpt"|awk '{print $2}'`
epct=`more /etc/fs.sysmon|grep -v "#"|grep "$mntpt"|awk '{print $3}'`
if [[ "$wpct" = "" ]]
then
wpct=90
fi
if [[ "$epct" = "" ]]
then
epct=95
fi
if [[ $mntpt != "/" ]]
then
mntpt="/"$mntpt
fi
if [[ $usdamt -gt $epct ]]
then
echo "Error:$mntpt file system's usage is ${usdamt}%." >>$$.rslt
else
if [ $usdamt -gt $wpct ]
then
echo "Warning:$mntpt file system's usage is ${usdamt}%." >>$$.rslt
fi
fi
done
if [[ -s ./$$.rslt ]]
then
if grep "Error:" ./$$.rslt >/dev/null
then
mailx -s "Fs-Err" -r "fs@$(hostname)" hpux@vip.sina.com <$$.rslt
else
mailx -s "Fs-Wrn" -r "fs@$(hostname)" hpux@vip.sina.com <$$.rslt
fi
fi
rm $$.rslt
unset mntpt
unset usdpct
unset usdamt
unset wpct
unset epct
关于
网络监视方面,可以挑选几个重要的主机来测试
网络连通性(由此达到以点代面的目的,当然,可以象Openview那样全面监测那更好)。主机列表放在文件/etc/ho.sysmon里,比如:
######################################################################
# Host list whom this host can connect to. #
# Please input the host's IP address. #
######################################################################
#192.168.0.1
127.0.0.1
192.168.1.5
192.168.2.1
192.168.3.1
网络监视脚本如下(netmon):
#!/usr/bin/sh
# Monitor Network Connection from Host List: ./rhosts
# phost --- Ping host
# prslt --- Ping Result
if [[ ! -f /etc/ho.sysmon ]]
then
echo "Host list file do not exist."
exit
fi
touch $$.net
more /etc/ho.sysmon|grep -v "#" |while read phost
do
prslt=`ping $phost -n 5 |grep loss|awk '{ print $7}'`
prslt=`echo $prslt|tr -d "%"`
if [[ $prslt -ne 0 ]]
then
if [[ $prslt -eq 100 ]]
then
echo "Error: Can't connect to host:$phost." >> $$.net
else
echo "Warn: Connect to host:$phost problem." >>$$.net
fi
fi
done
if [[ -s ./$$.net ]]
then
if grep "Error:" ./$$.net >/dev/null
then
mailx -s "Net-Err" -r "net@$(hostname)" hpux@vip.sina.com <$$.net
else
mailx -s "Net-Wrn" -r "net@$(hostname)" hpux@vip.sina.com <$$.net
fi
fi
rm $$.net
unset phost
unset prslt
如果以上内容都能理解了,那么监视数据库是否在运行就很简单了,比如
if ps –ef |grep “_orasrv” |grep “mydb”
then
else
fi
假如数据库mydb已经通过_orasrv进程启动,那么执行相关动作,否则重启数据库并发信心给管理员。
补充一点,假如你想在系统异常是收到短信通知,只要对收费邮箱(比如hpux@vip.sina.com)设置邮件到达短信通知即间接实现。
原文转自:http://www.ltesting.net