tilg 发表于 2015-11-23 08:14:00

监控机为Linux主机的nagios安装与配置之利用snmp方式监控远程主机上的“本地信息”

  一、前提条件
  1   监控机:Linux一台
  2   被监控机器:Linux几百台,且远程主机snmp服务已开启。
  3   所需软件:
  lNagios-cn-3.2.3.tar.gz
  lNagios-plugins-2.0.3.tar.gz
  lNagios-snmp-plugins.1.1.1.tar.gz
  lCrypt-DES-2.07.tar.gz
  lDigest-HMAC-1.03.tar.gz
  lDigest-MD5-2.53.tar.gz
  lDigest-SHA1-2.13.tar.gz
  lNet-SNMP-v6.0.1.tar.gz
  下载见我的资源共享

  二、主要步骤
  1   安装nagios-cn-3.2.3.tar.gz
  2   安装nagios插件nagios-plugins-2.0.3.tar.gz
  3   安装与配置Apache和php
  4   配置nagios
  5   启动nagios
  6   查看初步配置情况,如本机的相关信息。
  7   监控远程Linux主机上的“本地信息”
  可采取两种方式
  l利用nrpe组件监控远程Linux主机上的“本地信息”
  l利用SNMP方式监控远程Linux主机上的“本地信息”
  比较:
  利用nrpe组件,需要在监控端和被监控端都安装部分插件。
  利用snmp方式,只需要在监控端和被监控端都开启snmp服务,修改些配置文件即可。
  下面具体介绍采用snmp方式监控。
  三、利用snmp方式监控远程主机上的“本地信息”
  1   假设上面二中的1-6均已成功,即监控机能查看基本的服务。
  2   snmp服务的安装与配置
  2.1.安装snmp服务
  yum -y install net-snmp*
  
  2.2.启动snmp服务
  service snmpd start
  
  2.3. 验证snmp服务
  使用snmpwalk命令,查看本机localhost的主机名:
  snmpwalk -c public –v 2clocalhost sysName.0
  
  2.4. 配置snmp服务
  修改监控机器和被监控机器的etc/snmp/snmpd.conf文件。如下是该配置文件的3个片段,修改部分在行尾注释了。   
  vi snmpd.conf
  ####
  # First, map the community name"public" into a "security name"
  
  sec.namesource          community
  com2sec notConfigUser default   public//共同体名字可修改为自己需要的字符串
  
  ####
  # Finally, grant the group read-only accessto the systemview view.
  
  group          context sec.modelsec.level prefix read   writenotif
  access notConfigGroup ""   any       noauth    exact mib2none none//修改为mib2
  access notConfigGroup ""   any       noauth    exact allnone none//添加此行
  
  ##          incl/excl subtree                        mask
  view all   included.1                               80//此行前面的#去掉
  
  ## -or just the mib2 tree-
  
  view mib2included .iso.org.dod.internet.mgmt.mib-2 fc//此行前面的#去掉
  
  然后保存修改,重启snmp服务
  service   snmpdrestart
  
  3   安装Nagios-snmp-plugins
  3.1首先安装以下模块
  Crypt-DES-2.07.tar.gz、Digest-HMAC-1.03.tar.gz、Digest-MD5-2.53.tar.gz、Digest-SHA1-2.13.tar.gz
  
  3.2然后安装Net-SNMP-v6.0.1.tar.gz
  安装方法:    tar –zxvf xxx.tar.gz
  cd xxx
  perl Makefile.pl
  make test
  make install
  
  3.3最后安装nagios-snmp-plugins.tar.gz
  安装方法:    tar–zxvf nagios-snmp-plugins.tar.gz
  cdnagios_plugins 可以看到很多可用的插件
  
  4   将需要的插件复制放到/usr/local/nagios/libexec目录下,并修改属主和添加文件的权限
  cd/usr/local/nagios/libexec
  chownnagios.nagios ./check_snmp_*
  chmod777 ./check_snmp_*
  
  5   Nagios分组显示监控服务。
  由于主机过多,需要分组查看,因此分成了多个文件,每个文件中只包含若干个主机组和它包含的主机。


  5.1修改commands.cfg。在文件尾部添加命令如下:
  ################################################SNMP
  #'check_snmp_load'
  define command{
  command_name    check_snmp_load
  command_line   $USER1$/check_snmp_load.pl -H $HOSTADDRESS$ -C $ARG1$ -p $ARG2$ -w$ARG3$ -c $ARG4$
  }
  
  #'check_snmp_int'
  define command{
  command_name    check_snmp_int
  command_line   $USER1$/check_snmp_int.pl-H$HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -f -kB -Y -w $ARG3$,$ARG4$ -c $ARG5$,
  $ARG6$ -d $ARG7$
  }
  #'check_traffic2'
  define command{
  command_name    check_traffic2
  command_line   $USER1$/check_traffic2.sh-V 2c-C public-H $HOSTADDRESS$ -I $ARG1$-w $ARG2$ -c $ARG3$ -K -b
  }
  #'check_snmp_storage'
  define command{
  command_name    check_snmp_storage
  command_line   $USER1$/check_snmp_storage.pl   -H$HOSTADDRESS$ -C $ARG1$ -m $ARG2$ -w $ARG3$ -c $ARG4$ -S 0
  }
  
  #'check_snmp_proc'
  define command{
  command_name    check_snmp_proc
  command_line   $USER1$/check_snmp_process.pl   -H$HOSTADDRESS$-C $ARG1$ -n $ARG2$ -m$ARG3$ -u $ARG4$ -t $ARG5$
  }
  
  5.2定义并配置主机监控文件,如下为hosts住房-活体.cfg
  define host{
  use             linux-server
  host_name       住房-活体-济南/长春
  alias         16.198.64.4
  address         16.198.64.4
  }
  ......
  define host{
  use             linux-server
  host_name       住房-活体-秦皇岛
  alias          16.198.64.14
  address         16.198.64.14
  }
  #定义主机组
  define hostgroup{
  hostgroup_name住房-活体
  alias         住房-活体
  members         住房-活体-济南/长春, 住房-活体-青岛/大连, 住房-活体-石家庄/天津,住房-活体-沈阳/乌鲁木齐,住房-活体-呼>和浩特/哈尔滨, 住房-活体-合肥/银川, 住房-活体-西宁/深圳, 住房-活体-郑州/西安 , 住房-活体-兰州/太原, 住房-活体-北京, 住房-活体
  -秦皇岛
  }
  如此类推,定义所有的主机文件。
  
  5.3    定义每个主机需要监控的服务和主机资源services.cfg,如下
  define service{
  use                  local-service
  host_name               *
  service_description   Ping
  check_command          check-host-alive
  }
  define service{
  use                  local-service
  host_name               *
  service_description   检查cpu负载
  check_command          check_snmp_load!public!161!80!90
  }
  
  define service{
  host_name               *
  service_description   网卡监控-eth0
  check_command          check_snmp_int!public!eth0!4000!4000!5000!5000!60
  max_check_attempts       5
  normal_check_interval   1
  retry_check_interval    2
  check_period            24x7
  notification_interval   10
  notification_options    w,u,c,r
  process_perf_data       1
  }
  
  define service{
  host_name               *
  service_description   网卡监控-eth1
  check_command          check_snmp_int!public!eth1!4000!4000!5000!5000!60
  max_check_attempts       5
  normal_check_interval   1
  retry_check_interval    2
  check_period            24x7
  notification_interval   10
  notification_options    w,u,c,r
  process_perf_data       1
  
  }
  define service{
  use                  local-service
  host_name               *
  service_description   网卡流量监控-eth0
  check_command          check_traffic2!2!200,300!400,500
  }
  define service{
  use                     local-service
  host_name               *
  service_description   网卡流量监控-eth1
  check_command          check_traffic2!3!200,300!400,500
  }
  
  define service{
  use                  local-service
  host_name               *
  service_description   磁盘监控 /
  check_command          check_snmp_storage!public!"/"!92%!96%
  is_volatile             0
  check_period            24x7
  max_check_attempts      30
  normal_check_interval   1
  retry_check_interval    1
  notification_interval   10
  notification_options    w,u,c,r
  process_perf_data       1
  }

  
  define service{

  use                  local-service
  host_name               *
  service_description   检查虚拟内存使用率
  check_command          check_snmp_storage!public!"Virtual Memory"!70!90
  is_volatile             0
  check_period            24x7
  max_check_attempts      30
  normal_check_interval   1
  retry_check_interval    1
  notification_interval   10
  notification_options    w,u,c,r
  process_perf_data       1
  }
  define service{

  use                  local-service
  host_name               *
  service_description   检查物理内存使用率
  check_command          check_snmp_storage!public!"Real Memory"!70!90
  is_volatile             0
  check_period            24x7
  max_check_attempts      30
  normal_check_interval   1
  retry_check_interval    1
  notification_interval   10
  notification_options    w,u,c,r
  process_perf_data       1
  }
  define service{
  
  use                  local-service
  host_name               *
  service_description   磁盘监控 /boot
  check_command          check_snmp_storage!public!"/boot"!92%!96%
  is_volatile             0
  check_period            24x7
  max_check_attempts      30
  normal_check_interval   1
  retry_check_interval    1
  notification_interval   10
  notification_options    w,u,c,r
  process_perf_data       1
  
  }
  define service{

  use                  local-service
  host_name               *
  service_description   磁盘监控 /data
  check_command          check_snmp_storage!public!"/data"!92%!96%
  is_volatile             0
  check_period            24x7
  max_check_attempts      30
  normal_check_interval   1
  retry_check_interval    1
  notification_interval   10
  notification_options    w,u,c,r
  process_perf_data       1

  }
  define service{
  use                  local-service
  host_name               *
  service_description   进程 mysqld
  check_command          check_snmp_proc!public!mysqld!200,300!90,99!10
  }
  define service{
  use                  local-service
  host_name               *
  service_description   进程mysqld_safe
  check_command          check_snmp_proc!public!mysqld_safe!200,300!90,99!10
  }
  define service{
  use                  local-service
  host_name               *
  service_description   进程 postgres
  check_command          check_snmp_proc!public!postgres!200,300!90,99!10
  }
  

  5.4最后,需要修改nagios.cfg,添加各个文件的路径定义。
  # You can specify individual object configfiles as shown below:
  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/hosts住房-容灾.cfg
  cfg_file=/usr/local/nagios/etc/objects/hosts住房-平台.cfg
  cfg_file=/usr/local/nagios/etc/objects/services.cfg

  
  5.5重启nagios服务,即可登录web,查看相关服务的情况,如下图所示。


  
  
  
图nagios服务
页: [1]
查看完整版本: 监控机为Linux主机的nagios安装与配置之利用snmp方式监控远程主机上的“本地信息”