Nagios 3.0 安装配置手册默认分类 2008-11-08 11:08:30 阅读114 评论0 字号:大中小 订阅 一、前言: Nagios是什么?它有什么用? cacti采用的是snmp,不需要安装agent,一般用来监控网络流量。 nagios可以用snmp,也可以用nrpe,nsclient等来获取信息,更多的是采用后者,使用其强大的插件模块。一般用来监控进程、服务。
二、实验环境:
三、Nagios定义的监控状态 nagios定义了4中监控状态,代表不同的严重级别,除了OK代表正常不用关心外,其余3种都要引起重视.
四、使用到的软件 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这五个目录,如果存在则可以表明程序被正确的安装到系统了。下表是五个目录功能的简要说明:
六、安装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
增加验证用户: 也就是通过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来访问了。
九、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 最新版本:(NSClient++-Win32-0.3.5) cd nsclient++ nsclient++ /install services.msc à nsclientpp à 登录 à 勾选允许桌面与服务器交互 à 应用 à 确定 nsclient++ /start nsclient++ /stop 编辑 nsclient++/nsc.ini:
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 监控示意图: |
|