Nagios监控linux等多方应用
一、Nagios简介
1、Nagios是一款遵循GPLv2的开源网络监控软件,可用来监控指定的多种系统的主机、服务,并可在它们的工作状态发生变化时通知管理员。它的特性包括: 1)监控网络服务(HTTP、POP3、SMTP、PING、MySQL等) 2)监控主机资源(磁盘空间利用率、内存利用率、CPU负载等) 3)简洁的插件设计接口,使得用户可以轻松开发所需的检测脚本 4)并行服务模式 5)轻松描述网络结构,并且能够区辨“宕机”和“主机不可达” 6)通过邮件或用户自定义的方式将主机或服务的工作状态变化情况通知给管理员 7)自动日志滚动 8)支持以冗余方式进行主机监控 9)可以通过web方式直观的查看当前网络状态、通知和问题历史、日志文件等等,此组件为可选 2、Nagios 工作原理 Nagios通常由一个主程序(Nagios)、一个插件程序(Nagios-plugins)和四个可选的ADDON(NRPE、NSCA、NSClient++和NDOUtils)组成。Nagios的监控工作都是通过插件实现的,因此,Nagios和Nagios-plugins是服务器端工作所必须的组件。而四个ADDON中,NRPE用来在监控的远程Linux/Unix主机上执行脚本插件以实现对这些主机资源的监控;NSCA用来让被监控的远程Linux/Unix主机主动将监控信息发送给Nagios服务器(这在冗余监控模式中特别要用到);NSClient++是用来监控Windows主机时安装在Windows主机上的组件;而NDOUtils则用来将Nagios的配置信息和各event产生的数据存入数据库,以实现这些数据的快速检索和处理。 3、监控的基本流程: 当Nagios需要监控某个远程工作站linux主机的服务或者资源情况时: 1).nagios运行check_nrpe插件,我们要在nagios配置文件中告诉它要检查什么. 2).check_nrpe插件会通过SSL连接到远程的NRPE daemon. 3).NRPE daemon会运行相应的nagios插件来执行检查本地资源或服务. 4).NRPE daemon将检查的结果返回给check_nrpe插件,插件将其递交给nagios做处理. 注意:NRPE daemon需要nagios插件安装在远程被监控linux主机上,否则,daemon不能做任何的监控.别外因为它们间的通信是加密的SSL,所以在编译安装时都要加上选项, ./configure --enable-ssl --with-ssl-lib=/lib/,否则也会出错.
最后让nagios整合到cacti上,是处理后的信息图形化显示
-----------------------------------------------------------------------------------------------实验环境配置 1、 环境搭建 Server: nagios nagios-plugins nrpe 192.168.85.207 工作站:nagios-plugins nrpe 192.168.85.208
检查一下包的安装情况
# rpm -q httpd gcc glibc glibc-common gd gd-devel #yum -y httpd gcc glibc glibc-common gd gd-devel
-----------------------------------------------------
在server 端安装配置
一、创建nagios用户和用户组
[root@localhost ~]#useradd -s /sbin/nologin nagios [root@localhost ~]#mkdir /usr/local/nagios [root@localhost ~]#chown -R nagios.nagios /usr/local/nagios 二、开启系统sendmail服务 [root@localhost ~]#service sendmail start 三、编译安装nagios (如果没有gcc ,可以光盘里#rpm -ihv gcc-4.1.2-51.el5.x86_64.rpm) [root@localhost ~]# tar -zxvf nagios-3.2.0.tar.gz [root@localhost ~]# cd nagios-3.2.0 [root@localhost nagios-3.2.0]#./configure --prefix=/usr/local/nagios #指定nagios的安装目录,这里指定nagios安装到/usr/local/nagios目录 [root@localhost nagios-3.2.0]#make all [root@localhost nagios-3.2.0]#make install # make install用来安装nagios的主程序,CGI和HTML文件 [root@localhost nagios-3.2.0]# make install-init #通过make install-init命令可以在/etc/rc.d/init.d目录下创建nagios启动脚本 [root@localhost nagios-3.2.0]# make install-commandmode #通过make install-commandmode命令来配置目录权限 [root@localhost nagios-3.2.0]# make install-config #make install-cofig命令用来安装nagios示例配置文件,这里安装的路径是/usr/local/nagios/etc nagios安装完成后,目录对应的功能说明如下: bin:可执行程序所在目录 etc:配置文件所在目录 sbin:cgi文件所在目录,也就是执行外部命令所需文件所在目录 share:网页文件所在目录 libexec:外部插件所在目录 var:日志文件,lock等文件所在目录 var/archives:日志自动归档目录 var/rw:用来存放外部命令文件的目录 四、安装nagios的插件 以nagios-plugins-1.4.14为例,插件版本与nagios版本关系并不大。 [root@localhost nagios]#tar -zxvf nagios-plugins-1.4.14.tar.gz [root@localhost nagios]#cd nagios-plugins-1.4.14 [root@localhost nagios-plugins-1.4.14]#./configure --prefix=/usr/local/nagios [root@localhost nagios-plugins-1.4.14]# make [root@localhost nagios-plugins-1.4.14]# make install 查看/usr/local/nagios/libexec,会看到新增很多的插件。 五、安装Nagios中文化插件(可以省略这一步) 下载地址:http://sourceforge.net/projects/nagios-cn/files/ 此处切忌版本要与nagios的版本对应。 [root@localhost ~]#tar jxvf nagios-cn-3.2.0.tar.bz2 [root@localhost nagios-cn-3.2.0]#cd nagios-cn-3.2.0 [root@localhost nagios-cn-3.2.0]#./configure [root@localhost nagios-cn-3.2.0]#make all [root@localhost nagios-cn-3.2.0]#make install 六、安装httpd和php 依次执行如下命令: [root@localhost nagios-cn-3.2.0]#rpm -ivh httpd-2.2.3-43.el5.i386.rpm [root@localhost nagios-cn-3.2.0]#rpm -ivh php-common-5.1.6-27.el5.i386.rpm [root@localhost nagios-cn-3.2.0]#rpm -ivh php-cli-5.1.6-27.el5.i386.rpm [root@localhost nagios-cn-3.2.0]#rpm -ivh php-5.1.6-27.el5.i386.rpm 以上软件包从安装盘中的server目录中寻找。 ======================================================================================= linux RH5安装httpd提示: 此提示是需要安装apr和apr-util的apm包,apr属于apr-1.2.7-11.i386.rpm,而apr-util属于postgresql-libs-8.1.9-1.el5.i386.r.安装时只装apr-1.2.7-11.i386.rpm和postgresql-libs-8.1.9-1.el5.i386.rpm 不行 还需要装上apr-util-1.2.7-6.i386 而且还有顺序 装上post。。才能装上apr-util。。 [root@redhat_5 Server]# rpm -ivh apr-1.2.7-11.el5_6.5.x86_64.rpm [root@redhat_5 Server]# rpm -ihv postgresql-libs-8.1.23-1.el5_6.1.x86_64.rpm [root@redhat_5 Server]# rpm -ihv apr-util-1.2.7-11.el5_5.2.x86_64.rpm 顺利安装成功: ======================================================================================= 七、配置httpd和php 修改httpd的配置文件/etc/httpd/conf/httpd.conf 找到如下两行 User apache Group apache #如果找不到,请通过搜索nobody寻找 修改为 User nagios Group nagios 然后找到 DirectoryIndex index.html index.html.var 修改为 DirectoryIndex index.html index.html.var index.php 再在其下增加如下行 AddType application/x-httpd-php .php 在配置文件末尾增加如下信息: #setting for nagios ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" <Directory "/usr/local/nagios/sbin"> AuthType Basic Options ExecCGI AllowOverride None Order allow,deny Allow from all AuthName "Nagios Access" AuthUserFile /usr/local/nagios/etc/htpasswd Require valid-user </Directory> Alias /nagios "/usr/local/nagios/share" <Directory "/usr/local/nagios/share"> AuthType Basic Options None AllowOverride None Order allow,deny Allow from all AuthName "nagios Access" AuthUserFile /usr/local/nagios/etc/htpasswd Require valid-user </Directory> 保存配置文件 八、新增验证文件 [root@redhat_5 monitor]# /usr/bin/htpasswd -c /usr/local/nagios/etc/htpasswd nick New password: (输入密码) Re-type new password: (再输入一次密码) Adding password for user nick 在/usr/local/nagios/etc下就会新增一个htpasswd验证文件。 九、验证 [root@localhost]#service httpd restart [root@localhost]#vipw 修改最后一行为 nagios:x:500:501::/home/nagios:/bin/bash [root@localhost]#service nagios start 通过浏览器输入http://ip/nagios/ 输入用户名/密码,就可以看到nagios的管理界面啦。此时看到的界面中没有任何监控机的信息。 十、配置本机监控 根据如下配置,完成本机监控的配置,先简单看看nagios监控的庐山真面目。本人已经验证在RHEL5.5下的nagios-3.2.0版本按如下配置之后,能实现nagios对本机的监控支持。 1、新建monitor文件夹,拷贝示例配置文件到该文件夹下 cd /usr/local/nagios/etc cp -rf ./objects/* monitor 2、删除不需要得配置文件 cd /usr/local/nagios/etc/monitor rm windows.cfg switch.cfg printer.cfg 3、修改contacts.cfg(联系人配置文件) define contact{ contact_name nick ;修改为自己名字 use generic-contact ;引用generic-contact的属性信息 alias nick zhang; 全名 email nick.zhang@126.com ; 修改为自己电子邮箱地址 } define contactgroup{ contactgroup_name admins alias Nagios Administrators members nick;添加上边定义的联系人名,以逗号分隔 } 4、修改cgi.cfg default_user_name=nick ;将用户名修改为nagios界面登录的用户名 5、修改nagios.cfg 将所有cfg_file=都注释掉添加如下一行 cfg_dir=/usr/local/nagios/etc/monitor 6、使用命令:/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg检查配置是否有误 7、重启nagios:service nagios restart 此时登录到nagios的web界面,就能查看到监控界面左侧的主机和服务中有我们配置好的本地监控的信息啦。 配置其他客户机被监控
服务端:
1.配置文件nagios.cfg添加以下目录
cfg_dir=/usr/local/nagios/etc/hosts
2.建立该目录,并在其下建立该主机的配置文件linux.cfg。
[root@redhat_5 hosts]# cat linux.cfg
define host{ use linux-server host_name CRON_Deploy ---被监控主机名,必须在服务器上可以ping 通这个名字 alias CRON_Deploy address 192.168.85.208 ---被监控主机IP } define service{ use generic-service host_name CRON_Deploy ---被监控主机名 service_description check-swap ---定义检查对象,这个是在页面显示的名称 check_command check_nrpe!check_swap ---定义check_nrpe 传送参数check_swap到远程被检查主机执行的命令,此命令在远程主机配置文件/usr/local/nagios/etc/nrpe.cfg 中有定义 } define service{ use generic-service host_name CRON_Deploy service_description check-load check_command check_nrpe!check_load } define service{ use generic-service host_name CRON_Deploy service_description check-disk check_command check_nrpe!check_disk } define service{ use generic-service host_name CRON_Deploy service_description check-users check_command check_nrpe!check_users } define service{ use generic-service host_name CRON_Deploy service_description otal_procs check_command check_nrpe!check_total_procs }
3.重启nagios 服务。
[root@redhat_5 hosts]# service nagios restart
Running configuration check...done. Stopping nagios: done. Starting nagios: done.
被监控端:
安装nrpe服务使之能够通信
#tar zxvf nagios-nrpe_2.8.1.orig.tar.gz #cd nagios-nrpe_2.8.1 #./configure --enable-ssl --with-ssl-lib=/usr/lib/ #make all #make install-plugin #make install-daemon #make install-daemon-config 4、配置nrpe信息 #vim /usr/local/nagios/etc/nrpe.cfg allowed_host=192.168.85.207,127.0.0.1 //允许192.168.85.207服务器端对其监控 #/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d //检测nrep配置文件的正确性 #netstat -an | grep 5666 //是否监听5666用于nrpe通信的端口 //在服务端执行检测工作站nrpe信息 #/usr/local/nagios/libexec/check_nrpe -H 192.168.85.208 NRPE v2.8.1 //在工作站执行检测自己的nrpe信息 #/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 NRPE v2.8.1 5、配置工作站上的被检测上网信息 [root@CRON_Deploy etc]# cat nrpe.cfg|grep -v "#" |grep -v "^$" log_facility=daemon pid_file=/var/run/nrpe.pid server_port=5666 nrpe_user=nagios nrpe_group=nagios allowed_hosts=192.168.85.207,127.0.0.1 dont_blame_nrpe=0 debug=0 command_timeout=60 connection_timeout=300 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_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda1 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 command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
6.重启nrpe服务。
#[root@CRON_Deploy etc]# ps -ef|grep nrpe
nagios 9026 1 0 01:41 ? 00:00:00 /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d root 13951 19717 0 21:02 pts/1 00:00:00 grep nrpe [root@CRON_Deploy etc]# kill -9 9026
[root@CRON_Deploy etc]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
登录页面查看结果。注意 此时用户nick没有管理员权限。
如果让nick有管理员权限,必须更改服务端配置文件如下:
/usr/local/nagios/etc/cgi.cfg
[root@redhat_5 etc]# cat cgi.cfg |grep nick
default_user_name=nick authorized_for_system_information=nagiosadmin,nick authorized_for_configuration_information=nagiosadmin,nick authorized_for_system_commands=nagiosadmin,nick authorized_for_all_services=nagiosadmin,nick authorized_for_all_hosts=nagiosadmin,nick authorized_for_all_service_commands=nagiosadmin,nick authorized_for_all_host_commands=nagiosadmin,nick |