封云亭 发表于 2015-9-8 09:22:52

Nagios在RHEL5.3上部署

Nagios部署
一、安装环境及软件版本
  系统版本
  rhel-server-5.3-x86_64
  IP:
  192.168.19.29
  Nagios软件
  nagios-3.5.0.tar.gz
  Nagios插件
  nagios-plugins-1.4.16.tar.gz
  Apache版本
  httpd-2.2.24.tar.gz
  Php版本
  php-5.4.13.tar.gz
  
  
二、            为PHP添加GD库
  Nagios组件的运行依赖于httpd,gcc和php,php的运行又依赖于GD库
1.      下载GD库和php相关组件
  zlib-1.2.7.tar.gz
  libpng-1.2.29.tar.gz
  freetype-2.4.11.tar.gz
  jpegsrc.v9.tar.gz
  gd-2.0.33.tar.gz
2.      按顺序安装GD库
  安装zlib:
  tar zxvf zlib-1.2.7.tar.gz
  cd zlib-1.2.7
  ./configure
  make
  make install
  
  安装libpng:
  tar zxvf libpng-1.2.29.tar.gz
  cd libpng-1.2.29/scripts
  mv makefile.linux ../makefile
  cd ..
  make
  make install
  注意:这里的makefile不是用./configure生成,而是直接从scripts/里拷贝一个!
  
  安装freetype:
  tar zxvf freetype-2.4.11.tar.gz
  cd freetype-2.4.11
  ./configure
  make
  make install
  安装jpeg:
  tar zxvf jpegsrc.v9.tar.gz
  cd jpeg-9
  ./configure –enable-shared
  make
  make test
  make install
  注意:这里configure一定要带--enable-shared参数,否则不会生成共享库!
  
  安装GD:
  tar zxvf gd-2.0.33.tar.gz
  cd gd-2.0.33
  ./configure --with-png --with-freetype --with-jpeg
  make
  make install
  
三、            编译安装nagios
1.      在linux防火墙上开启80,5666端口
2.      创建nagios运行所需用户和组
  # groupadd nagios
  # useradd –G nagios nagios
  #passwd nagios
3.      安装nagios
  # cd software/
  # tar zxvf nagios-3.5.0.tar.gz
  # cd nagios
  # ./configure --prefix=/home/nagios/nagios
  # make all
  # make install   安装主要程序,CGI及HTML文件
  # make install-init把nagios做成运行脚本,nagios随开机启动
  # make install-commandmode给外部命令访问nagios配置文件的权限
  # make install-config      把配置文件的例子复制到nagios的安装目录
  
  
4.      验证程序是否正确安装
  # ll
  总计 24
  drwxrwxr-x2 nagios nagios 4096 05-06 10:11 bin
  drwxrwxr-x3 nagios nagios 4096 05-06 10:13 etc
  drwxrwxr-x2 nagios nagios 4096 05-06 10:11 libexec
  drwxrwxr-x2 nagios nagios 4096 05-06 10:11 sbin
  drwxrwxr-x 10 nagios nagios 4096 05-06 10:11 share
  drwxrwxr-x5 nagios nagios 4096 05-06 10:12 var
  如果etc、bin、 sbin、 share、 var、libexec六个目录存在,则表明程序被正确安装,下边是六个目录功能的简要说明:
  etc
  Nagios配置文件位置,包括*.cfg文件,对象模板,密码文件
  bin
  Nagios执行程序所在目录,这个目录只有两个文件nagios,nagiostats
  sbin
  Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录
  share
  Nagios网页文件所在的目录
  var
  Nagios日志文件、spid 等文件所在的目录
  libexec
  Nggios插件安装目录,未装插件之前此目录为空
  
  
四、            安装nagios插件
  # cd software/
  # tar zxvf nagios-plugins-1.4.16.tar.gz
  # cd nagios-plugins-1.4.16
  # ./configure --prefix=/home/nagios/nagios
  #make
  #make install
  
  注意:nagios插件指定的安装路径为nagios安装路径/home/nagios/nagios,安装完成后将在目录/home/nagios/nagios/libexec中生成许多插件,这正是nagios所需的。
  
五、            安装apache
  Apache的运行依赖于apr,apr-util和pcre三个包
1.      下载apache依赖包
  # cd software/
  # wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz
  # wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz
  # wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zip
  
2.      安装apache依赖包
  安装apr:
  # tar -zxvf apr-1.4.5.tar.gz
  # cdapr-1.4.5
  # ./configure --prefix=/usr/local/apr
  # make && make install
  
  安装apr-util:
  # tar -zxvf apr-util-1.3.12.tar.gz
  # cd apr-util-1.3.12
  # ./configure --prefix=/usr/local/apr-util -with- apr=/usr/local/apr/bin/apr-1-config
  # make && make install
  
  安装pcre:
  #unzip -zxvf pcre-8.10.zip
  #cd pcre-8.10
  #./configure –prefix=/usr/local/pcre
  # make && make install
  
3.      拷贝ape和apr-util源码到apache源码目录
  # cp -rf apr-1.4.6 httpd-2.4.1/srclib/apr
  # cp -rf apr-util-1.4.6 httpd-2.4.1/srclib/apr-util
  
4.      安装apache
  # tar zxvf httpd-2.2.24.tar.gz
  # cd httpd-2.2.24
  # ./configure--prefix=/home/nagios/apache --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre --with-included-apr--enable-so --enable-mods-shared=most
  # make
  # makeinstall
  
  
