遵义教师招考:Nagios 3.0 安装配置手册

来源:百度文库 编辑:中财网 时间:2024/04/29 05:02:10
默认分类 2008-11-08 11:08:30 阅读114 评论0   字号:大中小
一、前言:
Nagios是什么?它有什么用?
cacti采用的是snmp,不需要安装agent,一般用来监控网络流量。
nagios可以用snmp,也可以用nrpe,nsclient等来获取信息,更多的是采用后者,使用其强大的插件模块。一般用来监控进程、服务。
二、实验环境:
主机
操作系统
IP
备注
Nagios-server
RHEL 4
192.168.112.30
监控服务器
Server
RHEL 4
192.168.112.112
被监控的LINUX主机
Win2003-server
Windows 2003
192.168.112.113
被监控的Windows主机
三、Nagios定义的监控状态
nagios定义了4中监控状态,代表不同的严重级别,除了OK代表正常不用关心外,其余3种都要引起重视.
状态
代码
颜色
正常
OK
绿色,
警告
WARNING
黄色,
严重
CRITICAL
红色,
未知错误
UNKOWN
深黄色
四、使用到的软件
nagios-3.0.2.tar.gz                 (Nagios 主程序)
nagios-plugins-1.4.13.tar.gz            (Nagios 插件)
nrpe-2.8.1.tar.gz                   (Nix 客户端通信程序)
NSClient++-Win32-0.3.5              (Win 客户端通信程序)
apache (httpd-2.2.10.tar)               (Web Service)
五、nagios-server安装
useradd nagios
mkdir /usr/local/nagios
chown nagios.nagios /usr/local/nagios
tar zxvf nagios-3.0.2.tar.gz
cd nagios-3.0.2
./configure --prefix=/usr/local/nagios --with-gd-lib=/usr/local/lib --with-gd-inc=/usr/local/include/
make all
make install                    (安装主程序,CGI和HTML文件)
make install-init           (在 /etc/rc.d/init.d 安装启动脚本)
make install-commandmode        (为外部命令文件配置目录权限)
make install-config         (安装示例配置文件)
# make install-webconf      (安装Nagios接口配置文件模板,此模板需要手动添加进httpd.conf才可以生效。 默认安装位置:/etc/httpd/conf.d      安装之前先:mkdir /etc/httpd/conf.d -p)
然后是验证程序是否被正确安装。切换目录到安装路径(这里是/usr/local/nagios),看是否存在 etc、bin、 sbin、 share、 var这五个目录,如果存在则可以表明程序被正确的安装到系统了。下表是五个目录功能的简要说明:
bin
Nagios执行程序所在目录,nagios文件即为主程序
etc
Nagios配置文件位置,初始安装完后,只有几个*.cfg文件
sbin
Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录
Share
Nagios网页文件所在的目录
Var
Nagios日志文件、spid 等文件所在的目录
var/archives
为archived logs 日志创建的空目录
var/rw
为external command file 文件创建的空目录
六、安装nagios插件
tar zxvf nagios-plugins-1.4.11.tar.gz
cd nagios-plugins-1.4.11
./configure--prefix=/usr/local/nagios --enable-redhat-pthread-workaround
make all
make install
(插件是计算机软件中的一种特殊程序,它不能单独执行,而必须依赖于某个软件.在其他软件的环境下,方可以调用.)
安装完成后,查看下libexec下面是否有插件:
ls /usr/local/nagios/libexec/
安装Nrpe服务(服务端非必须,推荐安装!):
tar zxvf nrpe-2.8.1.tar.gz
cd nrpe-2.8.1
./configure –prefix=/usr/local/nagios       [./configure --enable-ssl  --enable-command-args]
make all                                    (编译)
make install-plugin                     (安装插件)
make install-daemon                     (安装 nrpe daemon)
make install-daemon-config              (安装配置文件)
make install-xinetd                     (安装xinetd 脚本文件)
添加 nrpe 服务到xinetd:
vi /etc/services
nrpe       5666/tcp           # nrpe
重新启动Xinetd服务:
service xinetd restart
测试Nrpe是否能正常工作:
/usr/local/nagios/libexec/check_nrpe -H localhost
守护进程:
首先,xinetd 是一大堆服务的管理程序(/etc/services),比如:telnet,ftp等。如果每个服务一个守护进程,太占用资源。 所以就用xinetd统一监听端口,有人用了再把服务启起来。在linux中一些不长期使用的服务没有被作为单独的守护进程在开机时启用,linux把这些服务监听端口全部由一个独立的进程xinetd集中监听,当收到相应的客户端请求之后,xinetd进程就临时启动相应服务并把相应端口移交给相应服务,客户端断开之后,相应的服务进程结束,xinetd继续监听。把一个服务配置成xinetd监听的服务后可以在 setup 中设置是否开机启动,如nrpe!
所有结尾带d的程序都是daemon程序,也就是守护进程的程序,同样,xinetd也是一个daemon程序。
守护程序分为2种处理模式:
第一个是stand alone状态的,表示该程序始终监听,一直处于运行状态,例如httpd
第二个是super daemon,它始终处于sleep状态,直到有人唤醒它,xinetd就是一个super daemon,但它的使命是将一个请求转给其他服务,是服务的管理者。
七、安装Apache服务 (略)
八、修改Apache配置
修改apache的配置文件,增加nagios的目录,并且访问此目录需要进行身份验证。
(注:如果不要设置身份验证,在httpd.conf 最后增加的内容注释掉“红色字体”部分)
vi /usr/local/apache/conf/httpd.conf
 
