+ -
当前位置:首页 → 问答吧 → CentOS 5.2安装nagios笔记1——邮件短信飞信告警

CentOS 5.2安装nagios笔记1——邮件短信飞信告警

时间:2008-12-11

来源:互联网

nagios,难过死,难走死。反正不管咋叫,就是个难!自从上星期开始,折腾nagios快两个礼拜了,就想实现短信告警。东找找西找找,发现天下文章一大抄,一个人写的东西被N多人转来转去,甚至有的人还不知羞耻地把别人的东西弄成自己的原创了。唉,世风日下人心不古啊。而且多数的说明都很笼统,一边找,一边自己琢磨。整个过程中,前面2/3的时间最难熬,有无数次撞墙的冲动......后面1/3基本开窍了,终于差不多了。贴一把,给自己点鼓励。
主要参考资料:http://nagios-cn.sourceforge.net/nagios-cn/
软件如下:
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绘制图表,这个东西就得有。
一.建组建帐号

[Copy to clipboard] [ - ]
CODE:
groupadd nagcmd
useradd apache
useradd nagios
usermod -G nagcmd nagios
usermod -G nagcmd apache

二.编译nagios-3.0.3

[Copy to clipboard] [ - ]
CODE:
./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-commandmode
make install-config

三.配置WEB接口

[Copy to clipboard] [ - ]
CODE:
make install-web
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin ;创建一个登录WEB的帐号

四.装nagios-plugin-1.4.13

[Copy to clipboard] [ - ]
CODE:
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install

五.将nagios加入服务并启动,同时启动apache

[Copy to clipboard] [ - ]
CODE:
chkconfig --add nagios
chkconfig nagios on

验证nagios的安装

[Copy to clipboard] [ - ]
CODE:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

如果出现下面的提示就OK了

[Copy to clipboard] [ - ]
CODE:
......
Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check
[root@host nagios]#

启动nagios和apache服务

[Copy to clipboard] [ - ]
CODE:
service nagios start
service httpd start

六.禁用selinux
我登录WEB页面好几次都无法通过验证,仔细看了一下说明发现是selinux的问题。

[Copy to clipboard] [ - ]
CODE:
#setenforce 0

这么改完不需要重启系统就可生效,Getenforce可看到permissive。但一重启就又得来一次,我的CentOs上也没别的,直接disable吧

