一、Nagios 简单原理:
Nagios
简单地说就是一个平台,其工作都依赖于插件及第三方工具来实现。像plgins 可以检测到服务(pop2,tcp,httpd,mysql等)的状态; nrpe可以检测到主机本身信息(swap,sdx,top等)的状态; nsca可以检测到windows机器的状态。报警(常用):邮件―sendmail;msn-sendmsg;短信-短信网关/飞信。还可以结合mrtg rddtools画出流量报表。
nagios 3.X
的中文文档:[url]http://www.itnms.net/docs/nagios/cn/build/html/index.html[/url]
大家看张图吧:
二、配置文件区别
安装过程很简单,现在只讲下配置的区别吧。
Nagios 2.X
:
所有配置文件都在:/../nagios/etc/ 目录下
主配置文件:nagios.cfg用以指定nagios的基本工作,及使用那些次配置文件
次配置文件:(都需要自己新建)
contactgroups.cfg
联系组配置文件
contacts.cfg
联系人配置文件
hostgroups.cfg
主机组配置文件
hosts.cfg
主机配置文件
services.cfg
服务配置文件(定义多台主机时,这个配置文件可以写N个,只需要在nagios.cfg中再添加一项就可以了)
timeperiods.cfg
监视时段配置文件
cgi.cfg cgi
脚本配置文件
commands.cfg
定义运行插件配置文件
templates.cfg
报警时间,报警信息配置
Nagios 3.X
:
主配置文件及cgi.cfg在 /../nagios/etc/ 目录下
次配置文件在: /../nagios/etc/objects/ 目录下
主配置文件:nagios.cfg用以指定nagios的基本工作,及使用那些次配置文件
次配置文件:(默认安装就有)
contacts.cfg
联系人及组配置文件
templates.cfg
监控项目及报警配置文件
timeperiods.cfg
监视时间配置文件
switch.cfg
交换机配置文件
windows.cfg windows
配置文件
localhost.cfg
本机配置文件
commands.cfg
定义运行插件配置文件
注意区别:
1、
配置文件目录不一样
2、
3.X
配置文件不需要自己新建,默认就有
3、
配置文件改动很大,其中装用户及组写到了一个文件,但不定义报警的时间,只定义收邮件人/接收短信人,其报警时间段写到了templates.cfg文件里;监控主机配置文件直接写到了服务配置文件里,相应的主机组都定义在templates.cfg
4、
2.x
的swap需要手动添加到commands.cfg 3.X自带
三、插件的问题
许多人在装nrpe的时候都会遇到CHECK_NRPE: Error - Could not complete SSL handshake错误。解决方法
石头大哥([url]http://www.itnms.net/discuz/[/url])的翻译如下:
简单说一下,大概的内容,不是严格翻译。
1. 确认check_nrpe 和 nrpe daemon的版本一定要一致。
2. 确认 check_nrpe和nrpe deamon端同时启用或者禁用ssl支持。
3. 确认nrep.cfg可以被nrpe(或者nagios,反正是执行nrep或者xinetd/inetd程序的)用户正常读取。
4. 有关伪随机设备的问题。这个只会在solaris 8上出现,需要一个补丁Sun patch 112438。
5. 确定nagios主机在xinetd的 ly_from中,如果没有使用xinetd,则要确认nrpe.cfg中的配置。
另外,赠送l两个,
1. 检查一下你的Windows或者Linux自带的防火墙,是否把端口给filter掉了。
2. 把nrpe的的log打开,可以发现更多有用的信息。
四、飞信机器(fetion)新版 结合nagios短信报警方法
简单说一下,大概的内容,不是严格翻译。
1. 确认check_nrpe 和 nrpe daemon的版本一定要一致。
2. 确认 check_nrpe和nrpe deamon端同时启用或者禁用ssl支持。
3. 确认nrep.cfg可以被nrpe(或者nagios,反正是执行nrep或者xinetd/inetd程序的)用户正常读取。
4. 有关伪随机设备的问题。这个只会在solaris 8上出现,需要一个补丁Sun patch 112438。
5. 确定nagios主机在xinetd的 ly_from中,如果没有使用xinetd,则要确认nrpe.cfg中的配置。
另外,赠送l两个,
1. 检查一下你的Windows或者Linux自带的防火墙,是否把端口给filter掉了。
2. 把nrpe的的log打开,可以发现更多有用的信息。
四、飞信机器(fetion)新版 结合nagios短信报警方法
旧版是fetion-200804X 采用的sms直接发短信的方法。这种方法很简单。
具体安装见:[url]http://gzmaster.blog.51cto.com/299556/79944[/url]
新版我用的fetin-20080522X
安装方法:
[url]http://www.hiadmin.com/%E7%B3%BB%E7%BB%9F%E7%9B%91%E6%8E%A7%EF%BC%9Alinux%E5%91%BD%E4%BB%A4%E8%A1%8C-%E9%A3%9E%E4%BF%A1%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%8F%91%E9%80%81%E5%85%8D%E8%B4%B9%E6%8A%A5%E8%AD%A6%E7%9F%AD%E4%BF%A1/[/url]
参考hiadmin
1
、软件环境(centos 5为例)
官网地址:[url]http://www.it-adv.net/[/url]
支持库安装:
需要Glibc2.4以上的版本
官网地址:[url]http://www.it-adv.net/[/url]
支持库安装:
需要Glibc2.4以上的版本
2
、安装过程
下载包地址 LINUX X86/32(REDHAT ES4X32):支持库 最新程序fetion20080522004-linrh4.tar.gz
其中支持库和安装包内容如下:
下载包地址 LINUX X86/32(REDHAT ES4X32):支持库 最新程序fetion20080522004-linrh4.tar.gz
其中支持库和安装包内容如下:
# tar zxvf libraryrh4x32.tar.gz
libACE- 5.6.5 .so
libACE_SSL-5.6.5.so
libcrypto.so.0. 9.7a
libssl.so.0. 9.7a
# tar zxvf fetion20080522004-linrh4.tar.gz
libACE- 5.6.5 .so
libACE_SSL-5.6.5.so
libcrypto.so.0. 9.7a
libssl.so.0. 9.7a
# tar zxvf fetion20080522004-linrh4.tar.gz
我将fetion放在/../nagios/
libexec/sms
把支持库复制到/usr/lib/目录下,并作软链接如下:
cp lib*so* /usr/lib/
ln -s /usr/lib/libcrypto.so. 0. 9.7a /usr/lib/libcrypto.so.4
ln -s /usr/lib/libssl.so.0. 9.7a /usr/lib/libssl.so.4
ln -s /usr/lib/libcrypto.so. 0. 9.7a /usr/lib/libcrypto.so.4
ln -s /usr/lib/libssl.so.0. 9.7a /usr/lib/libssl.so.4
设定lib库配置文件
#vi /etc/ld.so.conf
# 增加一条
/usr/lib/
#保存退出后,执行
#ldconfig
# 增加一条
/usr/lib/
#保存退出后,执行
#ldconfig
fetion
的目录结构:
.\Readme.txt: 本说明文件
.\fetion:主程序
.\sound\*.wav:各种音效文件,您可以用自己喜欢的文件替换
.\plugins\plugin_*: 插件程序,您可以修改插件以达到自己的各性化需求
.\Readme.txt: 本说明文件
.\fetion:主程序
.\sound\*.wav:各种音效文件,您可以用自己喜欢的文件替换
.\plugins\plugin_*: 插件程序,您可以修改插件以达到自己的各性化需求
完成之后测试,安装是否成功;执行
#cd install
# ./fetion -h
Usage:
fetion -h
-h: help
fetion -u mobile -p pwd [-b batchfile] [-EN] [-d]
fetion -u mobile -p pwd [-b batchfile] [-EN] [-d]
-u: Fetion user account(only supports mobile phone No.)
-p: Account password
-b: Batch file name
-d: Debug and write logs to [mobile]-debug.log
-EN: English
# ./fetion -h
Usage:
fetion -h
-h: help
fetion -u mobile -p pwd [-b batchfile] [-EN] [-d]
fetion -u mobile -p pwd [-b batchfile] [-EN] [-d]
-u: Fetion user account(only supports mobile phone No.)
-p: Account password
-b: Batch file name
-d: Debug and write logs to [mobile]-debug.log
-EN: English
3
、实际测试
测试帐号:13888888888
密码:123456 (如果密码中含有特殊字符,请使用单引号)
测试帐号:13888888888
密码:123456 (如果密码中含有特殊字符,请使用单引号)
如果发送成功。那么fetion安装过程就OK了
五:fetion 组合nagios
1
、Fetion以后台方式启动:nohup /usr/local/nagios/libexec/sms/fetion -u 13888888888 -p 123456 >/dev/null 2>1 &
2
、写一个perl脚本(本脚本由gzmaster小弟提供)
Sms.pl (/../nagios/libexec/sms/sms.pl)
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
use LWP::UserAgent;
my $mesg = shift;
$mesg =~ s/\//|/g;
my @number = (
接收手机号,接收手机号);
foreach my $number ( @number ) {
#print "send sms to $number \n";
my $send_sms_url = "http://localhost:40000/API/buddy/sms/" . $number . "/" . $mesg . '?rand=0.7394060082921254';
my $request = HTTP::Request->new(GET => $send_sms_url);
my $ua = LWP::UserAgent->new;
$ua->timeout( 5 );
$ua->agent("Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; Maxthon 2.0)");
my $response = $ua->request($request);
my $content = $response->content();
}
3
、修改相应的配置文件
修改用户及组:contacts.cfg
添加:
define contact{
contact_name sms-members
use sms-mail-contact
alias Nagios Admin SMS
pager 138888888888
}
define contactgroup{
contactgroup_name admins-and-lijs
alias Nagios Administrators
members sms-members
}
修改报警选项:templates.cfg
define contact{
name generic-contact
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r,f,s
host_notification_options d,u,r,f,s
service_notification_commands notify-service-by-email; service-notify-by-sms
host_notification_commands notify-host-by-email
register 0
}
define contact{
name sms-mail-contact
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r,f,s
host_notification_options d,u,r,f,s
service_notification_commands service-notify-by-sms
host_notification_commands notify-host-by-email
register 0
}
修改调用脚本:commands.cfg
#host-notify-by-sms
define command {
command_name host-notify-by-sms
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nHost: $HOSTNAME$\nState:
$HOSTSTATE$\nWAN_IP: $HOSTALIAS$\nLAN_IP: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/local/nagios/lib
exec/sms.pl 710880931 "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
}
#service notify by sms
define command {
command_name service-notify-by-sms
command_line /usr/local/nagios/libexec/sms/sms.pl '** $NOTIFICATIONTYPE$ alert - $HOSTNAME$ $SERVICEDESC$ is $SERVICESTA
TE$ info: $SERVICEOUTPUT$'
}
测试下nagios情况。然后再测试报警。就OK了