#======================= Nagios Suport =========================#
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 /usr/local/nagios/etc/htpasswd.zhaohang
#   AuthUserFile /usr/local/nagios/etc/htpasswd.admin
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 /usr/local/nagios/etc/htpasswd.zhaohang
#   AuthUserFile /usr/local/nagios/etc/htpasswd.admin
Require valid-user

#======================= Nagios Suport =========================#
 
增加验证用户: 也就是通过web访问nagios的时候,必须要使用用这个用户才可以登陆,有时为了长时间监控刷新,避免输入密码麻烦就不加密码.注释红的行可以达到要求.    用户:zhaohang   密码为:123456
/usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.zhaohang zhaohang
# /usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.admin    admin
查看认证文件的内容:
less  /usr/local/nagios/etc/htpasswd.zhaohang
test:OmWGEsBnoGpIc   前半部分是用户名test,后面是加密后的密码。
到这里为止nagios的安装也就基本完成了,你可以通过web来访问了。
http://192.168.0.108/nagios/
九、Nagios配置
修改报警信息发送的邮箱地址:
vi /usr/local/nagios/etc/objects/contacts.cfg
Nagios有一个很好的检测程序,可以用来检测你的Nagios配置是否正确:
/usr/local/nagios/bin/nagios –v  /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors:   0
则说明你的 Nagios 配置没有问题,可以正常启动!
可以用以下方法启动Nagios:
/etc/rc.d/init.d/nagios start/stop/status
service nagios start/stop/status
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
十、监控Linux服务器
客户端配置:
建用户:
useradd nagios  (可以在 /etc/password 里修改此帐户的shell为 /sbin/nologin)
passwd nagios
安装插件:
tar zxvf nagios-plugins-1.4.11.tar.gz
cd nagios-plugins-1.4.11
./configure--prefix=/usr/local/nagios --enable-redhat-pthread-workaround
make all
make install
修改权限:
chown nagios:nagios /usr/local/nagios –R
安装Nrpe服务:
tar zxvf nrpe-2.8.1.tar.gz
cd nrpe-2.8.1
./configure –prefix=/usr/local/nagios       [./configure --enable-ssl  --enable-command-args]
make all                                    (编译)
make install-plugin                     (安装插件)
make install-daemon                     (安装 nrpe daemon)
make install-daemon-config              (安装配置文件)
make install-xinetd                     (安装xinetd 脚本文件)
添加服务器IP:
vi /etc/xinetd.d/nrpe
only_from       = 127.0.0.1 192.168.0.108
添加 nrpe 服务:
vi /etc/services
Nrpe       5666/tcp           # nrpe
重新启动Xinetd服务:
service xinetd restart
查看Nrpe服务是否开启:
netstat -ant|grep 5666
测试Nrpe是否能正常工作:
/usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.8.1     (这表示在本地用check_nrpe连接nrpe daemon是正常的)
服务端配置:
A 拷贝 localhost.cfg 模板文件,对192.168.112.101进行监控:
cp /usr/local/nagios/etc/localhost.cfg  /usr/local/nagios/etc/192.168.112.101.cfg
vi 192.168.112.101.cfg
修改配置(主机名、IP、别名)
B 将192.168.112.101.cfg 加入nagios 主配置文件:
vi /usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/192.168.112.101.cfg
C 验证配置文件是否正确,并重启:
/usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/object/nagios.cfg
Service nagios restart           (重启nagios 使配置生效)
D 查看naigios监控页面,发现主机已经被正常添加。
========================================================================================================
服务端增加监控服务(非必须):
在Command.cfg文件中增加check_nrpe的功能:
vi /usr/local/nagios/etc/commands.cfg
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
注意:-c后面带的$ARG1$参数是传给nrpe daemon执行的检测命令,在services.cfg中使用check_nrpe的时候要用!带上这个参数。
额外知识点:
vi /usr/local/nagios/etc/nrpe.cfg
找到以下这段内容:
# The following examples use hardcoded command arguments...
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
[] 中是命令名,也就是check_nrpe 的-c参数可以接的内容,=后面是实际执行的插件程序commands.cfg中定义命令的形式十分相似,只不过是写在了一行.
也就是说check_users就是等号后面/usr/local/nagios/libexec/check_users -w 5 -c 10的简称.
我们可以很容易知道上面这5行定义的命令分别是检测登陆用户数,cpu负载,hda1的容量,僵尸进程,总进程数.用法: ./check_load --help
由于-c后面只能接nrpe.cfg中定义的命令,也就是说现在我们只能用上面定义的这五条命令。
========================================================================================================
十一、监控Windows服务器
在nagios的libexec下有check_nt这个插件,它就是用来检查windows机器的服务的,其功能类似于第十章讲的check_nrpe.不过还需要搭配另外一个软件NSClient,它的功能类似于NRPE。
NSClient与Nrpe最大的区别就是:
--被监控机上安装有nrpe,并且还有插件,最终的监控是由这些插件来进行的.当监控主机将监控请求发给nrpe后,nrpe调用插件来完成监控.
--NSClient则不同,被监控机上只安装NSClient,没有任何的插件.当监控主机将监控请求发给NSClient后,NSClient直接完成监控,所有的监控是由NSClient完成的.
这也说明了NSClient的一个很大的问题,不灵活,没有可扩展性.它只能完成自己本身包含的监控操作,不能由一些插件来扩展.好在NSClient已经做的不错了,基本上可以完全满足我们的监控需要。
客户端:
在官方站点http://www.nsclient.org下载 NSClient 最新版本:(NSClient++-Win32-0.3.5)
cd nsclient++
nsclient++ /install
services.msc à nsclientpp à 登录 à 勾选允许桌面与服务器交互 à 应用 à 确定
nsclient++ /start
nsclient++ /stop
编辑 nsclient++/nsc.ini:
 