六、            安装PHP运行环境
  # cd /home/nagios/software/gd_software/
  # tar zxvf php-5.4.13.tar.gz
  # cd php-5.4.13
  # ./configure --prefix=/opt/php --with-config-file-path=/opt/php --with-apxs2=/home/nagios/apache/bin/apxs
  # make
  # make test
  =====================================================================
  
  You may have found a problem in PHP.
  This report can be automatically sent to the PHP QA team at
  http://qa.php.net/reports and http://news.php.net/php.qa.reports
  This gives us a better understanding of PHP's behavior.
  If you don't want to send the report immediately you can choose
  option "s" to save it.You can then email it to qa-reports@lists.php.net later.
  Do you want to send this report now? : n
  # make install
  注意:PHP应该在apache之后安装,否则无法在apache的modules下生成libphp5.so文件,导致不能登录页面。
七、            配置Apache
1.      编辑apache/conf/httpd.conf文件
  # vi httpd.conf
  

[*]将apache运行用户改为nagios
  
  User example
  Group example
  改为
  User nagios
  Group nagios
  

[*]修改索引页
  <IfModule dir_module>
  DirectoryIndex index.html
  </IfModule>
  改为
  <IfModule dir_module>
  DirectoryIndex index.php index.html
  </IfModule>
  

[*]修改apache和nagios所属用户和组
  # chown -R nagios:nagios apache/
  # chown -R nagios:nagios nagios/

[*]在httpd.conf文件末尾增加以下内容
  #setting for nagios
  ScriptAlias /nagios/cgi-bin/home/nagios/nagios/sbin
  <Directory "/home/nagios/nagios/sbin">      
  AuthType Basic
  Options ExecCGI
  AllowOverride None
  Order allow,deny
  Allow from all
  AuthName "Nagios Access"
  AuthUserFile/home/nagios/nagios/etc/htpasswd
  Require valid-user
  </directory>
  Alias /nagios/home/nagios/nagios/share
  <Directory "/home/nagios/nagios/share">      
  AuthType Basic
  Options None
  AllowOverride None
  Order allow,deny
  Allow from all
  AuthName "nagios Access"
  AuthUserFile/home/nagios/nagios/etc/htpasswd
  Require valid-user
  </directory>
  LoadModule php5_module modules/libphp5.so
  AddType application/x-httpd-php .php .phtml
  AddType applicatoin/x-httpd-php-source .phps
  AddDefaultCharset utf-8
2.      生成用户验证文件
  # /home/nagios/apache/bin/htpasswd -c   /home/nagios/nagios/etc/htpasswd jsbzb
  New password:
  Re-type new password:
  Adding password for user jsbzb
  
  修改生成的密码文件的用户和属组
  # cd nagios/etc/
  # chown nagios:nagios htpasswd
  疑问:密码中不能有字母,否则无法登录,只能用数字。
八、            启动nagios和apache并登录
1.      apache配置完成后执行如下命令,检查配置是否正确
  # /home/nagios/apache/bin/apachectl -t
  Syntax OK
2.      用root用户启动nagios和apache
  # ./apache/bin/apachectl start&
  # service nagios start
  
九、            至此,nagios安装完成,验证配置
  在浏览器中输入地址:http://192.168.19.29/nagios,出现下图登录等待窗口,输入之前创建的用户和密码登录。

登录成功后进入nagios首页

十、            安装nagios的snmp采集插件
  nagios-snmp-plugins是一套用Perl编写的通过SNMP方式监控主机的插件程序。
  配置check_snmp_int.pl这些插件的使用时需要配置cpan,CPAN是Comprehensive Perl Archive Network的缩写.。它是一个巨大的Perl软件收藏库,收集了大量有用的Perl模块(modules)及其相关的文件。这里主要是使用Perl-Net-SNMP模块。
1.      安装Perl-Net-SNMP模块
  有两种方式安装:
  A)通过CPAN来安装
  #perl -MCPAN -e shell
  cpan> install Net::SNMP
  
  B) 手工安装
  首先去官方网站下载以下几个模块:
  Crypt::DES
  Digest::MD5
  Digest::SHA1
  Digest::HMAC
  Net::SNMP
  
  下载后对于每个模块依次按照下面的方式安装
  #tar zxvf *.tar.gz   表示模块名,具体请按上面提到的模块替换
  #cd             表示模块名,具体请按上面提到的模块替换
  #perl Makefile.pl
  #make test
  #make install
  注意:Net::SNMP模块必须在最后安装。至此Net::SNMP手动安装完毕
2.      安装snmp采集插件
  # tar zxvf nagios-snmp-plugins.1.1.1.tgz
  # cd nagios_plugins
  # ./install.sh
  
  
十一、         安装配置NRPE(for linux)
  Nagios nrpe 能够实现调用远程主机上的nagios插件及其脚本来实现远程监控。
1.      服务器端安装nrpe插件
  # tar zxvf nrpe-2.14.tar.gz
  # cd nrpe-2.14
  # ./configure --prefix=/home/nagios/nagios
  # make all
  # make install-plugin
  # cd /home/nagios/nagios/libexec/
  # ll
  总计 6812
  -rwxr-xr-x 1 nagios nagios 382372 05-07 17:23 check_apt
  -rwxr-xr-x 1 nagios nagios   2247 05-07 17:23 check_breeze
  -rwxr-xr-x 1 nagios nagios 159218 05-07 17:23 check_by_ssh
  lrwxrwxrwx 1 nagios nagios      9 05-07 17:23 check_clamd -> check_tcp
  -rwxr-xr-x 1 nagios nagios 112929 05-07 17:23 check_cluster
  -rwxrwxr-x 1 nagios nagios65885 05-08 10:37 check_nrpe
  ………省略
  Nagios只要拥有NRPE的扩展插件功能就可以了,所以在Nagios监测服务器安装NRPE工作到这步就可以了。
  
