Nagios的介绍:
1、Nagios是一个监控系统运行状态和网络信息的监控系统。它能监控所指定的本地或远程主机的系统状态以及运行的服务,同时提供异常通知的功能。
2、 Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志,性能图表等等。
Nagios的功能:
1、 监视网络服务 (mysql,http,ping等)
2、 监视主机资源 (进程, 磁盘 等)
3、  简单的插件扩展功能
4、  异常通知功能 (通过email,短信等)
5、  WEB界面使系统管理人员能够随时查看网络服务状态,系统问题等等
   6、  可以通过手机查看系统监控信息
Nagios的安装:
    一:安装前的准备
      1:安装环境:centos操作系统
      2:所需软件:nagios-3.0.3.tar.gz //nagios程序安装包
                                   httpd-2.2.2.tar.gz   //apache安装包
                                   nagios-plugins-1.4.tar.gz //nagios插件安装包
                                   nrpe-2.12.tar.gz //nagios的扩展,它安装在被监控的服务器上,向nagios提供该服务器的运行情况。
    二:nagios安装
      1:安装nagios主程序
       # tar –zxvf nagios-3.0.3.tar.gz
       # cd nagios-3.0.3
        //为了避免编译错误,先创建nagios用户和组,以及/usr/local/nagios目录,同时指定nagios的目录属组。
       # groupadd nagios
       # useradd nagios –g nagios
       # mkdir /usr/local/nagios
       # chown -R nagios:nagios /uar/local/nagios
       # ./configure --prefix=/usr/local/nagios
       # make all     //编译
       # make install    //安装nagios主要程序,cgi和html文件等
       # make install-init   //安装nagios启动脚本
       # make install-config //将配置文件的例子复制到nagios配置文件里
       # make install-commandmode //配置nagios目录权限。
      # make install-webconf (因为这个命令执行的时候,会在/etc/httpd/conf.d/创建   nagios.conf文件,因此在执行命令前,要mkdir -p /etc/httpd/conf.d/ 
      #cat /etc/httpd/conf.d/nagios.conf >>/usr/local/httpd/conf/httpd.conf
        安装完成后在/usr/local/nagios里面生成 五个目录,分别是 var日志文件,bin执行程序,etc配置文件,sbin, share 网页的目录。至此安装成功。
2:安装nagios插件
    nagios本身并没有监控的功能,所有的监控是由插件完成的,插件将监控的结果返回给nagios,nagios分析这些结果,以web的方式展现给我们,同时提供相应的报警
功能(这个报警的功能也是由插件完成的) 。
    #tar –zxvf nagios-plugins-1.4.tar.gz
    # cd nagios-plugins-1.4.1
    # ./configure –prefix=/usr/local/nagios 编译到nagios的安装目录
    # make && make install  
      安装完成后,会在/usr/local/nagios/ 目录下面生成libexe插件目录,nagios所有的插件都会在这个目录里面。
 
3:安装apache服务。
        假如安装系统的时候安装了apache就不用安装了,使用系统自带安装的服务。
         安装apache这里不用多做解释了。
        # tar –zxvf   httpd-2.2.2.tar.gz
        # cd httpd-2.2.2
        # ./configure –prefix=/usr/local/httpd
        # make && make install
        # vi /usr/local/httpd/conf/httpd.conf
           修改配置文件
          servername 192.168.1.221:80
         假如没有做第六页的make install-webconf,则需要在配置文件最后添加:第七页字符。
         假如做过了,则不用做这步,建议使用第六页的做法,以免出现 http的语法错误。
ScriptAlias /nagios/cgi-bin “/usr/local/nagios/sbin“    //cgi文件的目录
 
<Directory "/usr/local/nagios/sbin">
Options ExecCGI
   AllowOverride None
   Order allow,deny
   Allow from all
AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /usr/local/nagios/etc/htpasswd.users   //验证文件的路径
   Require valid-user
</Directory>
 
Alias /nagios “/usr/local/nagios/share“    //nagios的文件目录
 
<Directory "/usr/local/nagios/share">
Options None
   AllowOverride None
   Order allow,deny
   Allow from all
AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /usr/local/nagios/etc/htpasswd.users   //验证文件的路径
   Require valid-user
</Directory>
上述需要添加的文件主要作用是nagios登录用户的验证。
4:apache安装完成后需要使用命令生成nagios用户的密码,检测nagios配置
 #/usr/local/httpd/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users shen
 # /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 查询配置有没有错误
    当出现
Total Warnings: 0
Total Errors:   0 
   则配置成功,可以登陆http://192.168.1.221/nagios 查看。
5:安装配置nrpe程序
 #tar -zxvf nrpe-2.12.tar.gz
 #cd nrpe-2.12
 # ./configure && make all
 # make install-plugin //安装check_nrpe插件 
 # make install-daemon
 # make install-daemon-config
 # make install-xinetd //安装xinetd脚本
配置nrpe
# vi /etc/xinetd.d/nrpe //假如没有安装xinetd,使用yum install xinetd安装。
 #     only_from       = 127.0.0.1 注释掉
      allowshosts =192.168.1.221 添加监控主机
