Nagios在对主机的监控方面的成就大家都是有目共睹的.但也正是因为它的强大,所以让很多人学起来头大,更有人戏称它为"难够死".其实让它运行起来一点都不麻烦,只要理清了头序,一切都简单了.不信,我们一起来看看.
   俗话说"巧妇难为无米之炊",所以开始设定前需要下载相关的软件.当然如果有必要的话相应的文档也是不可少的.软件的下载位置为[url]http://www.nagios.org/download/[/url];这里还用到了一个发送Email的小程序SendEmail([url]http://caspian.dotconf.net/menu/Software/SendEmail/[/url]).也许有人会说为什么不用系统的sendmail呢.这个是为了保持更好的独立性而且使用也简单;如果想要直观的显示数据,pnp这个组件也是少不了的([url]http://www.pnp4nagios.org/pnp/start[/url]);而对于windows的处理就要用到NSClient++([url]http://trac.nakednuns.org/nscp/[/url])了.
   网上关于nagios的安装和设定文章比较多,一些文章都非常优秀,都可以做一些参考:[url]http://yahoon.blog.51cto.com/13184/41300[/url][url]http://gzmaster.blog.51cto.com/299556/79944[/url][url]http://blog.chinaunix.net/u/28387/showart_371655.html[/url]

也谈"难够死"nagios_windows
也谈"难够死"nagios_nagios_02
   如果上面这两幅效果图让你心动的话,那么一起加入吧.
   在开始之有有些基本的东西要搞清楚.在nagios管理中,所有的设定都放在相应的文件中.其中在配置文件夹中第一层的几个文件是非常重要的,少了它服务可以运行不起来.这些文件是nagios.cfg,cgi.cfg,resource.cfg.其中nagios.cfg是主要的设定文件,类似于指挥中心,所有的调度从这里开始,它来指挥nagios去相应的文件中查收其所需的数据;cgi.cfg则主要是用于处理web请求;resource.cfg则是主要用来定义会重复用到的变量,这里所定义的都是全局变量;而在objects文件夹下还有一个重要的文件command.cfg,所有的指令都从这里执行.而指定所用到的变量则是在resource.cfg中定义.
   给个例子你可能就容易理解了.假设公安局nagios.cfg要打掉一个近30个人的国际贩毒集团,并实时通报情况.那么通报情况由cgi.cfg处理;而resource.cfg中存放了各个毒贩的资料;支队代号host.cfg和支队人员service.cfg通过查看resource.cfg中各毒贩的资料采取不同的行动command.cfg来完成任务并按事情的轻重timeperidos.cfg上报contact.cfg,然后邮cgi.cfg通报出来.大约这样理解就差不多了.
安装过程如下:
adduser nagios
mkdir -pv /usr/local/nagios
chown nagios.nagios /usr/local/nagios
grep "^User" /etc/httpd/conf/httpd.conf
groupadd nagcmd
usermod -G nagios daemon
usermod -G nagcmd daemon
usermod -G nagcmd nagios
tar zxvf nagios-3.0.2.tar.gz
cd nagios-3.0.2
./configure --prefix=/usr/local/nagios --sysconfdir=/etc/nagios \
--with-httpd-conf=/etc/httpd.conf --with-gd-lib=/usr/local/gd/lib \
--with-gd-inc=/usr/local/gd/include/ --with-nagios-user=nagios \
--with-nagios-group=nagios --with-command-group=nagcmd
make all
make install
make install-config
make install-init
make install-webconf
   这里的假定情况是你已安装了apache及GD库这些相关的组件,否则请先安装.安装方法可以参考:([url]http://waringid.blog.51cto.com/65148/58144[/url]).修改配置文件cgi.cfg,它的作用是控制相关cgi脚本。先确保use_authentication=1。曾看过不少的文章,都是建议把use_authentication的值设置成"0"来取消验证,这是一个十分糟糕的想法。接下来修改default_user_name=nagios,再后面的修改在下表列出:  
authorized_for_system_information=nagiosadmin,nagios 
authorized_for_configuration_information=nagiosadmin,nagios 
authorized_for_system_commands=nagios  //多个用户之间用逗号隔开
authorized_for_all_services=nagiosadmin,nagios 
authorized_for_all_hosts=nagiosadmin,nagios 
authorized_for_all_service_commands=nagiosadmin,nagios 
authorized_for_all_host_commands=nagiosadmin,nagios
 下面指令的设定则是针对apache服务器的.用来生成相应的认证文件.
/usr/local/httpd/bin/htpasswd -c /etc/nagios/htpasswd.users nagios
cp -R /tmp/nagios-3.0.2/sample-config/ /etc/nagios/sample
chmod g+s /usr/local/nagios/var/rw
 这里需要对http.conf做设定
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"         
<Directory "/usr/local/nagios/sbin">         
# SSLRequireSSL         
Options ExecCGI         
AllowOverride None         
Order allow,deny         
Allow from all         
# Order deny,allow         
# Deny from all         
# Allow from 127.0.0.1         
AuthName "Nagios Access"         
AuthType Basic         
AuthUserFile /etc/nagios/htpasswd.users         
Require valid-user         
</Directory>
Alias /nagios "/usr/local/nagios/share"         
<Directory "/usr/local/nagios/share">         
# SSLRequireSSL         
Options None         
AllowOverride None         
Order allow,deny         
Allow from all         
# Order deny,allow         
# Deny from all         
# Allow from 127.0.0.1         
AuthName "Nagios Access"         
AuthType Basic         
AuthUserFile /etc/nagios/htpasswd.users         
Require valid-user         
</Directory>
安装相应的组件:
   编辑/etc/services文件,增加NRPE服务,增加nrpe            5666/tcp                        # nrpe.
tar zxvf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure
make
make install
make all
make install-plugin
tar zxvf nagios-plugins-1.4.12.tar.gz
cd nagios-plugins-1.4.12
./configure
make
make install
图形显示组件的安装:
   图形显示组件需要rrdtool及perl的支持,所以必须先安装它们.有关安装rrdtool可以参考[url]http://waringid.blog.51cto.com/65148/58580[/url]
tar zxvf pnp-0.4.10.tar.gz
./configure --with-nagios-user=nagios \
--with-nagios-group-nagios \
--with-rrdtool=/usr/local/rrdtool/bin/rrdtool \
--with-perfdata-dir=/usr/local/nagios/share/perfdata
make
make all
make install
make install-config
make install-init
也谈"难够死"nagios_休闲_03
   这些安装好后,需要进行相关的设定,这里就不详细介绍各参数,只捡重要的说;可以参考/etc/nagios/objects/localhost.cfg文件.host.cfg用来定义主机名及对应的IP;主机组则是将定义的主机名加入这个组.类似于下面:
define host{                #定义主机名
use                     remote-server         
host_name               re.ftp         
alias                   ftp server         
address                 192.168.42.7         
}         
define host{         
use                     remote-server         
host_name               re.edc            #用下面的语句可显示太阳图标
action_url              /nagios/cgi-bin/extinfo.cgi?host=$HOSTNAME$         
process_perf_data       1         
alias                   dc         
address                 192.168.42.6         
}         
define hostgroup{          #定义主机组
hostgroup_name  windows-servers         
alias           Windows Servers         
members         re.win.client         
}
define hostgroup{         
hostgroup_name          remote-server         
alias                   remote-server         
members                 re.edc,re.dc,re.exchange,re.sus,re.back,re.file,         
re.phone,re.hr,re.uf,re.oa,re.qy,re.prod,re.ftp         
}
也谈"难够死"nagios_windows_04
也谈"难够死"nagios_休闲_05

    服务则是用来处理相应的监控请求,和主机文件一样,有相应的服务和服务组.如下所示:
define service{         
use                             remote-service         
host_name                       re.edc,re.dc,re.exchange,re.sus,re.back,re.file,re.phone,         
              re.hr,re.uf,re.oa,re.qy,re.prod,re.ftp         
service_description             PING                #显示服务的太阳符号
action_url            /nagios/cgi-bin/extinfo.cgi?host=$HOSTNAME$&srv=$SERVICEDESC$         
process_perf_data               1                         #产生图形数据         
      check_command                   check_ping!100.0,20%!500.0,60%         
notifications_enabled           1          #提示联系人         
      }         
define service{         
use                     generic-service         
host_name               re.win.client         
service_description     Explorer         
check_command           check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe         
}
define servicegroup{         
servicegroup_name               remote-service         
alias                           Check Remote Servers         
members                         re.ftp,FTP         
}
define servicegroup{         
servicegroup_name               windows-service         
alias                           Check Windows servers         
members                         re.win.client,Explorer         
}
也谈"难够死"nagios_linux_06

   commands.cfg是处理监控动作的命令文件,这里需要对发送邮件和产生图形的方式重新定义下,因为需要用到新的命令来执行
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"         
| /usr/local/nagios/bin/sendEmail -f [email]root@test.com[/email] -t $CONTACTEMAIL$         
-s mail.test.com -u  "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is         
$HOSTSTATE$ **" -xu root -xp password         
}
# 'notify-service-by-email' command definition         
define command{         
command_name    notify-service-by-email         
command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type:         
$NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress:         
$HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time:         
$LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$"         
| /usr/local/nagios/bin/sendEmail -f [email]root@test.com[/email] -t $CONTACTEMAIL$         
-s mail.test.com -u "** $NOTIFICATIONTYPE$ Service Alert:         
$HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -xu root -xp password         
}
 安装方法如下,使用方法为:
 -f 表示发送者的邮箱  
 -t 表示接收者的邮箱  
 -s 表示SMTP服务器的域名或者ip  
 -u 表示邮件的主题  
 -xu 表示SMTP验证的用户名  
 -xp 表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用d!5neyland就不能被正确识别)  
 -m 表示邮件的内容
tar -zxvf sendEmail-v1.55.tar.gz
cd sendEmail-v1.55
cp sendEmail    /usr/local/nagios/bin
也谈"难够死"nagios_windows_07

   要产生图形数据还需在commands.cfg中重定义命令:
define command{
command_name    process-service-perfdata
command_line    /usr/local/nagios/libexec/process_perfdata.pl
}
  产生图形数据还要设定nagios.cfg文件:
process_performance_data=1
service_perfdata_command=process-service-perfdata  #默认此句被注释掉了
   设定好这些后可以输入service nagios start来启动服务.也谈"难够死"nagios_windows_08
   监控windows相关应用只需安装NSClient++就行了,编辑C:\NSClient++下的NSC.ini文件,将 [modules]部分的所有模块前面的注释都去掉,除了CheckWMI.dll and  RemoteConfiguration.dll这两个在[Settings]部分设置'password'选项来设置密码,作用是在nagios连接过来时要求提供密码.这一步是可选的,我这里方便起见跳过它,不要密码.将[Settings]部分'allowed_hosts'选项的注释去掉,并且加上运行nagios的监控主机的IP.我改为如下这样allowed_hosts=127.0.0.1/32,192.168.44.77,192.168.44.200  以逗号相隔.这个地方是支持子网的,如果写成192.168.0.0/24则表示该子网内的所有机器都可以访问.如果这个地方是空白则表示所有的主机都可以连接上来.注意是[Settings]部分的,因为[NSClient]部分也有这个选项.必须保证[NSClient]的'port'选项并没有被注释,并且它的值是'12489',这是NSClient的默认监听端口,我这里把它改为20000。
也谈"难够死"nagios_windows_09也谈"难够死"nagios_职场_10
也谈"难够死"nagios_职场_11
也谈"难够死"nagios_windows_12
   nagios的管理远远还没有完,而且很多方面的设定这里都没有详细的解说.所以这里的记录只是领进linux管理的大门.门内的风景还是要自己去发觉.毕竟各人的感觉不同啊. 附件是相关的设定文件。