2.      客户端安装nrpe插件
  Nrpe插件依赖于gcc、openssl、openssl-devel三个包,如果没有需要先安装。
  检查
  rpm –q gcc
  rpm –q openssl openssl-devel
  安装
  yum -y install gcc gcc-c++
  yum -y install openssl openssl-devel
  
  创建nagios用户
  # groupadd -g 501 nagios
  # useradd -u 500 -g nagios nagios
  # passwd nagios
  nagios用户密码统一使用:zzb1201
  
  拷贝以下三个文件到客户端,从服务器(192.168.19.29)下载以下程序
  服务器目录:/home/nagios/software/Client
  nagios-plugins-1.4.16.tar.gz
  nrpe-2.14.tar.gz
  check_linux_stats.pl
  Sys-Statistics-Linux-0.66.tar.gz
  
  
  安装nagios插件
  # tar -zxvf nagios-plugins-1.4.16.tar.gz
  # cd nagios-plugins-1.4.16
  # ./configure --prefix=/home/nagios/nagios
  # make
  # make install
  # chown -R nagios:nagios /home/nagios/nagios
  
  安装nrpe插件
  # tar -zxvf nrpe-2.14.tar.gz
  # cd nrpe-2.14
  # ./configure -- prefix=/home/nagios/nagios
  # make all
  # make install-plugin
  # make install-daemon
  # make install-daemon-config
  # make install-xinetd
  
  打开防火墙规则
  检查防火墙是否开启,哪果没有开启,则跳过此步
  service iptables status
  iptables -I RH-Firewall-1-INPUT -p tcp -m tcp --dport 5666 -j ACCEPT
  service iptables save
  安装Sys-Statistics-Linux-0.66.tar.gz
  # tar zxvf Sys-Statistics-Linux-0.66.tar.gz
  # cd Sys-Statistics-Linux-0.66
  # perl Makefile.PL
  # make
  # make test
  # make install
  
3.      配置客户端nrpe参数

[*]编辑/etc/xinetd.d/nrpe文件,增加远程服务器地址
  only_from       = 127.0.0.1 192.168.19.29   两地址之间用空格隔开
  
  重启xinetd服务
  service xinetd restart
  
  编辑/home/nagios/nagios/etc/nrpe.cfg,修改或增加以下内容
  server_address= xxx.xxx.xxx.xxx(本机地址)
  allowed_hosts=127.0.0.1, 172.16.84.254 ,192.168.19.29
  注意:这里要增加两个地址:一个是本机网关地址,另一个是远程监控服务器地址
  
  配置nrpe命令
  
  command=/home/nagios/nagios/libexec/check_users -w 5 -c 10
  command=/home/nagios/nagios/libexec/check_load -w 15,10,5 -c 20,15,10
  #command=/home/nagios/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
  #command=/home/nagios/nagios/libexec/check_procs -w 5 -c 10 -s Z
  command=/home/nagios/nagios/libexec/check_procs -w 250 -c 400
  
  command=/home/nagios/nagios/libexec/check_linux_stats.pl -M-w 80,50 -c 90,50
  command=/home/nagios/nagios/libexec/check_linux_stats.pl -D -w 10 -c 5 -p /,/boot,/home/csuser/Logs
  command=/home/nagios/nagios/libexec/check_linux_stats.pl -D -w 10 -c 5 -p /nas/homeapach,/httplogs,/nas/blogwww,/nas/uc,/nas/bar,/nas/hidden
  command=/home/nagios/nagios/libexec/check_linux_stats.pl-C -w 80 -c 90
  command=/home/nagios/nagios/libexec/check_linux_stats.pl   -N -w 419430400 -c 838860800 -p eth0
  

[*]安装check_linux_stat插件
[*]拷贝check_linux_stats.pl到nagios/libexec目录下
[*]修改check_linux_stats.pl的所属用户和属组
  chown nagios:nagios check_linux_stats.pl
  chmod 755 check_linux_stats.pl
  

[*]启动nrpe
  /home/nagios/nagios/bin/nrpe -c/home/nagios/nagios/etc/nrpe.cfg -d

[*]添加开机启动
  echo '/home/nagios/nagios/bin/nrpe -c/home/nagios/nagios/etc/nrpe.cfg -d' >> /etc/rc.d/rc.local
  
  
4.      配置服务器端nrpe参数

[*]如果是首次配置,请在/home/nagios/nagios/etc/objects目录下创建以自己命名的目录,监控对象以负责人分类,如:监控张三负责的服务器,创建目录zhangs
[*]创建(首次)主机组和服务组文件
  服务组:
  $ vi servicegroups.cfg
  
  define servicegroup {
  servicegroup_name    zhangs-linux-services
  alias   Zhangs Linux Services
  }
  
  主机组
  $vi hostgroups.cfg
  define hostgroup{
  hostgroup_namezhangs-linux-servers ; The name of the hostgroup
  alias         Zhangs Linux Servers ; Long name of the group
  members         localhost
  }
  把主机组文件和服务组文件添加到nagios.cfg
  $ vi nagios.cfg
  cfg_file=/home/nagios/nagios/etc/objects/hostgroups.cfg
  cfg_file=/home/nagios/nagios/etc/objects/servicegroups.cfg
  