[Copy to clipboard] [ - ]
CODE:
[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说了,肯定有不一样的地方,机器不会骗我们。不管如何,能用就行。

七.定义联系人和联系人组。我定义了三个人,两个组。前两个人在第一组里,第三个人在第二组里。

[Copy to clipboard] [ - ]
CODE:
#### 定义第一个联系人
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 protected][/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 protected][/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 protected][/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!!!天下文章一大抄害死人啊!

[Copy to clipboard] [ - ]
CODE:
[Settings]
password=123456 ;这个密码在nagios的主机配置文件中这么用,check_command xxxxxx  -s 123456
allowed_hosts=192.168.0.0/16 ;允许nagios服务器访问,也可以定义主机,比如:allow_hosts=192.168.1.250/32
port=12489

启动服务。windows服务器图标右下角出现有两个重叠的加号,当然有的服务器没出来,不知道为啥,反正12489端口通了,能用就行!

九.修改nagios参数,注释本机配置文件,取消注释 windows.cfg。要是有多个主机配置文件就继续在nagios里加,主机配置文件的格式跟windows.cfg一样就行了。

[Copy to clipboard] [ - ]
CODE:
vi /usr/local/nagios/etc/nagios.cfg
#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
cfg_file=/usr/local/nagios/etc/objects/windows.cfg
cfg_file=/usr/local/nagios/etc/objects/test/winhosts.cfg ;配置文件路径自定义,随便!

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这三个

[Copy to clipboard] [ - ]
CODE:
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。

[Copy to clipboard] [ - ]
CODE:
# by default we allow relaying from localhost...
Connect:localhost.localdomain           RELAY
Connect:localhost                       RELAY
Connect:127.0.0.1                       RELAY
### add by me
connect:[url]http://mail.xxxx.cn[/url]                RELAY
connect:nagios@localhost                RELAY
connect:192.168.0                     RELAY
connect:user1@localhost               RELAY
connect:user2@localhost               RELAY
connect:user3@localhost               RELAY
connect:[email protected]                 RELAY
connect:[email protected]                 RELAY
connect:[email protected]                 RELAY

我后来发现个问题,范例都是Connect,而我抄的时候都写成connect了,照样能用。我不熟悉sendmail,不知道啥原因,本来打算测试一下,没倒出空来。
     不好意思,没写完就误点发帖了,继续编辑中......

[Copy to clipboard] [ - ]
CODE:
makemap hash access < access
chmod 777 /var/spool/mqueue

测试sendmail

[Copy to clipboard] [ - ]
CODE:
[root@host nagios]# /usr/lib/sendmail -bp
/var/spool/mqueue is empty
                Total requests: 0
[root@host nagios]#

OK!

[Copy to clipboard] [ - ]
CODE:
# echo testing | /usr/sbin/sendmail -v [email][email protected][/email]

收到邮件,又成功!

十一.短信猫安装。接短信猫到串口,我接的串口2。
先安装光盘里的minicom的rpm包。
运行minicom -s,弹出个图形界面。图形界面截图放这里没法排序,文字不好描述,网上文章一大堆,都管用,抄吧。^_^
选择: Serial port setup 后出现下级界面。按A,修改端口为ttyS1,按E,修改端口速率9600。选择exit,初始化短信猫,进入at指令界面。
输入at,弹出OK,表示短信猫工作正常。
at+cmgs=13912345678    (输入后命令行多出“>”前缀)
>Test by user1……
输入完后按ctrl+z 退出, 界面显示OK,手机上应该能收到短信。

十二  gnokii工具,发短信用的。我从http://www.gnokii.org下载的rpm包,这个网站没有源码包,不知道为啥。直接rpm -ivh gnokii-0.6.28cvs-20081209.i386.rpm就安装完了。
vi /etc/gnokiirc

[Copy to clipboard] [ - ]
CODE:
[global]
port = /dev/ttyS1
model = AT
##同时需要注释掉mode = 6510
serial_baudrate = 9600
use_locking = no   ;据说这个为yes时无法同时给多人发送短信,没试过。
#### use_locking

执行

[Copy to clipboard] [ - ]
CODE:
gnokii --identify

有些网站不知道从哪抄来的,中间都是一个“-”,看了帮助才知道又被误导了。唉,懒点都不行。附个图吧,估计都贴在后面了。

第一遍装忘了注释mode=6510,结果没成功,以为RPM包有问题,卸载!从别的网站弄了个源码,gnokii-0.6.12。好多网站又是make、make install,好在我这次先看文档了,没被误导。是gmake&gmake install。

[Copy to clipboard] [ - ]
CODE:
tar xvf gnokii-0.6.12.tar.bz2
cd gnokii-0.6.12
./configure --prefix=/usr/local/gnokii/ --without-x --disable-xdebug ;我没有x,跟x有关的都不要!
gmake
gmake install

把源码包下的gonkiirc复制到/etc目录下,修改内容跟RPM包的一样。
注意:rpm包安装后gnokii的可执行文件在/usr/bin目录下,可以在任何路径下执行gnokii。而源码安装后的可执行文件在/usr/local/gnokii/目录下,用时必须指定绝对路径。

[Copy to clipboard] [ - ]
CODE:
echo -n "test by user 16:10" |/usr/local/gnokii/bin/gnokii --sendsms 133xxxxxx

注意修改gnokii的路径,别copy。
我用源码包和rpm包分别安装后,都成功收到短信。我自己的观察,rpm包的版本高,执行速度看起来好像也快一点。

十三.把gnokii功能绑定到nagios
vi /usr/local/nagios/etc/objects/commands.cfg,添加如下代码

[Copy to clipboard] [ - ]
CODE:
define command{
        command_name host-by-sms ; ;这就是用到前面编辑congtacts.cfg里的那个短信告警名
        command_line /bin/echo -n "$NOTIFICATIONTYPE$ $HOSTNAME$/$HOSTADDRESS$ : host is $HOSTSTATE$ $SHORTDATETIME[        DISCUZ_CODE_22        ]quot; | /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        ]quot; | /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有权限

[Copy to clipboard] [ - ]
CODE:
/dev/ttyS1 root uucp
/usr/bin/gnokii root root

nagios服务和依赖的工具都以nagios帐户权限执行,必须对串口可读写,必须可执行gnokii。据说有人装完这些权限就正常,可我的不正常,不知道咋据说的,改。

[Copy to clipboard] [ - ]
CODE:
chown –R nagios:nagios /usr/bin/gnokii
chown –R nagios:nagios /dev/ttyS1

切换到nagios帐户下执行

[Copy to clipboard] [ - ]
CODE:
echo -n "test by user 16:10" |/usr/local/gnokii/bin/gnokii --sendsms 133xxxxxx

收到短信,成功!

    service nagios restart

登录后关闭CMD.EXE,给user1和user2发邮件+短信,关掉firefox给user3发邮件+短信。Congratulation!!!

邮件内容如下:

[Copy to clipboard] [ - ]
CODE:
***** Nagios *****

Notification Type: PROBLEM

Service: C:\ Drive Space
Host: user's notebook
Address: 192.168.0.11
State: 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状态的目标是因为我监控的一个进程名中间有空格!!!谁知道怎么写?帮忙解答一下。

[Copy to clipboard] [ - ]
CODE:
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这个命令真管用,出错看得最明白的一个了!!好使。

写完了想起来,我要是都弄好了,今年过年要是再出现2001年时短信拥塞,我的nagios+短信猫不就成了孬狗+死猫了么?继续祈祷吧.......


------------------------------------------------

还有个关于htpasswd命令的用法,还是照抄惹的祸,据说用htpasswd -c htpasswd.users可以增加数个帐号,结果我添一个就把前面填过的给清掉了,添来添去只有一个帐号。后来看了一下帮助,用参数n、m、d、p都可以增加。增加完以后,在../nagios/etc/cgi配置文件中,在nagiosadmin后面填上新的帐号,restart nagios服务就O了。

2008-12-12,搞定飞信!

今天把飞信告警给搞定了!又小有成果。
下载飞信客户端,最新版的飞信客户端让我装了40多个依赖库文件,折腾一上午,最后还是没搞定。继续找其他版本,皇天不负苦心人啊,我终于找到了一个旧版本,很轻松的就搞定了

解压文件,只有一个可执行文件,sms,将其移动到/usr/bin目录下,并允许其他用户(主要是nagios)可执行。

[Copy to clipboard] [ - ]
CODE:
        
        tar zxvf fetion_linux_20080402.tar.gz
        mv ./sms /usr/bin
        chmod 755 /usr/bin/sms

下载sms依赖的库文件,并解压。解压完毕后将这些文件复制到/usr/lib目录下

[Copy to clipboard] [ - ]
CODE:
        tar zxvf lib_lin_32.tar.gz
        cp ./lib_lin_32/* /usr/lib

测试发送短信。

[Copy to clipboard] [ - ]
CODE:
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了。

[Copy to clipboard] [ - ]
CODE:
define command {
       command_name      host-notify-by-fei ;如果有短信猫的话,注意命名要有区别
       command_line      /usr/bin/sms -f 13412345678 -p abc123 -t $CONTACTPAGER$ -m "Host $HOSTSTATE$ alert for $HOSTNAME$! on '$LONGDATETIME$' " $CONTACTPAGER$
       }

#service notify by sms
define command {
       command_name     service-notify-by-fei
       command_line     /usr/bin/sms -f 13412345678 -p abc123 -t $CONTACTPAGER$ -m "'$HOSTADDRESS$' $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ on '$LONGDATETIME$' " $CONTACTPAGER$
       }

修改联系人,把原来那些用短信猫发送的移动手机联系人的命令都改成notify-host-by-fei了,弄一个不存在的服务去监控,让我周围同事的移动手机叮叮当当的响了一下午,最后有人都无法忍受了。我的不是移动手机,占便宜了...... 后来想想,还是小心为妙,万一叫多了狼来了,狼真来了人家不信了。

2008-12-16,搞定statusmap.cgi,郁闷!

nagios页面左面有两个status map和3D status map,老是显示不出来。
status map这个东西,网上有人这么说的:

QUOTE:
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,大喜,打开一看想哭。附图。失败的一天
有没有人有好的解决办法帮忙解答一下。

2008-12-18  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装完啥样我倒不清楚,没来得及试。
   2009-7-16  用PNP绘制历史数据的曲线图。
    N半年没去琢磨nagios的绘图功能,虽然我早就知道我的MRTG只能画方块而不能画曲线。这几天终于搞定了,不过由于文字超标了,不能写在这里了,只好写回复里去了。

   前几天翻nagios 的资料时,发现我的这篇笔记被好几个地方给转贴了,有厚颜无耻的干脆就给弄成自己的原创了。不过我的也不是原创,只是个笔记而已。天下文章一大抄,抄吧。^_^

作者: dbsrv   发布时间: 2008-12-11

沙发一个,慢慢看

作者: ydjjing   发布时间: 2008-12-11



QUOTE:
此外,我点左面的那个3-D Status Map时老提示我下载statuswrl.cgi,不知道是不是因为apache不是用源码包装的原因。

这个据说需要装个插件

作者: chenyx   发布时间: 2008-12-12

很详细 赞一个  我是通过139邮箱发短信 嘿嘿不用做什么短信猫什么的了

作者: wiliiwin   发布时间: 2008-12-12

谁知道ABCD PQR.EXE这样的进程怎么写?请教一下。

不标准的文件名还是个明白人帮忙提醒:"ABCD\ PQR.EXE"、"ABC(1).EXE"

作者: dbsrv   发布时间: 2008-12-12

呵呵,好的经验可以借鉴呀

作者: kns1024wh   发布时间: 2008-12-12

真的是好复杂啊 ...

作者: shengit_com   发布时间: 2009-02-28



QUOTE:
原帖由 wiliiwin 于 2008-12-12 09:32 发表
很详细 赞一个  我是通过139邮箱发短信 嘿嘿不用做什么短信猫什么的了

我也是用139邮箱,免费就是好

作者: infernor   发布时间: 2009-02-28

这个不错,收藏了,改天好好研究一下,非常感谢,正需要。

作者: 我是DBA   发布时间: 2009-02-28

以前都是自己写的脚本监控,现在也打算使用nagios了

作者: infernor   发布时间: 2009-02-28

mark 先...

作者: lpy123456   发布时间: 2009-05-12

谢谢了!!!!!!!!!!!!!学习中!!!!!!!!!!!!

作者: guoyanhong11   发布时间: 2009-05-12

我们机房也是用的这个,监控大约60台服务器,主机以及网络设备。
楼主很老实啊,这么多的资料,才拿2分。呵呵

作者: chenglin4636931   发布时间: 2009-05-12

楼主辛苦。
学习了。

作者: www_xylove   发布时间: 2009-05-13

太强了,TNK
===========================

作者: www_xylove   发布时间: 2009-05-13

十三 2009-7-16 绘制曲线图
     N久没空捯饬nagios了,最近想起我的MRTG一直画方块,没曲线,找不到解决方法,另辟蹊径。

1. 软件支持

    首先需要php的支持,用光盘里提供的软件包:
        php-common-5.1.6-20.el5.i386.rpm
        php-gd-5.1.6-20.el5.i386.rpm
        php-devel-5.1.6-20.el5.i386.rpm
        php-cli-5.1.6-20.el5.i386.rpm
        php-5.1.6-20.el5.i386.rpm
        php-devel-5.1.6-20.el5.i386.rpm
   另外还需要perl的支持
        perl-URI-1.35-3.noarch.rpm
        perl-String-CRC32-1.4-2.fc6.i386.rpm
        perl-IO-Socket-INET6-2.51-2.fc6.noarch.rpm
        perl-5.8.8-10.el5_0.2.i386.rpm
        perl-Socket6-0.19-3.fc6.i386.rpm
   不过这些东西在前面装mrtg的时候好像都装差不多了,一般不需要再装
   然后就是这几个源码
        rrdtool-1.0.50.tar.gz  
        pnp-0.4.14.tar.gz
        cgilib-0.5.tar.gz

2 安装PNP

   第一步安装cgilib

[Copy to clipboard] [ - ]
CODE:
tar zxvf cgilib-0.5.tar.gz
cd cgilib-0.5
cp libcgi.a /usr/local/lib
cp cgi.h /usr/include

第二步装rrdtool,我用的1.0.50。据说高版本的执行效率低,这个我倒是没测试,但安装1.2.30、1.3.x的时候,很麻烦,装了不下10次,有时能装上有时装不上。1.0.x的倒是每次都很顺利。
   第三步装pnp,这个需要指定rrdtool的可执行文件路径

[Copy to clipboard] [ - ]
CODE:
tar zxvf pnp-0.4.14.tar.gz
cd pnp-0.4.14
./configure -- with-rrdtool=/usr/local/rrdtool-1.0.50/bin/rrdtool
make all
make install
make install-config
make install-init

在./configure后,会出现一个提示

QUOTE:
*** Configuration summary for pnp 0.4.14 05-02-2009 ***

  General Options:
  -------------------------         -------------------
  Nagios user/group:                nagios nagios
  Install directory:                /usr/local/nagios
  HTML Dir:                         /usr/local/nagios/share/pnp
  Config Dir:                       /usr/local/nagios/etc/pnp
  Location of rrdtool binary:       /usr/local/rrdtool-1.0.50/bin/rrdtool Version 1.0.50
  RRDs Perl Modules:                *** NOT FOUND ***
  RRD Files stored in:              /usr/local/nagios/share/perfdata
  process_perfdata.pl Logfile:      /usr/local/nagios/var/perfdata.log
  Perfdata files (NPCD) stored in:  /usr/local/nagios/var/spool/perfdata/


  Review the options above for accuracy.  If they look okay,
  type 'make all' to compile.


  WARNING: The RRDs Perl Modules are not found on your System
           Using RRDs will speedup things in larger Installtions.

好像是启用加速功能的,我不用,直接忽略过去了。据说想启用这个的,需要用下面这个命令,然后再make

QUOTE:
ln -sv \
/usr/local/rrdtool/lib/perl/5.8.8/i386-linux-thread-multi/auto/RRDs/RRDs.so \
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/

修改httpd.conf
    pnp绘图的默认页面是Php的,需要在httpd.conf里支持首页为index.php

QUOTE:
DirectoryIndex index.html index.html.var index.php

然后,http://localhost/nagios/pnp/index.php?host=localhost 就能看到图形了。不过如果nagios没有获取到数据的话,可能看到提示./perfdata下的目录为空:

[Copy to clipboard] [ - ]
CODE:
Initalising
……………………
Hostname localhost is set.
Directory /usr/local/nagios/share/perfdata/localhost not found.

3.整合绘图功能到nagios
    修改nagios.cfg

[Copy to clipboard] [ - ]
CODE:
process_performance_data=1

host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata

修改绘图命令
Vi /usr/local/nagios/etc/commands.cfg

[Copy to clipboard] [ - ]
CODE:
define command{
        command_name    process-host-perfdata
        command_line    /usr/local/nagios/libexec/process_perfdata.pl
        }
define command{
        command_name    process-service-perfdata
        command_line    /usr/local/nagios/libexec/process_perfdata.pl
        }

修改主机配置文件,加上最后两行。据我观察,在3.0.3里只需要在define host里增加这两行就OK了,不需要把每个服务都加上。

[Copy to clipboard] [ - ]
CODE:
define host{
        use                   linux-server            
        host_name             localhost
        alias                  localhost
        ……  ……   ……
     process_perf_data      1
        action_url             /nagios/pnp/index.php?host=$HOSTNAME$
        }

重启nagios后,在监控页面的主机旁边出来一个放射状的红色图标,点击那个红色图标,就会看到主机下所有的CPU、内存、网络流量等信息绘制成的曲线了。看后面附的pnp绘图。

       默认情况下,查看曲线的时间间隔最小是4小时,如果想看更短时间范围内的曲线,就得去修改/usr/local/nagios/etc/pnp/config.php文件了。
       配置文件中的默认内容如下:

QUOTE:
$views[0]["title"] = "4 Hours";
$views[0]["start"] = ( 60*60*4 );

$views[1]["title"] = "24 Hours";
$views[1]["start"] = ( 60*60*24 );

在这些配置文件的上面增加需要的时间周期,注意修改views[]里的数值,依次排序。然后重启nagios。附两个图,30分钟和1小时的

[Copy to clipboard] [ - ]
CODE:
$views[0]["title"] = "30 Minutes";
$views[0]["start"] = ( 60*60*1/2 );
$views[1]["title"] = "1 Hour";
$views[1]["start"] = ( 60*60*1 );
…………………………

默认情况下,打开nagios的历史曲线是views[1]对应的那个时间范围,这个配置也可以修改,还是同一个配置文件的86行。
     $conf['overview-range'] = 1;



前几天还琢磨了一下escalation这个参数。当某个故障消息反复地发送给接收人,却迟迟得不到处理时,可以使用这个参数,发送给下一组联系人。

[Copy to clipboard] [ - ]
CODE:
define service{
        use                     generic-service
        host_name               server-10
        service_description        TEST1
        max_check_attempts     2
        normal_check_interval   10
        retry_check_interval     2
        contact_group              zz   ;告警信息发给zz组成员。
        check_command           check_nt!PROCSTATE!-d SHOWALL -l ASDF.EXE
        }
Define serviceescalation{
     Host_name                    server-10
     Service_description        TEST1
     First_notification            3      ;自第3条消息起,发送给本组员。
     Last_notification            5      ;0表示无限制通知,5表示只发送到第5条。如果没有后续的配置组时,此后的消息仍反复发送给前一组员。
     Contact_groups             yy    ;另一组联系人
     Notification_interval       10
     Escalation_options         w,c   ;只发布告警、紧急的消息,其他消息仍发送给上一组员
     }

只是,如果有几百、几千个监控目标时,这个修改的工作量……

作者: bsysman   发布时间: 2009-05-13

啥时候出linux主机监控啊.............

楼主加油啊!!

作者: dbsrv   发布时间: 2009-07-17

要感谢啊

作者: promayi   发布时间: 2009-08-03

慢慢琢磨ing 谢谢  

作者: jerryjzm   发布时间: 2009-08-05

热门下载

更多