# vi /etc/services
nrpe            5666/tcp                       #nrpe   //添加
# /etc/init.d/xinetd start 启动服务
6:配置nagios
     nagios主要配置文件有cgi.cfg,nagios.cfg
     commands.cfg,service.cfg,windows.cfg,host.cfg,contacts.cfg 其中service.cfg和host.cfg需要自己创建。
     a: 修改cgi.cfg    #vi /usr/local/nagios/etc/cgi.cfg
     找到这几行,后面添加 shen用户,可以自己定义用户,使用“,”隔开
     authorized_for_system_information=nagiosadmin,shen
     authorized_for_configuration_information=nagiosadmin
     authorized_for_all_services=nagiosadmin
     authorized_for_all_hosts=nagiosadmin
     authorized_for_all_service_commands=nagiosadmin
     authorized_for_all_host_commands=nagiosadmin
b:修改nagios.cfg文件 #vi /usr/local/nagios/etc/nagios.cfg
   找到这几行,去掉前面的注释
    cfg_file=/usr/local/nagios/etc/objects/commands.cfg //命令配置路径
    cfg_file=/usr/local/nagios/etc/objects/contacts.cfg    // 联系人配置
   cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg //模板配置
   cfg_file=/usr/local/nagios/etc/objects/templates.cfg // 监控时段配置
   cfg_file=/usr/local/nagios/etc/objects/host.cfg //需要自己添加 监控主机
   cfg_file=/usr/local/nagios/etc/objects/service.cfg //需要自己添加 监控服务
   cfg_file=/usr/local/nagios/etc/objects/windows.cfg //windows主机监控
   #cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
   command_check_interval=5s   修改这里为5,自动刷新。
 c:添加监控主机文件host.cfg #vi /usr/local/nagios/etc/obgects/host.cfg
 define host{
        use                     linux-server
        host_name               192.168.1.230
        alias                   web
        address                 192.168.1.230
       }
     其他主机的自己复制粘贴即可。
d:添加服务文件service.cfg #vi /usr/local/nagios/etc/obgects/service.cfg
    define service{
         use              local-service
       host_name           192.168.1.230
        service_description   check_tcp 80
         check_command      check_tcp!80
} //监控主机80端口,
define service{
         use              local-service,srv-pnp
       host_name         192.168.1.230
        service_description   Total processes
         check_command      check_nrpe!check_total_procs
} //监控主机进程,需要在监控主机安装使用nrpe程序。
 
e: 配置window主机文件 # vi /usr/local/nagios/etc/objects/windows.cfg
   修改
define host{
        use             windows-server 
        host_name       192.168.1.185  
        alias           My Windows Server      
        address         192.168.1.185  
        }
 define service{
        use                     generic-service
        host_name               192.168.1.185
        service_description     NSClient++ Version
        check_command           check_nt!CLIENTVERSION
        } 需要在监控主机安装NSClient++软件
配置commands.cfg命令文件
# vi /usr/local/nagios/etc/obgects/commands.cfg
 # 'check_nrpe' command definition
define command{
        command_name    check_nrpe
        command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        } //添加nrpe命令,以便监控服务器
配置contacts.cfg文件
它用于发送邮件通知用户服务器的异常。需要启用sendmail服务
在配置文件里面添加进去自己的邮箱,如139邮箱,有短信通知的功能。
使用中国移动的飞信sms程序,也可以实现短信的预警功能,但是需要手机启用飞信。
 
被监控的主机配置:
被监控主机需要安装nrpe和nagos插件plugin程序
1:安装nrpe
   同上11页
2:安装plugin
 # tar –xvzf nagios-plugins-1.4.tar
 # cd nagios-plugins-1.4
 # ./configure --prefix=/usr/local/nagios
 # make && make install
 # chown nagios:nagios /usr/local/nagios //设置属主目录
 # chown -R nagios:nagios /usr/local/nagios/libexec
至此客户端安装完成
  
安装完成后在服务器上面使用
/usr/local/nagios/bin/nagios-v/usr/local/nagios/etc/nagios.cfg 查询配置
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg 启动服务
打开监控网页: http://192.168.1.221/nagios,登陆后即可查看监控的页面
²                 至此nagios配置完毕,其他的一些服务需要自己去配置,同时有些服务没有插件需要自己去网上面找,比如mysql的插件。
²                 我在配置的过程中遇到的主要问题
    1:被监控主机监控服务无法监控
         是因为插件的原因,以及nrpe服务,需要启用nrpe服务,同时插件在commands.cfg中的定义。
   2: 监控过程中进程无法监控
         由于插件check_procs的原因,重新下载check_procs_fixed 这个插件,同时在commands.cfg里面进行修改,即可成功
 define command{
        command_name    check_local_procs
        command_line    $USER1$/ check_procs_fixed -w $ARG1$ -c $ARG2$ -s $ARG3$
        }
 