[*]添加联系人和联系人组(首次)
  $ vi contacts.cfg
  添加以下内容
  define contact{
  contact_name                  zhangs
  use                           generic-contact
  alias                           zhangs
  email                           zhangs@zzb.com.cn
  }
  
  define contactgroup{
  contactgroup_name      zhangs-cg
  alias                     zhangs-cg
  members               jsbzb,zhangs         #添加值班邮箱和自己常用邮箱,多个联系人之间用逗号隔开
  }
  

[*]在zhangsan目录下创建对象
  vi zhangs-rhel5-linux.cfg
  说明:命名规则按 “负责人-机器名-系统类型” 定义,太长可以简写。
  添加以下内容
  define host{
  use         linux-server
  host_name   zhangs-rhel5-linux
  alias       zhangs-rhel5-linux
  address   172.16.84.161
  }
  
  define service{
  use               generic-service
  host_name         zhangs-rhel5-linux
  service_description Current Load
  check_command       check_nrpe!check_load
  servicegroups         zhangs_linux_services
  contact_groups          zhangs-cg
  }
  
  define service{
  use               generic-service
  host_name         zhangs-rhel5-linux
  service_description Current Users
  check_command       check_nrpe!check_users
  servicegroups         zhangs_linux_services
  contact_groups          zhangs-cg
  }
  
  define service{
  use               generic-service
  host_name         zhangs-rhel5-linux
  service_description Total Processes
  check_command       check_nrpe!check_total_procs
  servicegroups         zhangs_linux_services
  contact_groups          zhangs-cg
  }
  
  define service{
  use               generic-service
  host_name         zhangs-rhel5-linux
  service_description Mem Usage
  check_command       check_nrpe!check_mem
  servicegroups         zhangs_linux_services
  contact_groups          zhangs-cg
  }
  
  define service{
  use               generic-service
  host_name         zhangs-rhel5-linux
  service_description Disk Stat
  check_command       check_nrpe!check_diskstat_local
  servicegroups         zhangs_linux_services
  contact_groups          zhangs-cg
  }
  
  define service{
  use               generic-service
  host_name         zhangs-rhel5-linux
  service_description Disk Stat
  check_command       check_nrpe!check_diskstat_nas
  servicegroups         zhangs_linux_services
  contact_groups          zhangs-cg
  }
  
  define service{
  use               generic-service
  host_name         zhangs-rhel5-linux
  service_description Cpu Usage
  check_command       check_nrpe!check_cpu
  servicegroups         zhangs_linux_services
  contact_groups          zhangs-cg
  }
  
  define service{
  use               generic-service
  host_name         wangy-homeuc1-linux
  service_description Network Usage
  check_command       check_nrpe!check_netword_usage
  servicegroups         wangy-linux-services
  contact_groups          zhangs-cg
  }
  

[*]编辑nagios.cfg文件
  vi /home/nagios/nagios/etc/nagios.cfg
  添加刚创建的对象文件
  #zhangs object config files
  cfg_file=/home/nagios/nagios/etc/objects/zhangs/ zhangs-rhel5-linux.cfg
  

[*]编辑主机组文件hostgroups.cfg添加新加主机
  $vi hostgroups.cfg
  define hostgroup{
  hostgroup_namezhangs-linux-servers ; The name of the hostgroup
  alias         Zhangs Linux Servers ; Long name of the group
  members         localhost, zhangs-rhel5-linux
  }
  
  

[*]验证nagios配置
  # /home/nagios/nagios/bin/nagios -v /home/nagios/nagios/etc/nagios.cfg
  ………………
  Total Warnings: 0
  Total Errors:   0
  
  Things look okay - No serious problems were detected during the pre-flight check
  

[*]重新装载nagios配置
  service nagios reload

[*]刷新页面查看增加结果
  
十二、         安装配置NSClient++(for windows)
  监控Windows需要在windows安装一个插件nsclient++,有32位和64位,根据实际安装
1.      nsclient++获取方法:
  a、ftp到监控服务器(192.168.19.29)/home/nagios/software/Client目录下下载
  b、下载地址:http://nsclient.org/nscp/downloads
  
2.      客户端安装配置nsclient++

[*]下载nsclient++后安装
  安装过程十分简单,直接点击下一步,下一步即可。安装过程注意如下图的设置即可
  
  

[*]配置nsclient++,配置文件是NSC.ini。用记事本编辑nsc.ini,修改以下几项
  去掉注释符号";",除了CheckWMI.dll和RemoteConfiguration.dll
  
  NRPEListener.dll
  NSClientListener.dll
  NSCAAgent.dll
  CheckWMI.dll
  FileLogger.dll
  CheckSystem.dll
  CheckDisk.dll
  CheckEventLog.dll
  CheckHelpers.dll
  FileLogger.dll
  CheckSystem.dll
  CheckDisk.dll
  NSClientListener.dll
  NRPEListener.dll
  SysTray.dll
  CheckEventLog.dll
  CheckHelpers.dll
  ;CheckWMI.dll
  CheckNSCP.dll
  CheckExternalScripts.dll
  NSCAAgent.dll
  LUAScript.dll
  ;RemoteConfiguration.dll
  NRPEClient.dll
  CheckTaskSched.dll
  
  去掉nrpe口令,加”;”即可
  
  ;# OBFUSCATED PASSWORD
  ;obfuscated_password=Jw0KAUUdXlAAUwASDAAB
  ;# PASSWORD
  ;password=secret-password
  
  配置端口和监控服务器地址
  
  allowed_hosts=192.168.19.29
  注意:如果是新华社机房的机器,应该是allowed_hosts=172.16.84.254
  
  port=12489
  

