监控怎么用飞信发短信

怎么用飞信发短信  时间:2021-05-25  阅读:()

第12章监控系统Nagios俗话说:工欲善其事,必先利其器.
要做好系统管理,使自己的工作更轻松、更有效的话,一个好的监控工具是必不可少的.
在2002年的时候,我有幸承包中国科学院某研究所的整个网络维护.
当时网络状况十分糟糕,断网情况比较频繁.
造成这种情况的原因大致有以下两种.
内部网络联网混乱.
上联到另外一个研究所,那里时不时操作不慎把上连的线路给弄掉了.
为了了解网络是否处于一个可用的状态,我上班的第一件事情就是打开网络收音机,根据声音的有无进行判断.
再往后两年,有一些用于远程教育的服务器托管在亦庄某机房.
这个机房的服务的实在是很糟糕,曾有一段时间,网络服务基本处于无法访问的状态,打电话过去,那边敷衍说机房受到攻击,马上就会正常.
我们不得不暂时相信他的托词,为了知道何时网络能恢复正常,我就在办公室的电脑执行ping服务器IP地址的操作.

2005年秋天,我在一个SP公司做系统管理.
这里有数百个服务器对外提供服务,并且要求24小时运营保障.
这种网络环境下,再用听在线收音机或者ping来判断网络是否正常,是没有什么效果的.
幸好,在我接手的时候,已经有了一个监控系统Netsaint(Nagios的早期版本名称),后来我把它升级成最新的Nagios.
通过逐步完善这个监控平台,取得比较理想的运营效果:只需带着手机,有故障会自动发短信报警.

12.
1Nagios概述Nagios官方网站的描述:Nagiosisanopensourcehost,serviceandnetworkmonitoringprogram.
WhousesitLotsofpeople,includingmanybigcompaniesandorganizations.
首先,我们来看看实际工作中需要监控的对象有哪些在这里我总结出两种类型的监控对象:网络服务监控及主机资源监控.
网络服务监控可包括主机存活检查、Web服务监控、FTP服务监控、数据库服务监控、自定义服务监控等;主机资源监控可包括系统负载、当前IP连接数、磁盘空间使用情况、当前进程数以及自定义的资源监控等.

其次,我们再来看看Nagios监控的表现形式.
监控的主要目的是当监控的对象发生故障或资源紧张时及时通知相关人员,以便问题得到迅速的处理.
追求的效果就是"在老板和客户发现问题之前得到及时、有效的通知".
假定故障通知来自老板,我想大家都不会很愉快的.
Nagios为了方便我们的管理工作,提供了至少3种表现形式.

Web方式.
即通过浏览器看看被监控的对象.
在正常状态下,其状态(status)是以蓝色填充并显示一个OK.
邮件通知.
发生故障时,到达设定重试次数或探测间隔时间后发送邮件给管理员或相关人员,报告问题的大致情况.
手机短信.
这是非常有用和及时的功能了.
晚上熟睡中,不可能看看Web页面或查阅邮件.
可是一旦发生故障,手机短信却能把你随时唤醒.
一般情况下,这三者是同时进行的:上班时间开个浏览器查看页面显示、打开邮件程序定时收取邮件、手机24小时在线.
下面,我们以一个实际场景来展示Nagios的强大功能,希望对大家的系统管理工作有所帮助.
12.
2Nagios监控场景描述为了描述问题方便,我们假定有以下服务器要监控:Web服务器数据库服务器邮件服务器NFS文件共享服务器需要对几个服务器的服务进行监控,同时监控每个服务器的资源使用情况,包括负载情况、磁盘分区使用情况、总进程数和当前IP连接数4个项目(当然你也可以自己写脚本监控更多的资源对象).
这些服务器除了系统管理员外,还有其他用户(如程序员)对各自的服务器进行维护.
当发生故障的时候,维护网站的程序员能收到报警邮件和报警短信,而管理数据库的管理员则无需收到这些报警,同时维护程序的用户可以以自己的帐号登录监控服务器,通过Web方式查看自己所管服务器的状态(只能看自己的而看不到别人管辖服务器的状态).

通过上面的描述,我们可以整理出表12-1.
表12-1监控场景汇总机器名称角色可查看状态及接受报警信息的用户所需工具Nagios服务器监控端系统管理员(SA)Apache、Nagios、NagiosPlugin、Sendmail、Perl等邮件服务器被监控端系统管理员、邮件管理员Nrpe、NagiosPlugin、自定义脚本等数据库服务器被监控端系统管理员、DBANrpe、NagiosPlugin、自定义脚本等Web服务器被监控端系统管理员、WebmasterNrpe、NagiosPlugin、自定义脚本等NFS共享服务器被监控端系统管理员Nrpe、NagiosPlugin、自定义脚本等缓存服务器(Squid)被监控端系统管理员、WebmasterNrpe、NagiosPlugin、自定义脚本等配置好Nagios和被监控机器后,其在浏览器里的基本输出与图12-1类似.
图12-1Web方式查看Nagios监控状态12.
3Nagios服务器的自我监控实现要实现资源和服务两个方面的监控,需要配置服务器端(NagiosServer)及被监控端(NRPE-nagiosremotepluginexecutor).
为了能顺利、有条理地部署Nagios监控平台,一个好的工作习惯是在NagiosServer自身实现服务和资源的监控,然后再在其他监控端部署NRPE,从NagiosServer端用check_nrpe测试通过后,再在NagiosServer配置文件中逐一增加监控项目.
当然如果只是监控服务而不监控主机资源,则被监控端不做任何NRPE的安装.
为了方便初学者更容易上手和成功,我们从简单的步骤开始.
12.
3.
1配置邮件发送功能因为报警邮件发送给用户邮箱后,监控系统本身没有必要接受别的邮件服务器发送的邮件,因此只需要使用服务器本身自带的Sendmail来发送报警信息即可.
用Sendmail的另外一个目的就是简便.

