六、配置Mon 1 什么是Mon
mon是针对linux开发的工具,但众所周知在sorlaris下他也可以工作。因为客户和服务端都是由perl语言书写,因此在轻便性上不会有问题。
简单来说Heartbeat用来实现心跳和高可用性,Mon用来监控服务 。
2 Mon方案
图 4 是基于集群监视的Mon方案。

图 5 是Mon检查每个集群节点MIB的过程

3 首先自行搜尋以下的 Perl 模块
perl-Mon-0.11-2.2.el5.rf.noarch.rpm
perl-Convert-BER-1.31.01-1.2.el5.rf.noarch.rpm
perl-Net-Telnet-3.03-1.2.el5.rf.noarch.rpm
perl-Time-HiRes-1.55-3.i386.rpm
perl-Time-Period-1.20-2.el5.rf.noarch.rpm
安装命令:
#perl -MCPAN -e shell
cpan>install Time::Period
cpan>install Time::HiRes
cpan>install Convert::BER
cpan>install Mon::Protocol
cpan>install Mon::SNMP
cpan>install Mon::Client

4 下载安装fping
Ping命令大概是网管员最常用的命令了,使用Ping可以监测网络的通断、设备是否宕机,遗憾的是每次只能针对一台设备。在一个拥有20余台服务器和80多个可网管交换机的局域网内,Ping上一遍是很艰难的事情,而运行在Linux下的Fping(
http://www.fping.com)可以轻松完成这一工作。Fping 命令与Ping命令非常相似,使用ICMP回应请求和应答来确定系统的可达性。它提供了一些Ping没有的特殊功能,比如,Fping可以在命令行上指定主机名或IP地址的列表、可以处理一个包含主机名或IP地址清单的文件。Fping并不是发送一个请求到单一目标(Ping的做法),而是用循环的方法发送ICMP请求到每个目标。另外,Fping可以用于脚本编程中。
#wget http://www.kernel.org/pub/software/admin/mon/fping-2.2b1.tar.bz2
#bunzip2 fping-2.2b1.tar.bz2
#./configure
#make
#make check
#make install
5 下载安装Mon
#wget ftp://ftp.kernel.org/pub/software/admin/mon/mon-0.99.2.tar.gz
#tar -xzf mon-0.99.2.tar.gz
#cd mon-0.99.2
#mkdir /etc/mon
#cp auth.cf mon.cf /etc/mon
#mkdir /usr/lib/mon
#cp -r alert.d mon.d state.d mon /usr/lib/mon
建立Mon报告目录和Mon报告文件
#mkdir /usr/lib/mon/log.d
#vi /etc/mon/auth.cf
内容如下:
disable: root
dump: root
enable: root
get: root
loadstate: root
reset: root
savestate: root
set: root
start: root
stop: root
term: root
#vi /etc/mon/mon.cf
内容如下:
不要写跟随他们的箭和数字; 他们仅仅出现在这里说明参数。
alertdir = /usr/lib/mon/alert.d ← [1]
mondir = /usr/lib/mon/mon.d ← [2]
logdir = /usr/lib/mon/logs ← [3]
histlength = 500 ← [4]
dtlogging = yes ← [5]
dtlogfile = /usr/lib/mon/logs/dtlog ← [6]
hostgroup clusternodes clnode1 clnode2 clnode3 ← [7]
← [8]
watch clusternodes ← [9]
service cluster-ping-check [10]
interval 5s [11]
monitor fping.monitor [12]

period wd ...{Sa-Su} [13]
alert mail.alert alert@domain.com ← [14]
upalert mail.alert alert@domain.com ← [15]
alertevery 1h ← [16]
说明如下:
[ 1 ]警报脚本的路径。
[ 2 ]监视器脚本的路径。
[ 3 ]报告文件的路径。
[ 4 ]→事件的最大限度数字在报告中节省。
[ 5 ]→启用宕机的日志记录成为可能。
[ 6 ]→报告到宕机事件。
[ 7 ]被分配到一组的丛群节点的列表。
[ 8 ]→在每个主机之后要求空的行。
[ 9 ]→监视组观看所有节点。
[ 10 ]→称为服务任何事物你想要。
[ 11 ] fping的工作频率。
[ 12 ]→使用fping.monitor脚本。
[ 13 ]→针对语法输入:perldoc Time::Period
[ 14 ]→当节点之一断开时。
[ 15 ]→当节点之一连接时。
[ 16 ]→每小时仅仅发送警报的电子邮件一次。
Vi /etc/services,添加两行:
mon 2583/tcp # MON
mon 2583/udp # MON traps
6 通过手工运行fping.monitor和mail.alert脚本的测试
脚本命令如下:
#/usr/lib/mon/mon.d/fping.monitor clnode1
输出如下:
start time: <current date>
end time : <current date>
duration : 0 seconds
--------------------------------------------------------
reachable hosts rtt
-------------------------------------------------------
209.100.100.2 58.10 ms
上面的报告IP地址为209.100.100.2以58.10个秒响应fping。
如果这脚本不适当地工作,你能需要告诉Perl找到fping的工具。编辑fping.monitor文件:
my $CMD = "/usr/local/sbin/fping -e -r $RETRIES -t $TIMEOUT";
要测试电子邮件警报,输入:
#echo "Testing 123" | /usr/lib/mon/alert.d/mail.alert alert@domain.com
alert@domain.com 是电子邮件的发送地址。
7 使用调试方式时开始Mon测试
#/usr/lib/mon/mon -d
正常输出如下:
PID 8211 (clusternodes/cluster-ping-check) exited with [0]
Mon发送的电子邮件警报如下:
Subject: ALERT clusternodes/process-check: localhost:ntpd,ypbind
Summary output : localhost:ntpd,ypbind
Group : clusternodes
Service : process-check
Time noticed : <Time and Date>
Secs until next alert :
Members : localhost
Detailed text (if any) follows:
-------------------------------
localhost:ntpd Count=0 Min=0 Max=0
localhost:ypbind Count=0 Min=0 Max=0
到此为止笔者简单介绍了使用Heartbeat 2.0配置Linux高可用性集群的从部署到监视完整过程。