[*]启动客户端nsclient++
  从 开始-程序-NSClient++ 找到Start NSClient++ (x64),并点击启动。
  或
  在安装目录下执行NSClient++ -start,停止服务执行NSClient++ -stop

[*]验证端口,5666和12489
  netstat -an | more
  
  
3.      服务器端配置

[*]编辑主机组文件hostgroups.cfg添加新主机组
  $vi hostgroups.cfg
  define hostgroup{
  hostgroup_namezhangs-linux-servers ; The name of the hostgroup
  alias         Zhangs Linux Servers ; Long name of the group
  members         localhost, zhangs-rhel5-linux
  }
  define hostgroup{
  hostgroup_namezhangs-windows-servers ; The name of the hostgroup
  alias         Zhangs Windows Servers ; Long name of the group
  members       zhangs-lenovopc-win7
  }

[*]编辑服务组文件servicegroups.cfg添加新服务
  $ vi servicegroups.cfg
  
  define servicegroup {
  servicegroup_name    zhangs-linux_services
  alias   Zhangs Linux Services
  }
  define servicegroup {
  servicegroup_name    zhangs_windows_services
  alias   Zhangs Windows Services
  }
  

[*]编辑联系人文件,增加联系人和联系人组
  define contact{
  contact_name                  zhangs
  use                           generic-contact
  alias                           zhangs
  email                           zhangs@zzb.com.cn
  }
  define contactgroup{
  contactgroup_name      zhangs-cg
  alias                  zhangs-cg
  members                  jsbzb,zhangs
  }
  

[*]在自己的目录(没有请创建)下创建对象配置文件
  vi zhangs-lenovopc-win7.cfg
  define host{
  use             windows-server
  host_name       zhangs-lenovopc-win7
  alias         zhangs-lenovopc-win7
  address         192.168.16.157
  }
  
  define service {
  host_name               zhangs-lenovopc-win7      
  service_description   Check Cpuload      
  use                     generic-service      
  check_command         check_nt!CPULOAD!-l 5,70,80,10,80,90
  servicegroups                   zhangs_windows_services
  contact_groups          zhangs-cg
  }
  
  define service {
  host_name               zhangs-lenovopc-win7      
  service_description   Check Uptime      
  use                     generic-service
  check_command         check_nt!UPTIME
  servicegroups                   zhangs_windows_services
  contact_groups          zhangs-cg
  }
  
  define service {
  host_name               zhangs-lenovopc-win7      
  service_description   Check Note      
  use                     generic-service
  check_command         check_nt!PROCSTATE! -d SHOWALL -l YoudaoNote.exe      
  servicegroups                   zhangs_windows_services
  contact_groups          zhangs-cg
  }
  
  define service {
  host_name               zhangs-lenovopc-win7
  service_description   Memory Usage
  use                     generic-service
  check_command         check_nt!MEMUSE!-w 80 -c 90
  servicegroups                   zhangs_windows_services
  contact_groups          zhangs-cg
  }
  
  define service {
  host_name               zhangs-lenovopc-win7
  service_description   Drive C:\ Space
  use                     generic-service
  check_command         check_nt!USEDDISKSPACE!-l c -w 80 -c 90
  servicegroups                   zhangs_windows_services
  contact_groups          zhangs-cg
  }
  define service {
  host_name               zhangs-lenovopc-win7
  service_description   Drive D:\ Space
  use                     generic-service
  check_command         check_nt!USEDDISKSPACE!-l d -w 80 -c 90
  servicegroups                   zhangs_windows_services
  contact_groups          zhangs-cg
  }
  

[*]注册windows主机
  编辑nagios/etc/nagios.cfg文件,添加以下内容
  #weiyq object config files
  cfg_file=/home/nagios/nagios/etc/objects/zhangs/zhangs-lenovopc-win7.cfg
  

[*]验证nagios配置
  # /home/nagios/nagios/bin/nagios -v /home/nagios/nagios/etc/nagios.cfg
  ………………
  Total Warnings: 0
  Total Errors:   0
  
  Things look okay - No serious problems were detected during the pre-flight check
  

[*]重新装载配置
  service nagios reload
  
  
  
  
  
  
十三、         网络设备监控配置(Cisco)
  简介:此处以Cisco为例,其它网络设备检控命令可能需要调整。Cisco交换机都支持SNMP协议,只需要简单的设置即可开启。在安装Nagios之前,必须已经安装Net-Utils及其开发组件,参考本文第十步。由于使用check_snmp检测的结果不够人性化,大部分的结果都需要重新调整。使用Perl脚本调用NET::SNMP模块,实现收集监控结果,并重新输出,更易阅读和使用。
  
  比较好的perl脚本有如下几个
  从服务器(192.168.19.29)的目录/home/nagios/software/net_perl下载
  check_snmp_cisco_loadavg.pl
  check_snmp_cisco_memutil.pl
  check_snmp_cisco_ifstatus.pl
  check_snmp_int.pl
  check_snmp_env.pl
  
  监控服务器端配置步骤:
1.      增加perl脚本

[*]拷贝check_snmp_cisco_loadavg.pl、check_snmp_cisco_memutil.pl、check_snmp_cisco_ifstatus.pl三个文件到/home/nagios/libexec目录下
[*]修改脚本属组和权限
chown nagios:nagios check_snmp_cisco_*.pl
chmod 755 check_snmp_cisco_*.pl
  