如果系统是Redhat或CentOS,只需执行servicesendmailstart启动守护进程,然后再用DNS服务器给它一个合法的域名(即A记录),马上就可以用mail命令来发送测试邮件到你的某个电子邮箱里了.
收到测试邮件,就说明邮件系统配置结束,是不是很容易呢这里给一个发送邮件的例子:mail-s"Thisissery'snagiostestmail"sery@163.
comnew;$md5->add($souce_content);my$result_conent=uc($md5->hexdigest);my$url="http://http.
asp.
sh.
cn/MT.
doUsername=sery&Password=([-BVG'0&Mobile=$mobile&Content=$content&Keyword=$result_conent";my$result=get$url;if($log_control){my$fh;open($fh,'>>/var/log/sms.
log')ordie"can'topenlog:$!
";print$fhjoin('',time,$result,"\n");close$fh;}对以上脚本稍做说明:(1)my$key='Ysdbyhd6T':短信服务商给的验证关键字.
(2)my$url="….
.
":短信服务商给的用户名、密码以及短信服务商的访问接口(URL)全包括在这里了.
我们把这个文件放在目录/usr/local/bin/下面,把它命名为sms_send.
pl,用命令chomod+x/usr/local/bin/sms.
pl给予它执行权限.
这个脚本在各种各样的UNIX、Linux下都可以正常工作,Nagios报警短信发送就是靠它.
接下来就是验证是否可以发送短信.
执行命令行:/usr/local/bin/sms.
pl13300108888"Itisatest"回车后数秒钟,你的手机应该能收到带有内容"Itisatest"的短信息,为了保证短信服务的可靠性,我做了一个策略:每天下午6点定时给我发一个通知短信;告诉我短信发送是正常的,也是该下班回家了.
具体做法是执行:crontab–e然后输入行:0018***/usr/local/bin/sms.
pl13300108888"ItisOk"12.
3.
3安装ApacheApache应该是我们最常用的部署了,它可以被弄得很复杂,但在Nagios这个平台上,我们只需要简单的功能即可.
为了验证用户,我们稍微修改就一下行了.
这样做也是为了体现"越简单越容易的思想".
做得简单,以后重新部署或恢复就越迅速、越没压力.
1.
安装Apachetarzxvfhttpd-2.
2.
8.
tar.
gzcdhttpd-2.
2.
8.
/configure--prefix=/usr/local/apache#仅仅需要这么一个选项makemakeinstall2.
检查Apache是否被正确的安装(1)执行:/usr/local/apache/bin/apachectl–t检查Apache的配置文件语法是否正确.
未经更改的Apache配置文件语法显然是正确无误的,当我们对配置文件httpd.
conf或其包含的文件做了更改的时候,最好先运行一下这个命令,它的错误输出能迅速定位配置文件哪里出现了错误.
(2)执行命令行:/usr/local/apache/bin/apachectlstart启动Apache守护进程,在别的机器的浏览器里输入这个服务器的IP地址,看是否可以正常浏览Apache的默认页面(通常是一个"ITworks!
").
3.
修改Apache配置文件httpd.
conf(1)修改Apache运行用户和组.
默认是daemon,需要把它改成Nagios.
这样它才能有权限访问我们安装的Nagios目录,执行相关的cgi命令,如通过浏览器界面关闭Nagios、停止某个故障对象发送报警信息等.

(2)添加Nagios访问目录(Nagios的安装路径/usr/local/nagios),同时使用http用户验证.
把下面的内容追加到httpd.
conf文件的末尾:ScriptAlias/nagios/cgi-bin/usr/local/nagios/sbinAuthTypeBasicOptionsExecCGIAllowOverrideNoneOrderallow,denyAllowfromallAuthName"NagiosAccess"AuthUserFile/usr/local/nagios/etc/htpasswdRequirevalid-userAlias/nagios/usr/local/nagios/shareAuthTypeBasicOptionsNoneAllowOverrideNoneOrderallow,denyAllowfromallAuthName"nagiosAccess"AuthUserFile/usr/local/nagios/etc/htpasswdRequirevalid-user按照这样一种方式修改配置文件,保证不会把配置文件改得一塌糊涂,我相信大部分初学者把文件修改后而不知道文件本身的原貌.
到这步,配置文件虽然修改好了,但还不能通过语法检查,因为有两个与之相关联的东西还不存在,它们是用户和组Nagios及Apache的验证用户文件/usr/local/nagios/etc/htpasswd.
在后续操作中完成该任务后,再验证不迟.

12.
3.
4部署Nagios服务1.
添加帐户以运行Nagios当然也可以用root运行,但出于安全考虑而使用普通帐号来运行,并且不为该帐号分配shell登录权限.
(1)Linux增加帐号的操作:useraddnagios–s/sbin/nologin添加帐号就自动生成同名组Nagios.
(2)FreeBSD增加帐号的操作:pwgroupaddnagios;pwuseraddnagios–gnagios–s/sbin/nologin.
2.
安装Nagios软件tarzxvfnagios-2.
9.
tar.
gzcdnagios-2.
9.
/configure––prefix=/usr/local/nagios--with-nagios-user=nagios--with-nagios-group=nagiosmakeallmakeinstall执行完这个步骤后,程序会提示依次运行makeinstall-init,makeinstall-commandmode,makeinstall-config这几个命令.
我们选取其中的两个来执行:makeinstall-commandmodemakeinstall-config和一般的GUN源码软件安装相比,Nagios的安装多了几个步骤(一般的软件运行到makeinstall就算安装完了).
当然也可以不执行这两步,用手工赋予目录或文件权限,再手动创建配置文件,其效果完全相同.
安装完Nagios后,我们可以在安装目录/usr/local/nagios下找到自动生成的各个子目录,如表12-2所示.

表12-2Nagios目录结构binNagios执行程序所在目录,这个目录只有一个文件nagiosetcNagios配置文件位置,初始安装完后,只有几个*.
cfg-sample文件sbinnagioscgi文件所在目录,也就是执行外部命令所需文件所在的目录shareNagios网页文件所在的目录varNagios日志文件、spid等文件所在的目录3.
安装Nagios插件没有插件,Nagios将什么作用也没有,插件也是Nagios扩展功能的强大武器,除了下载常用的插件外,我们还可以根据实际要求编写自己的插件.
Nagios的插件nagios-plugins-1.
4.
9在www.
nagios.
org上可以找到,接着我们用wget下载它.

下载完成后,安装是很简单的.
先执行配置:.
/configure––prefix=/usr/local/nagios接着编译安装make;makeinstall即可.
安装完成后,将在目录/usr/local/nagios生成子目录libexec(里面有很多文件),这正是Nagios所需要的,如图12-2所示.
图12-2Nagios插件文件列表4.
配置Nagios配置是Nagios最复杂的部分,耐心的一些,逐个处理,配置成功也不是什么难事.
刚安装完成的Nagios,其配置文件的目录是/usr/local/nagios/etc,图12-3所示是其etc目录的文件.

图12-3etc目录文件列表先把这些文件改名,如cgi.
cfg-sample改成cgi.
cfg,用命令cpcgi.
cfg-samplecgi.
cfg…依样把其余的几个*.
cfg-sample都复制成*.
cfg文件.
当然,我们不能指望这个最小的配置文件即可满足实际的需求,因此,需要对现有的配置文件进行修改,其次增加自定义的一些配置文件.
通过复制这些自带的模板文件,可以得出几个主要的配置文件,把它归类为表12-3所尸的形式.

表12-3配置文件归类类型名包含文件作用备注主配置文件nagios.
cfg定义和控制Nagios的行为需要修改cgi配置文件cgi.
cfg浏览器执行诸如重启Nagios服务等需要修改宏定义文件resource.
cfg定义插件路径不需修改命令定义文件commands.
cfg定义如何发送短信、邮件等需要修改其他文件contactgroups.
cfg,contacts.
cfg,hostgroups.
cfg,hosts.
cfg,services.
cfg监控对象配置文件,如主机配置文件、联系人配置文件等主配置文件包含,手动创建按照这个表格,我们逐一来配置.
(1)修改主配置文件nagios.
cfg.
基于方便维护的原则,将各个配置目标单独放在文件中,如联系人信息在contacts.
cfg中定义.
nagios.
cfg文件比较长,我只把修改过的内容截取出来:#注释或删掉这行#cfg_file=/usr/local/nagios/etc/localhost.
cfg#主机配置文件路径cfg_file=/usr/local/nagios/etc/hosts.
cfg#//主机组配置文件路径cfg_file=/usr/local/nagios/etc/hostgroups.
cfg#联系人配置文件路径cfg_file=/usr/local/nagios/etc/contacts.
cfg#联系组配置文件路径cfg_file=/usr/local/nagios/etc/contactgroups.
cfg#服务配置文件路径cfg_file=/usr/local/nagios/etc/services.
cfg#监视时段配置文件路径cfg_file=/usr/local/nagios/etc/timeperiods.
cfg#在Web界面下重启Nagios、停止主机/服务检查等操作,默认值是0check_external_commands=1#根据自己的情况定义这个命令检查时间间隔、默认值是1秒command_check_interval=10s(2)修改cgi配置文件cgi.
cfg.
同修改nagios.
cfg一样,这里只截取贴出被修改过的地方:#如有多个用户,中间用逗号隔开authorized_for_system_information=seryauthorized_for_configuration_information=seryauthorized_for_system_commands=seryauthorized_for_all_services=seryauthorized_for_all_hosts=nagiosadmin,seryauthorized_for_all_service_commands=seryauthorized_for_all_host_commands=sery在这里指定的用户"sery"可以通过浏览器操纵Nagios服务的关闭、重启等各种操作.
(3)修改commands.
cfg配置文件.
①修改notify-host-by-email(host-notify-by-email.
②修改notify-service-by-email(service-notify-by-email.
③新增以下内容:#'check_nrpe'commanddefinitiondefinecommand{command_namecheck_nrpecommand_line$USER1$/check_nrpe-H$HOSTADDRESS$-c$ARG1$}######host-notify-by-smscommanddefinitiondefinecommand{command_namehost-notify-by-smscommand_line/usr/local/bin/sms.
pl$CONTACTPAGER$"$NOTIFICATIONTYPE$alert-Host$HOSTNAME$is$HOSTSTATE$"}######service-notify-by-smscommanddefinitiondefinecommand{command_nameservice-notify-by-smscommand_line/usr/local/bin/sms.
pl$CONTACTPAGER$"$NOTIFICATIONTYPE$:$HOSTALIAS$/$SERVICEDESC$is$SERVICESTATE$"}第二个块定义主机报警的内容,即主机发生死机、恢复等情况时发送手机短信报警,其接受者和发送内容由"$.
.
$"定义的宏来决定.
第三个块定义服务报警内容,即监控的服务或监控的主机资源发生故障时发送手机短信报警.
Nagios规定,如果探测到被监控的主机停机或不可达,它就不再探测这个停机主机上的服务.
通俗点理解就是:主机都停了,当然服务也跟着停了!

(4)新增其他配置文件.
在主配置文件nagios.
cfg中,我们注释了行cfg_file=/usr/local/nagios/etc/localhost.
cfg,而使用若干单独的配置文件来定义各种对象,这样可以获得维护方便、书写规范等诸多方面的好处.
这些单独的配置文件不是自然存在的,需要我们手工创建并添加内容.
下面我按新添一个主机进入监控的较优方式添加这些配置文件(当然也可以有其他的顺序,这并不影响监控的效果).
好了,我们先把Nagios服务器本身给监控上,这些监控包括:主机存活Web服务监控磁盘空间监控负载监控进程数监控IP连接数监控①定义主机配置文件hosts.
cfgdefinehost{host_namenagios-serveraliasnagiosserveraddress59.
26.
240.
63contact_groupssagroupcheck_commandcheck-host-alivemax_check_attempts5notification_interval10notification_period24x7notification_optionsd,u,r}说明:联系组contact_group5没有建立,需在后面的步骤完成.
主机检查命令行check_command一般选择检查主机存活check-host-alive.
最大尝试次数max_check_attempts最好不要设置为"1",一般3~4次比较合理.
通知时间间隔notification_interval根据自己的实际情况设定,它的单位是分钟.
通知选项notification_options几个值的意思是d-down,u-unreacheable,r-recovery.
②定义主机组配置文件hostgroups.
cfgdefinehostgroup{hostgroup_namesa-serversaliassaserversmembersnagios-server}说明:这个配置文件不是必须的.
如果想在浏览器里方便归类及查看状态,可以添加这个文件.
主机组的成员必须是在hosts.
cfg中已经定义了的,多个主机成员间用逗号分隔.
③定义联系人配置文件contacts.
cfgdefinecontact{contact_nameseryaliassystemadministratorservice_notification_period24x7host_notification_period24x7service_notification_optionsw,u,c,rhost_notification_optionsd,u,rservice_notification_commandsservice-notify-by-email,service-notify-by-smshost_notification_commandshost-notify-by-email,host-notify-by-smsemailsery@163.
compager13301000018}说明:服务通知选项:w-warning,u-unknown,c-critical,r-recovery.
主机通知选项:d-down,u-unreacheable,r-recovery.
服务通知命令行在配置文件commands.
cfg中得到定义,如果有报警发生,则邮件和手机短信一起发送给相关人,即下面两行定义的email和pager.
收报警信息的邮件和手机:一个人若有两个手机,手机号之间用逗号分隔,邮件也如此.
如果这里定义的用户需要通过浏览器查看他所负责的服务器监控状态的话,还需要用Apache的工具htpasswd增加同名帐号.
④定义联系组配置文件contactgroups.
cfgdefinecontactgroup{contactgroup_namesagroupaliassystemadministratorgroupmemberssery}说明:当有多个人行使同样的职责时,定义成组是非常有用的.
多个成员之间用逗号分隔.
成员必须在联系人配置文件(contacts.
cfg)中已经定义.
⑤定义服务配置文件services.
cfgdefineservice{host_namenagios-serverservice_descriptioncheck-host-alivecheck_period24x7max_check_attempts4normal_check_interval3retry_check_interval2contact_groupssagroupnotification_interval10notification_period24x7notification_optionsw,u,c,rcheck_commandcheck-host-alive}defineservice{host_namenagios-serverservice_descriptioncheck_tcp80check_period24x7max_check_attempts4normal_check_interval3retry_check_interval2contact_groupssagroupnotification_interval10notification_period24x7notification_optionsw,u,c,rcheck_commandcheck_tcp!
80}defineservice{host_namenagios-serverservice_descriptioncheck-diskcheck_commandcheck_nrpe!
check_dfmax_check_attempts4normal_check_interval3retry_check_interval2check_period24x7notification_interval10notification_period24x7notification_optionsw,u,c,rcontact_groupssagroup}defineservice{host_namenagios-serverservice_descriptioncheck-loadcheck_commandcheck_nrpe!
check_loadmax_check_attempts4normal_check_interval3retry_check_interval2check_period24x7notification_interval10notification_period24x7notification_optionsw,u,c,rcontact_groupssagroup}defineservice{host_namenagios-serverservice_descriptiontotal_procscheck_commandcheck_nrpe!
check_total_procsmax_check_attempts4normal_check_interval3retry_check_interval2check_period24x7notification_interval10notification_period24x7notification_optionsw,u,c,rcontact_groupssagroup}说明:主机名host_name,必须是主机配置文件hosts.
cfg中定义的主机.
检查用的命令check_command要在命令配置文件中定义或在NRPE配置文件中有定义.
最大重试次数max_check_attempts一般设置为3~4次比较好,这样不会因为网络闪断片刻而发生误报.
检查间隔和重试检查间隔的单位是分钟.
通知间隔指探测到故障以后,每隔多少时间发送一次报警信息.
它的单位是分钟.
通知选项跟服务定义配置文件相同.
联系组contact_groups由配置文件contactgroup.
cfg定义.
检查主机资源需要安装和配置NRPE,这个过程在后面完成.
12.
3.
5部署NRPE1.
安装MPEtarzxvfnrpe-2.
8.
1.
tar.
gzcdnrpe-2.
8.
1/configure–prefix=/usr/local/nrpemakemakeinstall2.
复制文件安装完NRPE后,在安装目录/usr/local/nrpe/libexec中只有一个文件check_nrpe,而在Nagios插件目录中,却缺少这个文件,因此需要把这个文件复制到Nagios插件目录;同样,因为nrpe需要调用的诸如check_disk等插件在自己的目录中的没有,可是这些文件却是Nagios插件所存在的,所以也需要从Nagios目录复制一份过来.
下面把复制过程列举出来:cp/usr/local/nrpe/libexec/check_nrpe/usr/local/nagios/libexeccp/usr/local/nagios/libexec/check_disk/usr/local/nrpe/libexeccp/usr/local/nagios/libexec/check_load/usr/local/nrpe/libexeccp/usr/local/nagios/libexec/check_ping/usr/local/nrpe/libexeccp/usr/local/nagios/libexec/check_procs/usr/local/nrpe/libexec3.
配置nrpe安装完NRPE以后,在安装目录中并没有可用的配置文件,我们只需把解压目录的样例文件复制到安装目录,然后修改这个文件即可.
(1)mkdir/usr/local/nrpe/etc(2)cpsample-config/nrpe.
cfg/usr/local/nrpe/etc(3)修改配置文件/usr/local/nrpe/etc/nrpe.
cfg.
改过的地方用粗体显示:pid_file=/var/run/nrpe.
pidserver_port=5666#以单独的守护进程运行server_address=59.
26.
240.
63nrpe_user=nagiosnrpe_group=nagiosallowed_hosts=127.
0.
0.
1,59.
26.
240.
63dont_blame_nrpe=0debug=0command_timeout=60connection_timeout=300#Thefollowingexamplesusehardcodedcommandarguments.
.
.
command[check_users]=/usr/local/nrpe/libexec/check_users-w5-c10command[check_load]=/usr/local/nrpe/libexec/check_load-w15,10,5-c30,25,20#command[check_hda1]=/usr/local/nrpe/libexec/check_disk-w20-c10-p/dev/hda1command[check_df]=/usr/local/nrpe/libexec/check_disk-w20-c10command[check_zombie_procs]=/usr/local/nrpe/libexec/check_procs-w5-c10-sZcommand[check_total_procs]=/usr/local/nrpe/libexec/check_procs-w150-c200command[check_ips]=/usr/local/nrpe/libexec/ip_conn.
sh800010000说明:allowed_hosts=127.
0.
0.
1,59.
26.
240.
63:必须允许Nagios监控服务器可以访问.
command[check_df]=/usr/local/nrpe/libexec/check_disk-w20-c10:检查整个服务器的磁盘利用率.
如果是FreeBSD系统,因为其/dev分区为100%,需要排除这个分区,因此其命令行应该为"command[check_df]=/usr/local/nrpe/libexec/check_disk-x/dev-w20-c10".
command[check_ips]=/usr/local/nrpe/libexec/ip_conn.
sh800010000:IP连接数,ip_conn.
sh脚本需要自己写,下面给出脚本的内容:#!
/bin/sh#if[$#-ne2]#then#echo"Usage:$0-wnum1-cnum2"#exit3#fiip_conns=`netstat-an|greptcp|grepEST|wc-l`if[$ip_conns-lt$1]thenecho"OK-connectcountsis$ip_conns"exit0fiif[$ip_conns-gt$1-a$ip_conns-lt$2]thenecho"Warning-connectcountsis$ip_conns"exit1fiif[$ip_conns-gt$2]thenecho"Critical-connectcountsis$ip_conns"exit2fi我在NRPE配置文件nrpe.
cfg中把脚本所需的两个参数写上了,因此这个脚本就不需判断两个参数输入值的情况.
只要当前IP连接数大于8000,系统就发送warning报警,超过10000,则发送"critical"报警信息.
把这个脚本放在目录/usr/local/nrpe/libexec下,并赋予执行权限.

4.
启动NRPE服务并检验其配置(1)以独立守护进程启动NRPE服务:/usr/local/nrpe/bin/nrpe–c/usr/local/nrpe/etc/nrpe.
cfg–d(2)NRPE运行状态查看.
①通过查看系统日志,正常启动可以看到如下输出:Mar221:07:18MONITORnrpe[23823]:StartingupdaemonMar221:07:18MONITORnrpe[23823]:Listeningforconnectionsonport5666Mar221:07:18MONITORnrpe[23823]:Allowingconnectionsfrom:127.
0.
0.
1,59.
26.
240.
63②查看端口,也能看见5666端口处于监听状态:[root@MONITORnrpe]#netstat-anActiveInternetconnections(serversandestablished)ProtoRecv-QSend-QLocalAddressForeignAddressStatetcp0059.
26.
240.
63:56660.
0.
0.
0:*LISTEN③查看进程:[root@MONITORnrpe]#psaux|grepnrpe|grep-vgrepnagios238230.
00.
04864924Ss21:070:00bin/nrpe-cetc/nrpe.
cfg-d(3)检查插件功能①检查NRPE服务[root@MONITORnrpe]#libexec/check_nrpe-H59.
26.
240.
63NRPEv2.
8.
1②通过NRPE检查主机资源[root@MONITORnrpe]#libexec/check_nrpe-H59.
26.
240.
63-ccheck_dfDISKOK-freespace:/8241MB(77%inode=98%);/var5239MB(95%inode=99%);/usr11971MB(86%inode=97%);/dev/shm1013MB(100%inode=99%);|/=2417MB;11218;11228;0;11238/var=273MB;5792;5802;0;5812/usr=1807MB;14508;14518;0;14528/dev/shm=0MB;993;1003;0;1013[root@MONITORnrpe]#libexec/check_nrpe-H59.
26.
240.
63-ccheck_ipsOK-connectcountsis1395612.
3.
6启动Nagios服务(1)检查配置Nagios的验证非常准确,凡是不能正确启动Nagios的问题,皆可以从错误输出找到答案.
/usr/local/nagios/bin/nagios–v/usr/local/nagios/etc/nagios.
cfgReadingconfigurationdata.
.
.
Runningpre-flightcheckonconfigurationdata.
.
.
…(省略若干)TotalWarnings:0TotalErrors:0Thingslookokay-Noseriousproblemsweredetectedduringthepre-flightcheck(2)启动Nagios.
/usr/local/nagios/bin/nagios-d/usr/local/nagios/etc/nagios.
cfg(3)检验监控效果.
现在我们监控了本机的Web服务,但由于Apache服务还没有被启动起来,所以等待片刻,正常情况下会收到邮件和手机短信报警信息;等后面我们把Apache服务启动后,应该能够收到服务已经恢复的报警短信和邮件.

(4)创建Web验证用户.
根据前面Apache配置文件的验证方法来创建用户:/usr/local/apache/bin/htpasswd–c/usr/local/nagios/etc/htpasswdsery(5)启动Apache服务,然后在别的机器的浏览器地址栏中输入http://59.
26.
240.
63/nagios,再输入步骤(4)产生的用户名及设定的密码,即可通过Web方式查看监控系统当前的状态(浏览器自动刷新屏幕),如图12-4所示.
图12-4Nagios自身状态监控12.
4Nagios监控MySQL服务器监控MySQL需要在Nagios和MySQL服务器这两个部分做处理:MySQL服务器安装NRPE、创建MySQL访问监控用户;配置Nagios及用htpasswd创建浏览器验证帐号.
下面分步描述.

12.
4.
1在MySQL服务器上安装NRPE12.
4.
2创建MySQL访问用户Nagios12.
4.
3Nagios服务器上的操作12.
5Nagios监控MySQL主从复制Nagios监控MySQL主从复制请参看本书9.
4.
2节的内容.
12.
6Nagios监控其他服务器Nagios监控其他服务器的操作步骤跟监控MySQL差不多,这里不再赘述.
12.
7监控错误日志实例1.
目的(1)发现日志是否产生某个关键字(如系统日志的error).
(2)不从头重复检查.
日志文件不停滚动,每次从头检查的话,会查到已经发现的错误,就不符合我们的需求.
(3)发现新的关键字在日志中即发送报警.
2.
原理用Linux的diff工具,对比两个文件,并以grep提取我们要关注的"关键字",如果有输出,则表明有异常,然后报警,再把源文件拿去覆盖对比的那个对象文件.
3.
实验(1)工具:Nagios插件check_log.
(2)文件:/var/log/messages及/var/log/message.
arc.
文件/var/log/messages本不存在,是执行命令后自动生成的.
我们先来看一下/var/log/messages的内容:Mar2104:02:10MONITORsyslogd1.
4.
1:restart.
Mar2315:03:32MONITORkernel:Kernellogging(proc)stopped.
Mar2315:03:32MONITORkernel:Kernellogdaemonterminating.
Mar2315:03:33MONITORexitingonsignal15Mar2315:03:33MONITORsyslogd1.
4.
1:restart.
Mar2315:03:33MONITORkernel:klogd1.
4.
1,logsource=/proc/kmsgstarted.
现在执行:.
/check_log-F/var/log/messages-O/var/log/messages.
arc-q"stop"输出如下(因为/var/log/messages.
arc无内容):Mar2315:03:32MONITORkernel:Kernellogging(proc)stopped.
执行完毕后,两个文件的内容就一致了.
当我们再次执行:.
/check_log-F/var/log/messages-O/var/log/messages.
arc-q"stop"输出内容为:Logcheckok-0patternmatchesfound这表明当前并没有新的"stop"产生.
接下来,修改文件/var/log/messages.
arc,比如把stoped去掉一个s字母,然后执行:.
/check_log-F/var/log/messages-O/var/log/messages.
arc-q"stop"则会得出第一次执行的输出.
4.
结论和改进可以满足一定的需求,如以error做正则表达式来判断是否有错误产生.
改进脚本,使其有一定量的error产生时,发送警告,多于一个量时,则发送critical告警.
12.
8使用脚本部署NRPE要监控一个规模大一些的网络,如果纯粹手工部署nrpe到每个服务器,既容易出错,又没有效率.
要解决这个问题,使用脚本是一个比较理想的方式.
我已经把NRPE所需的文件打包归档,读者可以从http://221.
202.
126.
2/apmg/nrpe_install.
tgz下载,解包后进入目录,然后运行.
/setup.
sh即可完成安装和配置的全部操作.
安装脚本setup.
sh的内容如下:#!
/bin/sh#nrpeinstallscriptwritedbysery(sery@163.
com),2009-11-23Os_is=`uname`Nagios_is=`grepnagios/etc/passwd|wc-l`if["$Os_is"="Linux"]thenipadd=$(ifconfig|sed-n'2p'|awk'{print$2}'|awk-F:'{print$2}')if[$Nagios_is=0]thenuseraddnagios-s/sbin/nologinfielif["$Os_is"="FreeBSD"]thenipadd=$(ifconfig|sed-n'4p'|awk'{print$2}')if[$Nagios_is=0]then/usr/sbin/pwuseraddnagios-s/sbin/nologinFielseecho"thisisotheros,pleasemodifythescript"exit1fi#installnrpePREFIX=/usr/local/nrpetarzxvfnrpe-2.
12.
tar.
gzcdnrpe-2.
12.
/configure--prefix=$PREFIXMakemakeinstallecho"nrpeinstallok.
.
.
.
!
"sleep3cd.
.
if[!
-d$PREFIX/etc]thenmkdir$PREFIX/etcfi#installnagios-pluginstarzxvfnagios-plugins-1.
4.
14.
tar.
gzcdnagios-plugins-1.
4.
14.
/configure--prefix=$PREFIXMakemakeinstallcd.
.
echo"nagios-pluginsisok!
"sleep3#settingnrpecpip_conn.
sh$PREFIX/libexecchmod-R+x$PREFIX/libexecsed-e/^server_add/s/$/"$ipadd"/-e/^allowed_hosts/s/$/$ipadd/nrpe.
cfg>$PREFIX/etc/nrpe.
cfg#runningnrpecd$PREFIXbin/nrpe-cetc/nrpe.
cfg–decho"haha!
nrpeisrunning!
!
!
"12.
9Nagios故障处理汇集本小节收集两个Nagios故障处理实例.
12.
9.
1Nagios不能发送飞信报警受人之托,为其调试了一下Nagios不能发送飞信报警的问题.
过程很简单,但其中的技巧却值得拿出来分享.
1.
问题描述(1)以Web方式查看Nagios监控状态,显示故障,却收不到报警短信.
(2)系统日志出现:Warning:Attemptingtoexecutethecommand"/usr/local/fetion/fetion--mobile=13660600600--pwd=little228--to=13909088009--msg-utf8="[Linux1-CRITICAL]CHECK_NRPE:Sockettimeoutafter10seconds.
(20:51:12)""resultedinareturncodeof127.
Makesurethescriptorbinaryyouaretryingtoexecuteactuallyexists.
.
.
"2.
情况了解该系统管理员说,他用手工方式执行飞信发短信没问题,再切换成用户Nagios,也没问题.
3.
处理过程(1)登录该服务器,查看系统日志和Nagios日志,果然如此.
(2)查看飞信所在的目录,发现已经被系统管理员设置成777了.
(3)先修改一下他的/etc/sudoers文件,用visudo进去,新增一行并保存.
nagiosALL=NOPASSWD:/usr/local/feiton/feiton(4)切换到Nagios用户:su-nagios(5)执行:sudo/usr/local/feiton/feiton报无lib*.
so文件.
(6)切换回root,查一下/usr/lib目录,果然没有这些lib*.
so.
(7)从这个目录,把这些lib*.
so统统拷贝到/usr/lib目录.
(8)再切换到Nagios用户执行sudo/usr/local/feiton/feiton,无报错了.
(9)停止一个监控机上的服务,片刻,就发送短信了.
对于监控短信报警,建议使用短信接口.
如用飞信,则不能给其他运营商的手机发送报警短信.
12.
9.
2FreeBSD下解决Nagios不发送报警邮件的问题最近在一个新安装的FreeBSD7系统部署一套Nagios监控系统,主要用来监控主机的存活状态、网络服务的状态以及远程主机的资源利用情况.
尽管FreeBSD安装源码有些麻烦,但最终还是把Nagios正确安装上了,并且能正常工作,通过Web方式也能看见监控对象的状况,如图12-5所示.

图12-5Web方式查看Nagios报警状态(1)其中有一个服务器的443端口对应的服务发生故障了,可是等了半天就是收不到报警邮件.
登录Nagios所在的系统,检查与邮件发送相关的情况,其操如下.
(1)检查Sendmail是否启动:psaux|grepsendmail结果正常.
(2)用mail程序手动发送一封邮件给我的邮箱:mail–s"Thisisamailtestproject"sery@163.
com,ctladdr=(1003/1003),delay=00:00:02,xdelay=00:00:01,mailer=esmtp,pri=30623,relay=163mx02.
mxmail.
netease.
com.
[220.
181.
12.
66],dsn=2.
0.
0,stat=Sent(MailOKqueuedasmx16,QsCowLDbPSxWFYxIb6TzGw==.
27600S21217140055)看来Nagios并没有调用Sendmail发送邮件.
差点忘了,Nagios自己也有日志记录呢!
赶快打开看一看,发现里面有许多Warning,抽一个出来,其内容如下:[1217166816]HOSTNOTIFICATION:sery;mail-server;DOWN;host-notify-by-email;CRITICAL-Plugintimedoutafter10seconds[1217166816]Warning:Attemptingtoexecutethecommand"/usr/bin/printf"%b"Nagios2.
9*****\n\nNotificationType:PROBLEM\nHost:mail-server\nState:DOWN\nAddress:211.
155.
115.
66\nInfo:CRITICAL-Plugintimedoutafter10seconds\n\nDate/Time:SunJul2713:53:36UTC2008\n"|/bin/mail-s"HostDOWNalertformail-server!
"[email]sery@163.
com[/email]"resultedinareturncodeof127.
Makesurethescriptorbinaryyouaretryingtoexecuteactuallyexists.
.
.
其他的行也和这个类似;最有用的信息我用粗体带下划线标记,其大意是不能执行上面的二进制或可执行文件.
在这个条目中,只有两个执行文件——printf及mail.
我把它照原样单独拿出来执行,操作过程如下:(1)/usr/bin/printf""%b"Nagios2.
9*****\n"输出:*****Nagios2.
9*****这是正常的结果.
(2)/bin/mail-s"HostDOWNalertformail-server!
"sery@163.
com输出:su:/bin/mail:Nosuchfileordirectory没找到路径或目录.
前面还手动发送了邮件的,是有mail这个客户端程序呀!
可能这个路径不对,是Linux的mail路径.
查一下FreeBSD的mail路径,执行find/-name得到mail在FreeBSD的路径为/usr/bin/mail.
到这里,我们知道了为啥不能发送邮件的根本原因.
接下来,我把Nagios的配置文件commands.
cfg的host-notify-by-email、service-notify-by-email的"/bin/mail"替换为"/usr/bin/mail".
其完整形式为:#'host-notify-by-email'commanddefinitiondefinecommand{command_namehost-notify-by-emailcommand_line/usr/bin/printf"%b"Nagios2.
9*****\n\nNotificationType:$NOTIFICATIONTYPE$\nHost:$HOSTNAME$\nState:$HOSTSTATE$\nAddress:$HOSTADDRESS$\nInfo:$HOSTOUTPUT$\n\nDate/Time:$LONGDATETIME$\n"|/usr/bin/mail-s"Host$HOSTSTATE$alertfor$HOSTNAME$!
"$CONTACTEMAIL$}#'notify-by-email'commanddefinitiondefinecommand{command_nameservice-notify-by-emailcommand_line/usr/bin/printf"%b"Nagios2.
9*****\n\nNotificationType:$NOTIFICATIONTYPE$\n\nService:$SERVICEDESC$\nHost:$HOSTALIAS$\nAddress:$HOSTADDRESS$\nState:$SERVICESTATE$\n\nDate/Time:$LONGDATETIME$\n\nAdditionalInfo:\n\n$SERVICEOUTPUT$"|/usr/bin/mail-s"**$NOTIFICATIONTYPE$alert-$HOSTALIAS$/$SERVICEDESC$is$SERVICESTATE$**"$CONTACTEMAIL$}修改完配置文件commands.
cfg后重启Nagios,再查看Nagios日志,不再有"Makesurethescriptorbinaryyouaretryingtoexecuteactuallyexists.
.
.
"报错,并且有发送报警邮件的记录了:[root@nagios/usr/local/nagios/var]#tail-fnagios.
log[1217170467]SERVICEALERT:mail-server;check_tcp995;CRITICAL;SOFT;1;CRITICAL-Sockettimeoutafter10seconds[1217170534]Auto-saveofretentiondatacompletedsuccessfully.
[1217170577]HOSTALERT:mail-server;DOWN;SOFT;1;CRITICAL-Plugintimedoutafter10seconds[1217170587]HOSTALERT:mail-server;DOWN;SOFT;2;CRITICAL-Plugintimedoutafter10seconds[1217170597]HOSTALERT:mail-server;DOWN;SOFT;3;CRITICAL-Plugintimedoutafter10seconds[1217170607]HOSTALERT:mail-server;DOWN;SOFT;4;CRITICAL-Plugintimedoutafter10seconds[1217170607]HOSTALERT:mail-server;UP;SOFT;5;PINGOK-Packetloss=0%,RTA=111.
63ms[1217170607]SERVICEALERT:mail-server;check_tcp995;CRITICAL;SOFT;2;CRITICAL-Sockettimeoutafter10seconds[1217170687]SERVICEALERT:mail-server;check_tcp995;OK;SOFT;3;TCPOK-3.
137secondresponsetimeonport995[1217171057]SERVICENOTIFICATION:sery;fav-0;check_tcp443;CRITICAL;service-notify-by-email;CRITICAL-Sockettimeoutafter10seconds收邮件.
我的163邮箱终于收到久违的报警信息了.
再回去看看邮件日志/var/log/maillog,也记录了这个发送情况.
12.
10Nagios监控策略有人曾经问我怎么用Nagios监控Linux内存的使用情况,以及怎么设置报警阈值Linux运行时,是最大可能地利用内存,监控这个对象没有现实意义,明显属于无效的监控策略.
另有一人说"晚上没完没了地收到监控系统发送的报警短信,受不了……".
不言而喻,这也是一个不好的监控策略,实际上监控已经失去了它的意义.
所以要让监控平台更有效地发挥作用,好的策略是必须的.
那么怎样才能算是好的策略.
这里我结合自己的实际情况,谈谈一些看法,希望对大家有所帮助.

spinservers($89/月),圣何塞10Gbps带宽服务器,达拉斯10Gbps服务器

spinservers是Majestic Hosting Solutions LLC旗下站点,主要提供国外服务器租用和Hybrid Dedicated等产品的商家,数据中心包括美国达拉斯和圣何塞机房,机器一般10Gbps端口带宽,高配置硬件,支持使用PayPal、信用卡、支付宝或者微信等付款方式。目前,商家针对部分服务器提供优惠码,优惠后达拉斯机房服务器最低每月89美元起,圣何塞机房服务器最低每月...

瓜云互联:全场9折优惠,香港CN2、洛杉矶GIA高防vps套餐,充值最高返300元

瓜云互联怎么样?瓜云互联之前商家使用的面板为WHMCS,目前商家已经正式更换到了魔方云的面板,瓜云互联商家主要提供中国香港和美国洛杉矶机房的套餐,香港采用CN2线路直连大陆,洛杉矶为高防vps套餐,三网回程CN2 GIA,提供超高的DDOS防御,瓜云互联商家承诺打死退款,目前商家提供了一个全场9折和充值的促销,有需要的朋友可以看看。点击进入:瓜云互联官方网站瓜云互联促销优惠:9折优惠码:联系在线客...

CloudCone:$17.99/年KVM-1GB/50GB/1TB/洛杉矶MC机房

CloudCone在月初发了个邮件,表示上新了一个系列VPS主机,采用SSD缓存磁盘,支持下单购买额外的CPU、内存和硬盘资源,最低年付17.99美元起。CloudCone成立于2017年,提供VPS和独立服务器租用,深耕洛杉矶MC机房,最初提供按小时计费随时退回,给自己弄回一大堆中国不能访问的IP,现在已经取消了随时删除了,不过他的VPS主机价格不贵,支持购买额外IP,还支持购买高防IP。下面列...

怎么用飞信发短信为你推荐
支持ipad支持ipad支持ios齐鲁工业大学高水平学科建设专项ipad连不上wifiiPad mini WiFi开关成灰色无法连接,怎么办联通iphone4联通iphone4怎么样,好不好用?win7关闭135端口如何用命令关闭135端口css选择器CSS的常见选择器有哪几种迅雷雷鸟雷鸟手机谁用过性能怎样样?fastreport2.5现在化工中,法兰中pn2.5是什么意思
ip反查域名 photonvps winhost 新世界电讯 国外网站代理服务器 刀片服务器是什么 谁的qq空间最好看 网站cdn加速 域名接入 phpmyadmin配置 starry 帽子云排名 godaddy空间 wordpress空间 新网dns accountsuspended 百度新闻源申请 机柜尺寸 WHMCS asp简介 更多