同时修该监控主机/usr/local/nagios/etc/nrpe.cfg
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs_fixed -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs_fixed -w 150 -c 200
Nagiso还有很多的问题,需要去实现,正在深入的研究。Nagios也可以进行图表性能的显示,正在添加测试!
   nagios服务器还需要做好安全防护,确保服务器的安全。
   1:运行用户使用nagios而不是root
   2: 保证远程代理安全,修改/etc/hosts.allow nrpe只允许nagios服务器访问,并且nrpe使用nagios运行,修改nepr.cfg文件
   3:nrpe可以通过ssl来进行通信,保证通信通道的安全
 
 
Cacti的说明:
   Cacti是一套基于PHP、MySQL、SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善,界面友好。
Cacti安装前的准备 :
 所需软件:httpd-2.2.2.tar.gz
                                  mysql-5.0.18.tar.gz
                                   php-5.2.9.tar.gz
                                  rrdtool-1.2.6.tar.gz 画图工具
                                   cacti-0.8.7b.tar.gz 图像分析工具
                                    zlib、freetype、libpng   lib
                                    gd-2.0.33.tar.gz gd数据包
 
二:cacti安装
1:安装mysql+php+apache服务,因为cacti需要使用到数据库以及动态画面php的支持。
 2:安装rrdtool
       为了避免rrdtool编译过程中出现错误,因此需要安装这几个库
    #rpm -ivh libart_lgpl-devel-2.3.17-4.i386.rpm //先安装libart库,在光盘里面
     # rpm -ivh freetype-devel-2.2.1-19.el5.i386.rpm
     # rpm -ivh libpng-devel-1.2.10-7.0.2.i386.rpm
     # rpm -ivh libjpeg-devel-6b-37.i386.rpm
     # tar -zxvf gd-2.0.33.tar.gz
     # cd gd-2.0.33
     # ./configure --with-jpeg --with-png --with-zlib --with-freetype && make && make install
      # tar –zxvf rrdtool-1.2.6.tar.gz
      # cd rrdtool-1.2.6
      # ./configure --prefix= /usr/local/rrdtool
      # make && make install
 
三:设置mysql数据库
 #/usr/local/mysql/bin/mysql -u root –p //进入数据库
   #create database cacti;   //创建cacti数据库
   #grant all privileges on cacti.* to ‘cacti’@‘localhost’ identified by ‘cacti’; //创建cacti用户,同时赋予cacti用户管理cacti数据库的权限。
   # flush privileges;
 四:安装snmp
     使用系统自带的snmp,因为Cacti需要用到snmp中的两个命令―snmpwalk和snmpget进行数据的采集。所以确定系统中有这两条 命令就可以不需要安装snmp。
      配置snmpd.conf
      修改里面snmp信息允许被侦测的范围。被监控的服务器需要全部安装snmp服务,需要启用snmpd服务,同时更改配置文件,使服务器可以侦测到监控的snmp信息。
五:安装cacti
 #tar -zxvf cacti-0.8.7b.tar.gz
   # mv cacti-08.7.b /usr/local/httpd/htdocs/cacti 
   # cd /usr/local/httpd/htdocs/cacti
   # /usr/local/mysql/bin/mysql -u root -p cacti<./cacti.sql //导入数据库
   # chown -R cacti:cacti /usr/local/httpd/htdocs/cacti/* //赋予权限
   # vi include/config.php //修改相应的数据库信息
       $database_type = "mysql";
       $database_default = “cacti”;   //数据库的名称
       $database_hostname = "localhost";
       $database_username = “cacti”; //数据库用户
       $database_password = “cacti”;   //用户密码
       $database_port = "3306";
     # contab –e    //设置自动化任务
        */5 * * * * daemon /usr/local/php5/bin/php     /usr/local/httpd/htdocs/cacti/poller.php>/dev/null 2>&1 //根据自己的php安装目录进行php命令的调整
到这里的时候,cacti基本上已经配置完成了,剩下的只是在web界面上面操作,添加主机,设置监控的项目,同时还可以安装上cacti的插件, cacti-plugin-arch-2.0.tar.gz,添加更多的监控模板,如thold, monitor,mysql等等。
安装插件:
 #tar –zxvf cacti-plugin-arch-2.0.tar.gz
 # cp cacti-plugin-0.8.7b-PA-v2.0.diff /usr/local/httpd/htdocs/cacti
 # cd /usr/local/httpd/htdocs/cacti
 # patch -p1 -N < cacti-plugin-0.8.7b-PA-v2.1.diff //打上补丁然后,目录下会生成plugins目录
 #tar –zxvf monitor-0.3.4.tar.tar
 # mv thold /usr/local/httpd/htdocs/cacti/plugins
 # cd /usr/local/httpd/htdocs/cacti/
 # vi include/global.php
 # $plugins[] = ‘monitor’; //添加
 #/usr/local/mysql/bin/mysql –u root –p cacti< monitor.sql //导入数据库。
 mysql插件下载下来后,直接可以在网页上面进行导入模板,即可使用。
  
配置遇到的问题:
 1:主要是cacti的版本问题,当我使用0.8.7d版本的时候,图表一直无法出现,系统状态无法up,使用的0.8.7a-c都是正常,可能是版本的原因。
 2:安装插件的时候,出现错误警告,需要修改/lib/ plugins.php文件。
 
其他的插件正在添加。短信报警功能已经实现,需要安装threshld插件,设置预警的范围。