2.      编辑命令配置文件commands.cfg,增加网络监控命令
  vi nagios/etc/objects/commands.cfg
  
  #net command add by wangyong 20130514
  
  define command{
  command_name check_snmp_cisco_loadavg
  command_line $USER1$/check_snmp_cisco_loadavg.pl -H $HOSTADDRESS$ $ARG1$
  }
  
  define command{
  command_name check_snmp_cisco_memutil
  command_line $USER1$/check_snmp_cisco_memutil.pl -H $HOSTADDRESS$ $ARG1$
  }
  
  define command{
  command_name check_snmp_cisco_ifstatus
  command_line $USER1$/check_snmp_cisco_ifstatus.pl -H $HOSTADDRESS$$ARG1$
  }
  
  define command{
  command_name check_snmp_int
  command_line $USER1$/check_snmp_int.pl -H $HOSTADDRESS$$ARG1$
  }
  
  define command{
  command_name check_snmp_env
  command_line $USER1$/check_snmp_env.pl -H $HOSTADDRESS$$ARG1$
  }
  
3.      添加网络主机对象
  如果是第一次添加,在nagios/etc/objects目录下创建自己的对象目录
  $ mkdir zhangs
  进入zhangs目录,创建网络设备对象
  vi zhangs-cisco2950-switch.cfg
  
  define host{
  use         generic-switch
  host_name   zhangs-cisco2950-switch
  alias       zhangs-cisco2950-switch
  address   192.168.16.160(交换机地址)
  }
  
  define service{
  use                     generic-service
  host_name               zhangs-cisco2950-switch
  service_description   PING
  check_command         check_ping!200.0,20%!600.0,60%
  servicegroups         zhangs-switch-services
  contact_groups          zhangs-cg
  
  }
  
  define service{
  use                     generic-service;
  host_name               zhangs-cisco2950-switch
  service_description   Uptime
  check_command         check_snmp!-C public -o sysUpTime.0
  servicegroups         zhangs-switch-services
  contact_groups          zhangs-cg
  }
  
  define service{
  use                     generic-service
  host_name               zhangs-cisco2950-switch
  service_description   Port 47 Link Status
  check_command         check_snmp!-C public -o ifOperStatus.47 -r 1 -m RFC1213-MIB
  servicegroups         zhangs-switch-services
  contact_groups          zhangs-cg
  }
  
  define service{
  use                     generic-service
  host_name               zhangs-cisco2950-switch
  service_description   CPU Avg Load
  check_command         check_snmp_cisco_loadavg! -C public -w 70 -c 90
  servicegroups         zhangs-switch-services
  contact_groups          zhangs-cg
  }
  
  define service{
  use                     generic-service
  host_name               zhangs-cisco2950-switch
  service_description   Memery Usage
  check_command         check_snmp_cisco_memutil! -C public -w 70 -c 90
  servicegroups         zhangs-switch-services
  contact_groups          zhangs-cg
  }
  
  define service{
  use                     generic-service
  host_name               zhangs-cisco2950-switch
  service_description   Port 47 traffic Status
  check_command         check_snmp_cisco_ifstatus! -C public -i "FastEthernet0/47"
  servicegroups         zhangs-switch-services
  contact_groups          zhangs-cg
  }
  
  define service{
  use                     generic-service
  host_name               zhangs-cisco2950-switch
  service_description   System Info
  check_command         check_snmp! -C public -o sysDescr.0
  servicegroups         zhangs-switch-services
  contact_groups          zhangs-cg
  }
  
  define service{
  use                     generic-service
  host_name               zhangs-cisco2950-switch
  service_description   Check Fan Ps Temp Status
  check_command         check_snmp_env!-C public
  servicegroups         zhangs-switch-services
  contact_groups          zhangs-cg
  }
  
  define service{
  use                     generic-service
  host_name               zhangs-cisco2950-switch
  service_description   Vlan1 traffic status
  check_command         check_snmp_int! -C public-n Vlan1 -f
  servicegroups         zhangs-switch-services
  contact_groups          zhangs-cg
  }
  
  define service{
  use                     generic-service
  host_name               zhangs-cisco2950-switch
  service_description   Check Port status
  check_command         check_snmp_int! -C public-n "Fast.*0.4"
  servicegroups         zhangs-switch-services
  contact_groups          zhangs-cg
  }
  
4.      添加网络服务组
  $ vi servicegroups.cfg
  define servicegroup {
  servicegroup_name    zhangs-switch-services
  alias   Zhangs Switch Services
  }
  
5.      添加网络主机组
  $vi hostgroups.cfg
  define hostgroup{
  hostgroup_namezhangs-switch-servers ; The name of the hostgroup
  alias         Zhangs Switch Servers ; Long name of the group
  members       zhangs-cisco2950-switch
  }
  
6.      在nagios/etc/nagios.cfg中添加网络主机配置
  $ vi nagios.cfg
  
  cfg_file=/home/nagios/nagios/etc/objects/zhangs/ zhangs-cisco2950-switch.cfg
  
7.      编辑联系人文件,增加联系人和联系人组
  define contact{
  contact_name                  zhangs
  use                           generic-contact
  alias                           zhangs
  email                           zhangs@zzb.com.cn
  }
  define contactgroup{
  contactgroup_name      zhangs-cg
  alias                  zhangs-cg
  members                  jsbzb,zhangs
  }
  
8.      检查配置正确性
  # /home/nagios/nagios/bin/nagios -v /home/nagios/nagios/etc/nagios.cfg
  ………………
  Total Warnings: 0
  Total Errors:   0
  
  Things look okay - No serious problems were detected during the pre-flight check
  
9.      重新加载配置文件
  service nagios reload
  
10.            刷新监控页面查看添加结果。
  
  
十四、         Pnp4nagios安装配置
  pnp4nagios是基于RRD轮循(环状)数据库中所提供的综合信息,以可视化图形的方式呈现给用户的一款nagios插件;
  
1.      安装rrdtools
  官网下载地址:http://oss.oetiker.ch/rrdtool/
  yum install rrdtool-perl
  
2.      检查PHP版本
  PHP版本必须在5.2以上
  # php -v
  PHP 5.4.13 (cli) (built: May6 2013 17:41:39)
  Copyright (c) 1997-2013 The PHP Group
  Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
  
3.      安装pnp4nagios
  # cd /home/nagios/software/pnp4nagios/
  # tar zxvf pnp4nagios-0.6.21.tar.gz
  # cd pnp4nagios-0.6.21
  # ./configure --prefix=/home/nagios/pnp4nagios --with-nagios-user=nagios --with-nagios-group=nagios
  # make all
  #make install
  # make install-webconf
  # make install-config
  # make install-init
  
4.      更改pnp4nagios属组
  # chown -R nagios:nagiospnp4nagios/
  
5.      配置pnp4nagios
  这里我们使用Bulk Mode with NPCD模式

[*]创建配置文件
  $ cd pnp4nagios/etc/
  $ mv misccommands.cfg-sample misccommands.cfg
  $ mv nagios.cfg-sample nagios.cfg
  $ mv rra.cfg-sample rra.cfg
  
  $ cd pages/
  $ mv web_traffic.cfg-sample web_traffic.cfg
  
  $ mv check_all_local_disks.cfg-sample check_all_local_disks.cfg
  $ mv check_nrpe.cfg-sample check_nrpe.cfg
  $ mv check_nwstat.cfg-sample check_nwstat.cfg
  

[*]删除install.php
  $ cd pnp4nagios/share/
  $ mv install.php install.php.bak
  

[*]启动服务
  # service npcd start
  Starting npcd: done.
  

[*]修改nagios配置文件,打开performance_data
  $ vi nagios/etc/nagios.cfg
  修改以下参数
  process_performance_data=1
  
  添加以下参数
  host_perfdata_file=/home/nagios/pnp4nagios/var/host-perfdata
  service_perfdata_file=/home/nagios/pnp4nagios/var/service-perfdata
  
  service_perfdata_file=/home/nagios/pnp4nagios/var/service-perfdata
  service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$
  service_perfdata_file_mode=a
  service_perfdata_file_processing_interval=15
  service_perfdata_file_processing_command=process-service-perfdata-file
  
  #
  # host performance data starting with Nagios 3.0
  #
  host_perfdata_file=/home/nagios/pnp4nagios/var/host-perfdata
  host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$
  host_perfdata_file_mode=a
  host_perfdata_file_processing_interval=15
  host_perfdata_file_processing_command=process-host-perfdata-file
  

[*]编辑nagios命令配置文件,添加以下命令
  vi nagios/etc/objects/commands.cfg
  
  注释原来的process-service-perfdata-file和process-host-perfdata-file
  define command{
  command_name    process-service-perfdata-file
  command_line    /bin/mv /home/nagios/pnp4nagios/var/service-perfdata /home/nagios/pnp4nagios/var/spool/service-perfdata.$TIMET$
  }
  
  define command{
  command_name    process-host-perfdata-file
  command_line    /bin/mv /home/nagios/pnp4nagios/var/host-perfdata /home/nagios/pnp4nagios/var/spool/host-perfdata.$TIMET$
  }
  

[*]修改nagios模板文件
  Vi nagios/etc/objects/templates.cfg
  在 host 模板中加入
  action_url      /pnp4nagios/graph?host=$HOSTNAME$&srv=_HOST_
  
  在service 模板中加入
  action_url   /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
  

[*]验证nagios配置
  # /home/nagios/nagios/bin/nagios -v /home/nagios/nagios/etc/nagios.cfg
  ………………
  Total Warnings: 0
  Total Errors:   0
  
  Things look okay - No serious problems were detected during the pre-flight check

[*]重新加载nagios配置
  # service nagios reload
  Running configuration check...done.
  Reloading nagios configuration...done
  

[*]修改apache配置
  $ vi apache/conf/httpd.conf
  
  在文件最后加入以下内容
  Alias /pnp4nagios "/home/nagios/pnp4nagios/share"
  <Directory "/home/nagios/pnp4nagios/share">
  AllowOverride None
  Order allow,deny
  Allow from all
  <IfModule mod_rewrite.c>
  RewriteEngine On
  Options FollowSymLinks
  RewriteBase /pnp4nagios/
  RewriteRule ^(application|modules|system) -
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule .* index.php/$0
  </IfModule>
  </Directory>
  

[*]重启apache服务
  # ./apache/bin/apachectl stop
  # ./apache/bin/apachectl start&
  
  
十五、         安装配置check_oracle_health
1.      安装客户端NRPE
  参考第十一章节
  
2.      设定系统环境变量
  在root用户下,编辑.bash_profile,添加ORACLE环境变量,要和ORACLE用户的.bash_profile文件中的设置一样。
  注:必须先配置环境变量,否则perl的oracle插件安装报错。
  
  ORACLE_BASE=/u01/app/11.1.0
  ORACLE_SID=zzbrac11
  CRS_HOME=$ORACLE_BASE/crs
  ORACLE_HOME=$ORACLE_BASE/db
  PATH=$PATH:$CRS_HOME/bin:$ORACLE_HOME/bin:/usr/bin
  LD_LIBRARY_PATH=$ORACLE_HOME/lib:$CRS_HOME/lib:/lib:/usr/lib
  CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
  export ORACLE_BASE ORACLE_SID CRS_HOMEORACLE_HOME CLASSPATH PATH LD_LIBRARY_PATH
  
