Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1021730
  • 博文数量: 361
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 1759
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-22 23:18
个人简介

学海无涯 个人blog lnmps.com 新站

文章分类

全部博文(361)

文章存档

2017年(1)

2015年(2)

2014年(55)

2013年(303)

分类: LINUX

2013-03-12 12:22:30

原文地址:Nagios监控linux 作者:qinggzha

                         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中文化插件(可以省略这一步)

下载地址:

此处切忌版本要与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"

         

             AuthType Basic

             Options ExecCGI

             AllowOverride None

             Order allow,deny

             Allow from all

             AuthName "Nagios Access"

AuthUserFile /usr/local/nagios/etc/htpasswd

             Require valid-user

         

 

Alias /nagios "/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

         

保存配置文件

八、新增验证文件

[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

通过浏览器输入

输入用户名/密码,就可以看到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
 
 
阅读(346) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~