nagios 配置不发出notification,求助

nagios整合gnokii短信报警出错求助, nagios整合gnokii短信报警出错
nagios整合gnokii短信报警出错求助 使用两台测试机架的nagios,一台做主机****机,一台做被****机,都是centos5.4,两台机器的基本service已经全部****起来OK状态,今天公司搞了个短信猫给我,让我整合一下gnokii短信报警功能,然后也下了很多文档来看,把所有要装的东东全部安装上,并且使用root用户或者切换到nagios用户使用echo -n “test message” | /usr/local/bin/gnokii --sendsms 134******** 也都能成功发到我****上完全没有问题,(像/dev/ttyS0拥有人和拥有组之类的也都改成了nagios)commands.cfg里的 “notify-service-by-sms 和 notify-host-by-sms ”命令也都定义了的!绝对没有copy
自己一个个敲上去的,绝不可能出现gnokii绝对路径错误这样的问题,(本人用which gnokii命令查看过的,绝对路径在/usr/local/bin/gnokii),但是我故意down掉一个服务后,nagios发送se阀护脆咎诒侥错鞋氮猫rvice notification短信的时候总是显示Connection refused!!让我百思不得其解啊!明明已经测试用短信能成功发到****上的,为什么用nagios自动发送报警短信就会出现连接拒绝呢???求高人相助!!!解决立马给分!!问题补充:
notifications_enabled=1也是设置好了的
weixiang406ㄏ尬侍獍....煮酒品茶 的BLOG
用户名:煮酒品茶
文章数:120
评论数:886
访问量:1006515
注册日期:
阅读量:5863
阅读量:12276
阅读量:305861
阅读量:1023423
51CTO推荐博文
检测命令篇:
文中内容包括:序述nagios从发现主机到web界面显示出状态再到邮件报警的整个过程。方面以后进行排错,还有如何编写特定应用的特定检测程序。
煮酒品茶:文章需要改进的有如何做触发报警的条件,警告等。
1、说明一些定义一些宏资料。
nth argument passed to the command (notification, event handler,
service check, etc.). Nagios supports up to 32 argument macros ($ARG1$
through $ARG32$).
The&nth user-definable macro. User macros can be defined in one or more&. Nagios supports up to 256 user macros ($USER1$ through $USER32$).
&2、解决问题,报警四种状态。
服务和主机配置文件中的&check_command & & & & & check-host-alive&是什么意思呢?
[root@weihack objects]# pwd
/usr/local/nagios/etc/objects
[root@weihack objects]# cat commands.cfg #发现这么一项:
&define command{
& & & & command_name & &check-host-alive
& & & & command_line & &$USER1$/check_ping -H $HOSTADDRESS$ -w % -c % -p 5
看看命令行:$USER1$/check_ping -H $HOSTADDRESS$ -w % -c % -p 5
[root@weihack libexec]# pwd
/usr/local/nagios/libexec
[root@weihack libexec]# ./check_ping -H 192.168.100.85 -w % -c % -p 5
PING OK - Packet loss = 0%, RTA = 0.05 ms|rta=0..0..000000 pl=0%;80;100;0
# Web界面 Status Information 里面是不是出现了PING OK - Packet loss = 0%, RTA = 0.05 ms这样的东东。
# -h 使用方法都出来了,由此我们可以看出。ping 192.168.100.85 3000警告,5000直接报警。目前为0.055ms 发送五个包。那很很清晰了。
&[root@weihack libexec]# ./check_ping -h
Use ping to check connection statistics for a remote host.
Usage:check_ping -H &host_address& -w &wrta&,&wpl&% -c &crta&,&cpl&%
&[-p packets] [-t timeout] [-4|-6]
&-h, --help
& & Print detailed help screen
&-V, --version
& & Print version information
&-4, --use-ipv4
& & Use IPv4 connection
&-6, --use-ipv6
& & Use IPv6 connection
&-H, --hostname=HOST
& & host to ping
&-w, --warning=THRESHOLD
& & warning threshold pair
&-c, --critical=THRESHOLD
& & critical threshold pair
&-p, --packets=INTEGER
& & number of ICMP ECHO packets to send (Default: 5)
&-L, --link
& & show HTML in the plugin output (obsoleted by urlize)
&-t, --timeout=INTEGER
& & Seconds before connection times out (default: 10)
# 倒底有多少个这样的定义的命令的?
&[root@weihack objects]# cat commands.cfg |grep command_name
command_name notify-host-by-email
command_name notify-service-by-email
& & & & command_name & &check-host-alive
& & & & command_name & &check_local_disk
& & & & command_name & &check_local_load
& & & & command_name & &check_local_procs
& & & & command_name & &check_local_users
command_name check_local_swap
command_name check_local_mrtgtraf
& & & & command_name & &check_ftp
& & & & command_name & &check_hpjd
& & & & command_name & &check_snmp
& & & & command_name & &check_http
command_name check_ssh
command_name check_dhcp
& & & & command_name & &check_ping
& & & & command_name & &check_pop
& & & & command_name & &check_imap
& & & & command_name & &check_smtp
command_name check_tcp
command_name check_udp
command_name check_nt
command_name process-host-perfdata
command_name process-service-perfdata
#挑一条notify-host-by-email,可以清楚的看到发送邮件的过程。
&define command{
& & & & command_name & &notify-host-by-email
& & & & command_line & &/usr/bin/printf &%b& &***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n& | /bin/mail -s &** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **& $CONTACTEMAIL$
#打散开来看,是不是可以定制邮件发送格式了?
&/usr/bin/printf &%b& &***** Nagios *****\n\n
Notification Type: $NOTIFICATIONTYPE$\n
Host: $HOSTNAME$\nState: $HOSTSTATE$\n
Address: $HOSTADDRESS$\n
Info: $HOSTOUTPUT$\n\n
Date/Time: $LONGDATETIME$\n
& | /bin/mail -s &** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **& $CONTACTEMAIL$
#到手的邮件是这样子的。
&主 题: ** RECOVERY Host Alert: rsync-89 is UP ** & [新窗口打开]
时 间: & 22:57 (星期三)
发件人: nagios&nagios@phx2-ss-et.com& & [添加联系人] &[邮件往来] &[拒收]
收件人: &我&&
**** Nagios *****
Notification Type: RECOVERY
Host: rsync-89
Address: 192.168.100.89
Info: PING OK - Packet loss = 0%, RTA = 0.32 ms
Date/Time: Wed Mar 13 22:57:44 CST 2013
#那我们加一个监控服务,看看全程如何工作的。查看端口22是否保持链接。check_tcp,我们先看看用法。
&[root@weihack libexec]# ./check_tcp -h
Usage:check_tcp -H host -p port [-w &warning time&] [-c &critical time&] [-s &send string&]
[-e &expect string&] [-q &quit string&][-m &maximum bytes&] [-d &delay&]
[-t &timeout seconds&] [-r &refuse state&] [-M &mismatch state&] [-v] [-4|-6] [-j]
[-D &days to cert expiry&] [-S &use SSL&] [-E]
&-h, --help
& & Print detailed help screen
&-V, --version
& & Print version information
&-H, --hostname=ADDRESS
& & Host name, IP Address, or unix socket (must be an absolute path)
&-p, --port=INTEGER
& & Port number (default: none)
&-4, --use-ipv4
& & Use IPv4 connection
&-6, --use-ipv6
& & Use IPv6 connection
&-E, --escape
& & Can use \n, \r, \t or \ in send or quit string. Must come before send or quit option
& & Default: nothing added to send, \r\n added to end of quit
&-s, --send=STRING
& & String to send to the server
&-e, --expect=STRING
& & String to expect in server response (may be repeated)
&-A, --all
& & All expect strings need to occur in server response. Default is any
&-q, --quit=STRING
& & String to send server to initiate a clean close of the connection
&-r, --refuse=ok|warn|crit
& & Accept TCP refusals with states ok, warn, crit (default: crit)
&-M, --mismatch=ok|warn|crit
& & Accept expected string mismatches with states ok, warn, crit (default: warn)
&-j, --jail
& & Hide output from TCP socket
&-m, --maxbytes=INTEGER
& & Close connection once more than this number of bytes are received
&-d, --delay=INTEGER
& & Seconds to wait between sending string and polling for response
&-w, --warning=DOUBLE
& & Response time to result in warning status (seconds)
&-c, --critical=DOUBLE
& & Response time to result in critical status (seconds)
&-t, --timeout=INTEGER
& & Seconds before connection times out (default: 10)
&-v, --verbose
& & Show details for command-line debugging (Nagios may truncate output)
#这似乎是具体方法,让我们看看command里定义的。
&define command{
& & & & command_name & &check_tcp
& & & & command_line & &$USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$
#对照上表-H 主机地址,-p 端口 接受参数1 2
#我找不到定义的文件在哪呢,$USER1$是路径也就是/usr/local/nagios/libexec,后面三个也一样。那么可构造 check_tcp 22,$ARG1$ $ARG2$用!号隔开。$USER1$的定义在文件:
[root@weihack objects]# cat /usr/local/nagios/etc/resource.cfg |grep USER1
&# Nagios supports up to 32 $USERx$ macros ($USER1$ through $USER32$)
# Sets $USER1$ to be the path to the plugins
$USER1$=/usr/local/nagios/libexec
The nth argument passed to the command (notification, event handler, service check, etc.). Nagios supports up to 32 argument macros ($ARG1$ through $ARG32$).
The&nth user-definable macro. User macros can be defined in one or more&. Nagios supports up to 256 user macros ($USER1$ through $USER32$).
我们添加服务
&[root@weihack objects]# vim services.cfg&
define service {
& & & & host_name & & & &rsync-89
& & & & service_description & check_tcp 80
& & & & check_period & & & & &24x7
& & & & max_check_attempts & &4
& & & & normal_check_interval 3
& & & & retry_check_interval &2
& & & & contact_groups & & & &ktm
& & & & notification_interval & 10
& & & & notification_period & & 24x7
& & & & notification_options & &w,u,c,r
& & & & check_command & & & & & check_tcp!80
#验证下并滑溜运行程序。
[root@weihack objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg&
[root@weihack nagios]# kill -Hup 8670
#运行成功,那我们想自由自在的构造一些检测,如何实现?做个实验.
#check_ping 主要输出这些:PING OK - Packet loss = 0%, RTA = 0.06 ms|rta=0..0..000000 pl=0%;80;90;0
&[root@weihack libexec]# cat /test/passwd |wc -l
#假设有用户则显示用户数,无用户为空则报警。如何设计?
[root@weihack libexec]# touch /test/passwda
[root@weihack libexec]# cat check_user
#check_user_nagios &cwtea
#blog: cwtea.
cu=`cat /test/passwda |wc -l`
if [ $cu -ne 0 ]; then
echo &User OK - User is running (UserNumber: ${cu})&
echo &User CRITICAL,&User is none&&
[root@weihack libexec]# ./check_user
&User CRITICAL,User is none
&[root@weihack libexec]# ./check_user
User OK - User is running (UserNumber: 25)
#添加一个定义check_user
[root@weihack objects]# vim commands.cfg&
&#check user
define command{
& & & & command_name & &check_user
& & & & command_line & &$USER1$/check_user&
#添加一项服务
[root@weihack objects]# vim services.cfg
&define service {
& & & & host_name & & & &rsync-89
& & & & service_description & check_user
& & & & check_period & & & & &24x7
& & & & max_check_attempts & &4
& & & & normal_check_interval 3
& & & & retry_check_interval &2
& & & & contact_groups & & & &ktm
& & & & notification_interval & 10
& & & & notification_period & & 24x7
& & & & notification_options & &w,u,c,r
& & & & check_command & & & & & check_user
#kill -Hup 23377
#web界面看看,已经出现了。
#我们把文件弄成空的。
[root@weihack objects]# rm -rf /test/passwd
[root@weihack objects]# touch /test/passwd
#状态显示是OK的,但是信息栏已经出现了我们想要的。
check_user OK
0d 0h 3m 25s
User CRITICAL,User is none&
#我们加个返回状态码 exit 2
[root@weihack libexec]# cat check_user
&#check_user_nagios &cwtea
#blog: cwtea.
cu=`cat /test/passwd |wc -l`
if [ $cu -ne 0 ]; then
echo &User OK - User is running (UserNumber: ${cu})&
&&&&&&& #Is OK.
&&&&&&& exit 0
echo &User CRITICAL,&User is none&&
#过会儿,再看已经down掉了。
#邮件报警等了好久才来
&主 题:& ** PROBLEM Service Alert: rsync 89/check_user is CRITICAL ** & [新窗口打开]
00:32 (星期四)
发件人:& nagios&nagios@phx2-ss-et.com& & [添加联系人] &[邮件往来] &[拒收]
收件人:& 我&&
***** Nagios *****
Notification Type: PROBLEM
Service: check_user
Host: rsync 89
Address: 192.168.100.89
State: CRITICAL
Date/Time: Thu Mar 14 00:32:39 CST 2013
Additional Info:
User CRITICAL,User is none
了这篇文章
类别:┆阅读(0)┆评论(0)
17:23:18 17:41:13CentOS 5.2安装Nagios实现短信报警笔记
阅读:2306次&&&时间: 16:39:49&&
nagios,难过死,难走死。反正不管咋叫,就是个难!自从上星期开始,折腾nagios快两个礼拜了,就想实现短信告警。东找找西找找,发现天下文章一大抄,一个人写的东西被N多人转来转去,甚至有的人还不知羞耻地把别人的东西弄成自己的原创了。唉,世风日下人心不古啊。而且多数的说明都很笼统,一边找,一边自己琢磨。整个过程中,前面2/3的时间最难熬,有无数次撞墙的冲动......后面1/3基本开窍了,终于差不多了。贴一把,给自己点鼓励。
主要参考资料:
软件如下:
CentOS 5.2,安装时怕又出现这依赖那依赖的,把develop tools选上,省事,硬盘也有地方。
nagios-3.0.3
nagios-plugin-1.4.13
gnokii,一个gnokii-0.6.28cvs,另一个0.6.12,分别测试的。
CentOS自带的httpd-2.2,看网上好多介绍都是用源码装httpd,我嫌麻烦。
gd-devel,如果需要nagios绘制图表,这个东西就得有。
一.建组建帐号
groupadd nagcmduseradd apacheuseradd nagiosusermod -G nagcmd nagiosusermod -G nagcmd apache
二.编译nagios-3.0.3
./configure --with-command-group=nagcmdmake allmake installmake install-initmake install-commandmodemake install-config
三.配置WEB接口
make install-webhtpasswd -c /usr/local/nagios/etc/htpasswd.创建一个登录WEB的帐号
四.装nagios-plugin-1.4.13
./configure --with-nagios-user=nagios --with-nagios-group=nagiosmakemake install五.将nagios加入服务并启动,同时启动apache
chkconfig --add nagioschkconfig nagios on
验证nagios的安装
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果出现下面的提示就OK了
......Total Warnings: 0Total Errors:&& 0
Things look okay - No serious problems were detected during the pre-flight check[root@host nagios]#
启动nagios和apache服务
service nagios startservice httpd start
六.禁用selinux我登录WEB页面好几次都无法通过验证,仔细看了一下说明发现是selinux的问题。
#setenforce 0
这么改完不需要重启系统就可生效,Getenforce可看到permissive。但一重启就又得来一次,我的CentOs上也没别的,直接disable吧
[root@host nagios]# more /etc/selinux/config# This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:#&&&&&& enforcing - SELinux security policy is enforced.#&&&&&& permissive - SELinux prints warnings instead of enforcing.#&&&&&& disabled - SELinux is fully disabled.SELINUX=disabled
现在可以用http://IP/nagios来登录了,用户名nagiosadmin。不过这时什么设备、服务都没监控,就是个花架子。
我第一次安装成功时直接用http://ip登录的,之后再装,每次打开都是apache的默认页面,后来在论坛里“不是神不会猜的”jerrywjl指导了一下,才登录成功。不过百思不得其解,第一次装的时候就老老实实地把步骤记下来了,以后都是把命令copy到屏幕上装的,为啥就不一样了?还是jerrywjl说了,肯定有不一样的地方,机器不会骗我们。不管如何,能用就行。七.定义联系人和联系人组。我定义了三个人,两个组。前两个人在第一组里,第三个人在第二组里。
#### 定义第一个联系人define contact{&&&&&&&&&&& ;&&&&&&& &&&&&&& contact_name&&&&& user1 &&&&&&& use&&&&&&&&&&&&&& generic-contact &&&&&&& alias&&&&&&&&&&&&& Nagios Admin&&&&&&& service_notification_commands&& service-by-sms,notify-service-by-email& ;短信和邮件告警。
##service-by-sms是我用来发短信的命令,默认情况下,这个命令是commands.cfg里没有的。##所以加完这个配置后,在commands.cfg定义这个命令之前,nagios是无法正常restart的。## 当然如果没有service-by-sms和host-by-sms,nagios还是随便restart的。废话真多。^_^
&&&&&&& host_notification_commands&&&&& host-by-sms,notify-host-by-email&&&& &&&&&&& email&&&&&&&&&& [email][/email]&&&&&&& pager&&&&&&&&&&&& 133&&& ;手机号码&&&&&&& }### 定义第二个联系人define contact{&&&&&&&&&&& ;&&&&&&& &&&&&&& contact_name&&&&&& user2&&&&&&& use&&&&&&&&&&&&&& generic-contact &&&&&&& alias&&&&&&&&&&&&& Nagios Admin&&&&& &&&&&&& service_notification_commands&& service-by-sms,notify-service-by-email& &&&&&&& host_notification_commands&&&&& host-by-sms,notify-host-by-email&&&&&&&& &&&&&&& email&&&&&&&&&&& [email][/email]&&&&&&& pager&&&&&&&&&&&& 137xxxxxxxx&&&&&&& }#### 定义第三个联系人define contact{&&&&&&&&&&& ;&&&&&&& &&&&&&& contact_name&&&&& user3&&&&&&& use&&&&&&&&&&&&&& generic-contact &&&&&&& alias&&&&&&&&&&&&& Nagios Admin&&&&&& &&&&&&& service_notification_commands&& service-by-sms,notify-service-by-email& &&&&&&& host_notification_commands&&&&& host-by-sms,notify-host-by-email&&&&&&&& &&&&&&& email&&&&&&&&&&& [email][/email]&&&&&&& pager&&&&&&&&&&&& 139&&&&&&& }#### 定义联系人组define contactgroup{&&&&&&& contactgroup_name&&&&&& admins&& &&&&&&& alias&&&&&&&&&&&&&&&&&& Nagios Administrators&&&&&&& members&&&&&&&&&&&&&&&& user1,user2&&& &&&&&&& }
define contactgroup{&&&&&&& contactgroup_name&&&&&& test_group&&&&&&& alias&&&&&&&&&&&&&&&&&& Test&&&&&&& members&&&&&&&&&&&&&&&& user3&&&&&&& }
八.设置被监控的windows服务器。
找了个NSClient++-Win32-0.3.5.msi的安装包,直接装上,服务里就带了NSC++的服务,登录方式允许与桌面交互。
又照着网上的把文件注释都去掉。只有CheckWMI.dll和RemoteConfiguration.dll前面的注释保留。
网上N多资料都写着建议加password,可是加完了怎么用一直没人说,每个文章连标点符号都一样,shit!!!天下文章一大抄害死人啊!
[Settings]password=123456 ;这个密码在nagios的主机配置文件中这么用,check_command xxxxxx& -s 123456allowed_hosts=192.168.0.0/16 ;允许nagios服务器访问,也可以定义主机,比如:allow_hosts=192.168.1.250/32port=12489
启动服务。windows服务器图标右下角出现有两个重叠的加号,当然有的服务器没出来,不知道为啥,反正12489端口通了,能用就行!九.修改nagios参数,注释本机配置文件,取消注释 windows.cfg。要是有多个主机配置文件就继续在nagios里加,主机配置文件的格式跟windows.cfg一样就行了。
vi /usr/local/nagios/etc/nagios.cfg#cfg_file=/usr/local/nagios/etc/objects/localhost.cfgcfg_file=/usr/local/nagios/etc/objects/windows.cfgcfg_file=/usr/local/nagios/etc/objects/test/winhosts.配置文件路径自定义,随便!
nagios.cfg里有一行配置command_check_interval=-1,据说这个值是nagios根据自身情况自定义检查时间,尽可能快地检查。但我没发现,我把它改成10s,20s都没用,我最后只好在windows.cfg和其他hosts.cfg里自己加了。看看哪位有空帮忙解答一下。修改/user/local/nagios/etc/objects/windows.cfg。监控CPU、监控内存,监控进程。看了网上N多2.9的资料,发现3.0.3省了很多东西,真庆幸。里面有很多参数都省略了,但是想用到怎么办,也是自己加了。我在测试时就加了normal_check_interval、max_check_attempts和congtact_groups这三个
define host{&&&&&&& use&&&&&&&&&&&& windows-server& ; Inherit default values from a template&&&&&&& host_name&&&&&& 192.168.0.1&& ; 因为我们平时工作交流时描述主机都用IP地址描述,这里就懒得改了,一招烩了吧!&&&&&&& alias&&&&&&&&&& sunfeng's laptop&&&&&&& ; A longer name associated with the host&&&&&&& address&&&&&&&& 192.168.0.1&& ; IP address of the host&&&&&&& }
define service{&&&&&&& use&&&&&&&&&&&&&&&&&&&& generic-service&&&&&&& host_name&&&&&&&&&&&&&& 192.168.0.1&&&&&&& max_check_attempts&&&&& 5&&&&&&&& ;检查多少次,依然有问题时告警。nagios3.0.3配置里是没有这行的,默认就是3。好像2.x版本的有,不过我没用过2.x。&&&&&&& normal_check_interval&& 15&&&&&&& ;监控周期。有的文档里描述这行的单位是秒,但我试出来的是分钟。这行默认配置里也没有,默认好像是10分钟。&&&&&&& service_description&&&& Uptime&&&&&&& check_command&&&&&&&&&& check_nt!UPTIME&& -s 123456 ;嘿嘿,windows的NSC++密码用上了!&&&&&&& }
define service{&&&&&&& use&&&&&&&&&&&&&&&&&&&& generic-service&&&&&&& host_name&&&&&&&&&&&&&& 192.168.0.1&&&&&&& max_check_attempts&&&&& 3&&&&&&& normal_check_interval&& 15&&&&&&& service_description&&&& CPU Load&&&&&&& check_command&&&&&&&&&& check_nt!CPULOAD!-l 5,80,90 -s 123456&&&&&&& }
define service{&&&&&&& use&&&&&&&&&&&&&&&&&&&& generic-service&&&&&&& host_name&&&&&&&&&&&&&& 192.168.0.1&&&&&&& service_description&&&& CMD&&& &&&&&&& normal_check_interval&& 1&&& ; ;每分钟检查一次进程。我就是为了试验,一般时候用不着这么短的间隔&&&&&&& max_check_attempts&&&& 1&& ;我觉得进程这个东西要是没了,马上就出事了,所以宁可误报也不能让它自己慢悠悠地查3次再告警。但有资料说不建议这么做,我忘了具体原因了。&&&&&&& contact_groups&&&&&&&&&&& admins&&& ;这行也是默认情况下没有的。可填可不填,我只是为了区分下面那个组。;出错就给test_group组里的user3发短信发邮件。&&&&&&& check_command&&&&&&&&&& check_nt!PROCSTATE!-d SHOWALL -l CMD.EXE -s 123456& ;监控cmd.exe我照着网上的文档试着监控explorer.exe,全小写,或者写成Explorer.exe都能监控到,但是CMD或者firefox等用户进程,不管资源管理器里显示的大小写如何,这里必须写成大写,否则就检测失败。&&&&&&& }
define service{&&&&&&& use&&&&&&&&&&&&&&&&&&&& generic-service&&&&&&& host_name&&&&&&&&&&&&&& 192.168.0.1&&&&&&& service_description&&&& firefox&& &&&&&&& normal_check_interval&&& 1&&& &&&&&&& max_check_attempts&&&&& 1&& &&&&&&& contact_groups&&&&&&&&&&& test_group&&& ;出错就给test_group组里的user3发短信发邮件。&&&&&&& check_command&&&&&&&&&& check_nt!PROCSTATE!-d SHOWALL -l FIREFOX.EXE -s 123456&&&&&&& }十.配置sendmail,这部分除了邮箱地址,我基本是完全copy的,就是CU里一个兄弟贴的,管用。编辑/etc/sendmail/access。
# by default we allow relaying from localhost...Connect:localhost.localdomain&&&&&&&&&& RELAYConnect:localhost&&&&&&&&&&&&&&&&&&&&&& RELAYConnect:127.0.0.1&&&&&&&&&&&&&&&&&&&&&& RELAY### add by meconnect:[url][/url]&&&&&&&&&&&&&&& RELAYconnect:nagios@localhost&&&&&&&&&&&&&&& RELAYconnect:192.168.0&&&&&&&&&&&&&&&&&&&& RELAYconnect:user1@localhost&&&&&&&&&&&&&& RELAYconnect:user2@localhost&&&&&&&&&&&&&& RELAYconnect:user3@localhost&&&&&&&&&&&&&& RELAYconnect:&&&&&&&&&&&&&&&& RELAYconnect:&&&&&&&&&&&&&&&& RELAYconnect:&&&&&&&&&&&&&&&& RELAY
我后来发现个问题,范例都是Connect,而我抄的时候都写成connect了,照样能用。我不熟悉sendmail,不知道啥原因,本来打算测试一下,没倒出空来。& &&&不好意思,没写完就误点发帖了,继续编辑中......
makemap hash access & accesschmod 777 /var/spool/mqueue
测试sendmail
[root@host nagios]# /usr/lib/sendmail -bp/var/spool/mqueue is empty&&&&&&&&&&&&&&& Total requests: 0[root@host nagios]#
# echo testing | /usr/sbin/sendmail -v [email][/email]
收到邮件,又成功!
十一.短信猫安装。接短信猫到串口,我接的串口2。先安装光盘里的minicom的rpm包。运行minicom -s,弹出个图形界面。图形界面截图放这里没法排序,文字不好描述,网上文章一大堆,都管用,抄吧。^_^选择: Serial port setup 后出现下级界面。按A,修改端口为ttyS1,按E,修改端口速率9600。选择exit,初始化短信猫,进入at指令界面。输入at,弹出OK,表示短信猫工作正常。at+cmgs=&&& (输入后命令行多出“&”前缀)&Test by user1……输入完后按ctrl+z 退出, 界面显示OK,手机上应该能收到短信。
十二& gnokii工具,发短信用的。我从下载的rpm包,这个网站没有源码包,不知道为啥。直接rpm -ivh gnokii-0.6.28cvs-6.rpm就安装完了。vi /etc/gnokiirc
[global]port = /dev/ttyS1model = AT##同时需要注释掉mode = 6510serial_baudrate = 9600use_locking = no&& ;据说这个为yes时无法同时给多人发送短信,没试过。#### use_locking
gnokii --identify
有些网站不知道从哪抄来的,中间都是一个“-”,看了帮助才知道又被误导了。唉,懒点都不行。附个图吧,估计都贴在后面了。第一遍装忘了注释mode=6510,结果没成功,以为RPM包有问题,卸载!从别的网站弄了个源码,gnokii-0.6.12。好多网站又是make、make install,好在我这次先看文档了,没被误导。是gmake&gmake install。
tar xvf gnokii-0.6.12.tar.bz2cd gnokii-0.6.12./configure --prefix=/usr/local/gnokii/ --without-x --disable-我没有x,跟x有关的都不要!gmakegmake install
把源码包下的gonkiirc复制到/etc目录下,修改内容跟RPM包的一样。注意:rpm包安装后gnokii的可执行文件在/usr/bin目录下,可以在任何路径下执行gnokii。而源码安装后的可执行文件在/usr/local/gnokii/目录下,用时必须指定绝对路径。
echo -n "test by user 16:10" |/usr/local/gnokii/bin/gnokii --sendsms 133xxxxxx
注意修改gnokii的路径,别copy。我用源码包和rpm包分别安装后,都成功收到短信。我自己的观察,rpm包的版本高,执行速度看起来好像也快一点。十三.把gnokii功能绑定到nagiosvi /usr/local/nagios/etc/objects/commands.cfg,添加如下代码
define command{&&&&&&& command_name host-by- ;这就是用到前面编辑congtacts.cfg里的那个短信告警名&&&&&&& command_line /bin/echo -n "$NOTIFICATIONTYPE$ $HOSTNAME$/$HOSTADDRESS$ : host is $HOSTSTATE$ $SHORTDATETIME[&&&&&&& DISCUZ_CODE_22&&&&&&& ] | /usr/bin/gnokii –sendsms& $CONTACTPAGER$ 2&&1 & /dev/null&&&&&&& }define command{&&&&&&& command_name service-by-sms&& ;这个也是&&&&&&& command_line /bin/echo -n "$NOTIFICATIONTYPE$ $HOSTNAME$/$HOSTADDRESS$ : Service is $SERVICEDESC$ $SERVICESTATE$ $SHORTDATETIME[&&&&&&& DISCUZ_CODE_22&&&&&&& ] | /usr/bin/gnokii –sendsms $CONTACTPAGER$ 2&&1 & /dev/null&&&&&&& }
这个最初是从一个不知道从哪翻出来的网站copy过来的,结果那位大哥最后一行少了个“}”,害得我找了20分钟。而且里面的gnokii的路径不对,带的参数也不对......我又琢磨了半小时,最后从../nagios/etc/var/nagios.log里看出来的。copy害死人啊,不过不copy我就撞墙了,不管怎么说还是得感谢人家。因为我最后还是用rpm包装的gnokii,所以懒一把,配置文件里没指定绝对路径。折腾完这一小时,发现还是无法下发短信,后来还是在../nagios.log里看到是权限的问题。用ll命令看一下,都是root有权限
/dev/ttyS1 root uucp/usr/bin/gnokii root root
nagios服务和依赖的工具都以nagios帐户权限执行,必须对串口可读写,必须可执行gnokii。据说有人装完这些权限就正常,可我的不正常,不知道咋据说的,改。
chown –R nagios:nagios /usr/bin/gnokiichown –R nagios:nagios /dev/ttyS1
切换到nagios帐户下执行
echo -n "test by user 16:10" |/usr/local/gnokii/bin/gnokii --sendsms 133xxxxxx
收到短信,成功!& & service nagios restart登录后关闭CMD.EXE,给user1和user2发邮件+短信,关掉firefox给user3发邮件+短信。Congratulation!!!邮件内容如下:
***** Nagios *****
Notification Type: PROBLEM
Service: C: Drive SpaceHost: user's notebookAddress: 192.168.0.11State: WARNING
Date/Time: Thu Dec 11 18:15:21 CST 2008
Additional Info:
c: - total: 7.81 Gb - used: 6.66 Gb (85%) - free 1.15 Gb (15%)
短信的内容也差不多。nagios3.0.3默认情况下,在unknow、critical、warning、recovery都会发短信和邮件。再贴张图。中间那个橙色的unkonwn状态的目标是因为我监控的一个进程名中间有空格!!!谁知道怎么写?帮忙解答一下。
check_command&&&&&&&&&& check_nt!PROCSTATE!-d SHOWALL -l ABCD& PQRS.EXE -s 123456
还有个问题,nagios的页面多久自动刷新一次?是有状态更新后再刷么?此外,我点左面的那个3-D Status Map时老提示我下载statuswrl.cgi,不知道是不是因为apache不是用源码包装的原因。还剩两项工作:网上还有用飞信的说明,结果我注册了一下午飞信愣是没注册上,老是系统繁忙.....明天看看情况,争取把飞信搞定,省点短信费吧!第二个是监控Linux服务器,我还没腾出空来去看,继续努力!!!再废话一句:../nagios/bin/nagios -v ../nagios/etc/nagios.cfg这个命令真管用,出错看得最明白的一个了!!好使。还有个关于htpasswd命令的用法,还是照抄惹的祸,据说用htpasswd -c htpasswd.users可以增加数个帐号,结果我添一个就把前面填过的给清掉了,添来添去只有一个帐号。后来看了一下帮助,用参数n、m、d、p都可以增加。增加完以后,在../nagios/etc/cgi配置文件中,在nagiosadmin后面填上新的帐号,restart nagios服务就O了。
,搞定飞信!
今天把飞信告警给搞定了!又小有成果。
下载飞信客户端,最新版的飞信客户端让我装了40多个依赖库文件,折腾一上午,最后还是没搞定。继续找其他版本,皇天不负苦心人啊,我终于找到了一个旧版本,很轻松的就搞定了
解压文件,只有一个可执行文件,sms,将其移动到/usr/bin目录下,并允许其他用户(主要是nagios)可执行。&&&&&&&&&&&&&&& tar zxvf fetion_linux_.tar.gz&&&&&&& mv ./sms /usr/bin&&&&&&& chmod 755 /usr/bin/sms
下载sms依赖的库文件,并解压。解压完毕后将这些文件复制到/usr/lib目录下&&&&&&& tar zxvf lib_lin_32.tar.gz&&&&&&& cp ./lib_lin_32/* /usr/lib
测试发送短信。
sms –f 139xxxx –p abc123 –t 138xxxxx –m “test by user1” –a test –d
OK,搞定!!sms的帮助文件直接敲sms命令就出来了,很简单就不贴了。在commands.cfg添加飞信的命令。因为我还用短信猫给非移动的手机发短信,所以host-notify-by-sms用于短信猫了,飞信就用host-notify-by-fei了。
define command {&&&&&& command_name&&&&& host-notify-by-如果有短信猫的话,注意命名要有区别&&&&&& command_line&&&&& /usr/bin/sms -f
-p abc123 -t $CONTACTPAGER$ -m "Host $HOSTSTATE$ alert for $HOSTNAME$! on '$LONGDATETIME$' " $CONTACTPAGER$&&&&&& }
#service notify by smsdefine command {&&&&&& command_name&&&& service-notify-by-fei&&&&&& command_line&&&& /usr/bin/sms -f
-p abc123 -t $CONTACTPAGER$ -m "'$HOSTADDRESS$' $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ on '$LONGDATETIME$' " $CONTACTPAGER$&&&&&& }
修改联系人,把原来那些用短信猫发送的移动手机联系人的命令都改成notify-host-by-fei了,弄一个不存在的服务去监控,让我周围同事的移动手机叮叮当当的响了一下午,最后有人都无法忍受了。我的不是移动手机,占便宜了...... 后来想想,还是小心为妙,万一叫多了狼来了,狼真来了人家不信了。
,搞定statusmap.cgi,郁闷!
nagios页面左面有两个status map和3D status map,老是显示不出来。
status map这个东西,网上有人这么说的:
Cortona (Parallel Graphics)
Cosmo Player (Computer Associates and NIST)
FreeWRL和OpenVRML
好像最后两个没有windows版本,所以如果是用windows机器看的话,需要装前两个软件之一.
我的客户端是windows的装了第一个,cortona。安装选项有directx和opengl,我都试了一遍。装完的效果附图,真烂!除了图标啥也看不清,基本没多大用途
剩下那个客户端软件Cosmo我也试了一下,更烂,具体效果忘了。
还有个3D status map,这个试试,找了一顿发现需要gd-devel,虚拟机上rpm一把,发现10多个依赖包,翻来覆去地rpm,装不上。干脆上服务器上yum一把得了,小心翼翼地把所有的配置文件备份了一遍,重新用源码编译了一边nagios,这回装上了。要是原来的配置文件没保存,名称都变成原来的文件名加个“~”,不会丢,只是改起来麻烦。
装完了看到../nagios/sbin目录下出来了个statusmap.cgi,大喜,打开一看想哭。附图。失败的一天
有没有人有好的解决办法帮忙解答一下。
& WEB帐号授权问题
系统中有N多设备,不同的设备指定到不同的联系人,现在想给这些联系人分配WEB帐号,并只允许浏览自己负责的设备。
百思不得其解,用htpasswd添加帐号,并在cgi.cfg中添加新增帐号,但每次这个新增帐号的权限都是管理员权限。
后来终于想起来,那么多联系人,但我每次添加的帐号都是一个不在contacts.cfg里的帐号。这回添加一个contacts.cfg里已经存在的帐号试试
添加完毕后,test一把,OK!!成功!
这么简单的问题困扰我数天。鄙视自己一把。
MRTG绘制历史数据
这个是我无意中做完的。我开始没想怎么用mrtg绘制图表,只是想需要装个mrtg看网卡流量,RPM完了没配置呢,有事就忘了。结果过了两天无意中发现历史数据图怎么出来了,我的MRTG没工作呢。
虚拟机下试了几次,要用MRTG绘制图表,必须有statusmap.cgi,也就是安装nagios之前必须有gd-devel。看来这个默认的statusmap看起来丑点,倒也不是一点用没有。
当有statusmap.cgi后,安装光盘上的mrtg*.rpm后,就可以绘制nagios的历史数据了,至于MRTG是否工作正常无关紧要。源码MRTG装完啥样我倒不清楚,没来得及试。
& 用PNP绘制历史数据的曲线图。
N半年没去琢磨nagios的绘图功能,虽然我早就知道我的MRTG只能画方块而不能画曲线。这几天终于搞定了。
本文图片下载在:
免费下载地址在
用户名与密码都是www.codesky.net
具体下载目录在 /2012年资料/4月/7日/CentOS 5.2安装Nagios实现短信报警笔记/
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
[商业源码]&
Copyright &
All Rights Reserved

我要回帖

更多关于 nagios 安装 的文章

 

随机推荐