1、[modules]  部分的所有模块前面的注释都去掉,除了CheckWMI.dll and RemoteConfiguration.dll这两个。
2、[Settings] 部分设置'password'选项来设置密码,作用是在nagios连接过来时要求提供密码。这里我们不要密码!
3、[Settings] 部分'allowed_hosts'选项的注释去掉,并加上监控主机的IP。如:allowed_hosts=127.0.0.1,192.168.1.0/24,222.73.231.21/32
以逗号相隔. 如果这个地方是空白则表示所有的主机都可以连接上来.
注意是[Settings]部分的,因为[NSClient]部分也有这个选项.
4、[NSClient] 的'port'选项必须保证没有被注释,并且它的值是'12489',这是NSClient的默认监听端口。
 
nsclient++ /start
netstat –an       查看端口 12489 是否正常监听!
check_command           check_nt!UPTIME               监控windows服务器运行的时间
check_command           check_nt!CPULOAD!-l 5,80,90   监控Windows服务器的CPU负载
check_command           check_nt!MEMUSE!-w 80 -c 90   监控Windows服务器的内存
check_command           check_nt!USEDDISKSPACE!-l c -w 80 -c 90   监控Windows服务器C空间
check_command           check_nt!SERVICESTATE!-d SHOWALL -l telnet    监控telnet服务的状态
check_command           check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe 监控Explorer进程状态
服务端:
A 拷贝 windows.cfg 模板文件,对192.168.112.103进行监控:
cp /usr/local/nagios/etc/windows.cfg  /usr/local/nagios/etc/192.168.112.103.cfg
vi 192.168.112.103.cfg
修改配置(主机名、IP、别名)
B 将192.168.112.103.cfg 加入nagios 主配置文件:
vi /usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/192.168.112.103.cfg
C 验证配置文件是否正确,并重启:
/usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/object/nagios.cfg       (检查配置文件是否正确)
Service nagios restart           (重启nagios 使配置生效)
D 查看naigios监控页面,发现主机已经被正常添加。
Nagios 问题处理:
1、监控状态不正常怎么办?
答、建议从本机手动check看看结果,检查防火墙等防止端口被阻止访问,造成监控失误。
2、nrpe在 ./configure时提示:
checking for SSL... configure: error: Cannot find ssl libraries
答、把openssl-devel装上就可以了.
3、nagios web界面提示:
It appears as though you do not have permission to view information for any of the services you requested...
答、打开cgi.cfg配置文件, use_authentication=1
为了保障系统的安全性,nagios设置了这个参数,默认为1,改为0即可。
4、如果NSClient设置了连接需要密码或者改变了端口,哪么服务器应该怎么连接?
答、$USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$ $ARG2$
-p 指定 port    -s   指定 password
5、Service Commands 中Enable notifications for this service时报错:
Sorry Dave, I can't let you do that...
It seems that you have chosen to not use the authentication functionality of the CGIs.
答、修改cgi.cfg文件
修改use_authentication=1 (默认) ,如果没有添加,重启nagios服务。
6、监控mysql的时候提示错误:is not allowed to connect to this MySQL server
Server (nagios服务端192.168.0.132)
#/usr/local/nagios/libexec/check_mysql -H 192.168.0.207 -u root -p xukixu
此时可能会出现错误:Host '192.168.0.132' is not allowed to connect to this MySQL server
答、在客户端client(192.168.0.207)做个mysql授权用户访问即可:
mysql>grant all privileges on *.* to root@192.168.0.132 identified by '123456';
mysql>flush privileges;
7、如何添加一台监控 38101 端口的Linux服务器?
答、首先需要在 command.cfg 里边定义 check_tcp (默认已经定义)
然后在拷贝 localhost 配置文件,修改主机名,ip,别名等信息,添加服务项,check_tcp!38101
然后在 nagios.cfg 主配置文档里添加该主机配置文件路径;
检查配置文件正确性,并重启 nagios 使配置生效。
8、怎么样比较清晰的管理尽千台主机?
答、建议每个配置文件单独管理一台主机,然后将所有主机的配置文件单独放在通一个目录底下,做好定期备份,这样,可以方便修改不同主机上的不同服务,而且可以很方便的临时增加和删除一个主机节点。
9、如何添加一个管理插件的配置?
答、在 command.cfg 配置文件里可以添加插件,要添加的插件必须存在于主机的 libexec/* 目录下,否则,在检测配置文件的时候会报错!
10、我装了nagios-plugin没有check_mysql  check_snmp 等插件都没有,为什么?
答、check_mysql在nagios-plugin的高版本中(nagios-plugins-1.4.13.tar)已经带了check_mysql插件,如果需要check_snmp,请安装 net-snmp-devel 之后再重新编译nagios来实现!
11、能举例说明一下配置文件参数的意义么?
监控windows服务器运行的时间:
check_command           check_nt!UPTIME
监控Windows服务器的CPU负载,如果5分钟超过80%则是warning,如果5分钟超过90%则是critical
check_command           check_nt!CPULOAD!-l 5,80,90
监控Windows服务器的内存使用情况,如果超过了80%则是warning,如果超过90%则是critical
check_command           check_nt!MEMUSE!-w 80 -c 90
监控Windows服务器C:\盘的使用情况,如果超过80%已经使用则是warning,超过90%则是critical, -l 后面接的参数用来指定盘符
check_command           check_nt!USEDDISKSPACE!-l c -w 80 -c 90
监控Windows服务器D:\盘的使用情况,如果超过80%已经使用则是warning,超过90%则是critical
check_command           check_nt!USEDDISKSPACE!-l d -w 80 -c 90
监控Windows服务器的W3SVC服务的状态,如果服务停止了,则是critical
check_command           check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
监控Windows服务器的Explorer.exe进程的状态,如果进程停止了,则是critical
check_command           check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
command.cfg 里 command_line    $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$   中,-p 后$ARG1$ $ARG2$ 表示在 host.cfg 配置文件中 check_tcp 可以跟两个端口参数,比如:check_tcp!20!21
 
Linux 监控示意图:

Windows 监控示意图: