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


如果上面这两幅效果图让你心动的话,那么一起加入吧.
在开始之有有些基本的东西要搞清楚.在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库这些相关的组件,否则请先安装.安装方法可以参考:(http://waringid.blog.运维网.com/65148/58144).修改配置文件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"
# 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
Alias /nagios "/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
安装相应的组件:
编辑/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.运维网.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
这些安装好后,需要进行相关的设定,这里就不详细介绍各参数,只捡重要的说;可以参考/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
}

服务则是用来处理相应的监控请求,和主机文件一样,有相应的服务和服务组.如下所示:
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
}
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 root@test.com -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 root@test.com -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
要产生图形数据还需在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来启动服务.
监控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的管理远远还没有完,而且很多方面的设定这里都没有详细的解说.所以这里的记录只是领进linux管理的大门.门内的风景还是要自己去发觉.毕竟各人的感觉不同啊. 附件是相关的设定文件。
附件:http://down.运维网.com/data/2350209
|
|