3.      安装check_oracle_health
  # tar zxvf check_oracle_health-1.7.7.3.tar.gz
  # cd check_oracle_health-1.7.7.3
  # ./configure --prefix=/home/nagios/nagios/ --with-nagios-user=nagios --with-nagios-group=nagios --with-mymodules-dir=/home/nagios/nagios/libexec/ --with-mymodules-dyn-dir=/home/nagios/nagios/libexec/
  
  # make all
  # make install
  
  # chown -R nagios:nagios /home/nagios/nagios/
  
4.      安装perl的oracle插件
  # tar zxvf DBI-1.609.tar.gz
  # cd DBI-1.609
  # perl Makefile.PL
  # make all
  # make install
  
  # tar zxvf DBD-Oracle-1.24a.tar.gz
  # cd DBD-Oracle-1.24
  # perl Makefile.PL
  # make all
  # make install
  
5.      配置检测命令
  $ vi nagios/etc/nrpe.cfg
  
  # The following is oracle command arguments
  command=/home/nagios/nagios/libexec/check_oracle_health --connect='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.84.59)(PORT=1521))(CONNECT_DATA=(SID=zzbrac11)))' --username NEWSBLOG --password NEWSBLOG --mode connection-time
  command=/home/nagios/nagios/libexec/check_oracle_health --connect='(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.84.59)(PORT=1521))(CONNECT_DATA=(SID=zzbrac11)))'--mode tnsping
  
6.      重启客户端nrpe服务
  /home/nagios/nagios/bin/nrpe -c /home/nagios/nagios/etc/nrpe.cfg -d
  
7.      配置服务器端服务
  参考十一章节第4小节
  
  
  
  
十六、         安装配置check_mssql_health
1.      安装check_mssql_health
  # tar zxvf check_mssql_health-1.5.19.1.tar.gz
  # cd check_mssql_health-1.5.19.1
  # ./configure --prefix=/home/nagios/nagios --with-nagios-user=nagios --with-nagios-group=nagios
  # make && make install
  
  # chown nagios:nagios /home/nagios/nagios/libexec/check_mssql_health
  
2.      安装、配置freetds-0.82
  说明:在linux下连接MSSQL比较困难,微软没有提供任何接口给开发人员。还好,MSSQL是从Sybase衍生出来的,有些人做了Sybase的Linux下的连接库,这些连接库同时也能支持MSSQL,FreeTDS就是这样的一个软件。

[*]安装freetds-0.82
  # tar xvzf freetds-0.82.tar.gz
  # cd freetds-0.82
  # ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib
  # make && make install

[*]配置freetds-0.82
  配置root用户环境变量
  # vi .bash_profile
  
  SYBASE=/usr/local/freetds
  FREETDS_HOME=/usr/local/freetds
  PATH=$FREETDS_HOME/bin:$PATH
  
  export SYBASE FREETDS_HOME PATH
  exportLD_LIBRARY_PATH=/usr/local/freetds/lib/
  
  # source .bash_profile
  
  配置sql servers
  Vi /usr/local/freetds/etc/freetds.conf
  
  #juyuan1 sql server
  
  host = 172.16.84.31
  port = 1433
  tds version = 7.0
  
  增加 /usr/local/freetds/lib 到 /etc/ld.so.conf, 然后,运行ldconfig
  # vi /etc/ld.so.conf
  
  include ld.so.conf.d/*.conf
  /usr/local/freetds/lib
  
  # ldconfig
  如果不增加/usr/local/freetds/lib,手工执行命令成功,但是nagios自动运行失败,错误如下:
  cannot connect to xxx.xxx.xxx.xxx. install_driver(Sybase) failed: Can't load '/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/DBD/Sybase/Sybase.so' for module DBD::Sybase: libct.so.4: 无法打开共享对象文件: 没有那个文件或目录 at /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/DynaLoader.pm line 230.
  
3.      安装DBI和DBD-Sybase
  # tar zxvf DBI-1.609.tar.gz
  # cd DBI-1.609
  # perl Makefile.PL
  # make
  # make test
  # make install
  
  # tar zxvf DBD-Sybase-1.15.tar.gz
  # cd DBD-Sybase-1.15
  # perl Makefile.PL
  # make
  # make test
  注意:此处会有如下错误,可以忽略
  Failed 11/13 test scripts, 15.38% okay. 216/241 subtests failed, 10.37% okay.
  make: *** 错误 9
  # make install
  
  
4.      测试连接
  # cd /home/nagios/nagios/libexec
  # ./check_mssql_health --server=serve_juyuan2 --username=sa --password=xxx --mode=connected-users
  OK - 6 connected users | connected_users=6;50;80
  
  或
  这种方法绕过了配置文件(/usr/local/freetds/etc/freetds.conf)
  # ./check_mssql_health --hostname=192.168.16.157 -port=1433 --username=sa --password=xxx --mode=connected-users
  
5.      添加模板
  # 'check_mssql_health ' command definition
  define command{
  command_name    check_mssql_health
  command_line    $USER1$/check_mssql_health $ARG1$
  }
  
6.      添加服务
  define service {
  host_name               liy-juyuan2-win2003
  service_description   Check Sqlserver Users
  use                     generic-service
  check_command         check_mssql_health! --server=server_juyuan2 --username=sa --password=1234juyuan --mode=connected-users
  servicegroups         liy-windows-services
  contact_groups          liy-cg
  }
  
  
  
  
  
  
  
  
  
页: [1]
查看完整版本: Nagios在RHEL5.3上部署