fox111 发表于 2019-1-10 09:49:32

nagios监控系统解决方案及与cacti监控的整合

      Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
        可以监视系统运行状态和网络信息的监视系统,能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等;可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等。


cacti默认是以邮件发送警告信息的,虽然可以安装插件以实现其他方式进行告警,但不是他的强项,而nagios有着强大的报警机制
http://s3.运维网.com/wyfs02/M02/2B/C7/wKioL1OLLj7zNMHhAAG7T00x0KE389.jpg
  

NSCA是可以实现Nagios被动监测的一个程序。
被动监测,就是指由被监测的服务器主动上传数据到Nagios监控系统中。这种监测方式提高了实时性(出现问题的时候,被监测的服务器可以及时上传数据通知Nagios,从而使管理员可以尽快作出处理,而不用像主动监测中一样,非要等到下一个监测周期才能获知被监测服务器的状态)。


  NDOUtils是一个可以把nagios的获取的数据信息保存到MySQL数据库里的外部构件。
http://s3.运维网.com/wyfs02/M00/2B/C7/wKiom1OLLsaC4G4HAABs0RnPCzA854.jpg


  系统:RHEL6
  package:
  nagios-cn-3.2.3.tar.bz2
  nagios-plugins-1.4.16.tar.gz
  gd-devel-2.0.35-11.el6.x86_64.rpm
  

  

  tar jxf nagios-cn-3.2.3.tar.bz2
  cd nagios-cn-3.2.3
  ./configure         //默认安装在/usr/local/nagios根据提示信息,可能需要添加参数和依赖包,--enable-embedded-perl
  

  rhel6.4包中没有gd-devel包,需要下载使用yumlocalinstall安装
  yum install perl-ExtUtils-Embed
  

  make all
  make install
  make install-init
  make install-commandmode
  make install-config
  make install-webconf
  

  useraddnagios
  usermod -G nagios apache
  

  tar zxf nagios-plugins-1.4.16.tar.gz
  cd nagios-plugins-1.4.16
  ./configure --enable-extra-opts --enable-perl-modules--enable-libtap
  make
  make install
  

  chown -R nagios.nagios /usr/local/nagios/libexec/*      //设置权限
  cd /usr/local/nagios/etc/objects
  cp -p localhost.cfg hosts.cfg
  cp -p localhost.cfg services.cfg
  

  vi /usr/local/nagios/etc/nagios.cfg
  cfg_file=/usr/local/nagios/etc/objects/hosts.cfg         //添加两行
  cfg_file=/usr/local/nagios/etc/objects/services.cfg
  #cfg_file=/usr/local/nagios/etc/objects/localhost.cfg      //注释此行
  

  vi hosts.cfg          //如下格式添加host主机
  define host{
  use                     linux-server
  host_name               ty1.org
  address               192.168.1.2
  alias                   Manager
  icon_image            server.gif
  statusmap_image         server.gd2
  2d_coords               500,200
  3d_coords               500,200,100
  }
  

  define hostgroup{
  hostgroup_namelinux-servers ; The name of the hostgroup
  alias         Linux Servers ; Long name of the group
  members         *   ;
  }
  

  

  vi services.cfg   //配置service,只留下defineservicegroup和define service选项
  

  define servicegroup{         服务组并不是必须的,这是配合nagios 的监控页面的显示
  servicegroup_name 系统负荷检查   
  alias 负荷检查
  membersty1.org,进程总数,ty1.org,登录用户数,ty1.org,根分区,ty1.org,交换空间利用率
  }
  define service{
  use                           local-service
  host_name                     *
  service_description             PING
  check_command                  check_ping!100.0,20%!500.0,60%
  }
  

  define service{
  use                           local-service
  host_name                     ty1.org
  service_description             根分区
  check_command                   check_local_disk!20%!10%!/
  }
  define service{
  use                           local-service
  host_name                     ty1.org
  service_description             登录用户数
  check_command                   check_local_users!20!50
  }
  

  define service{
  use                           local-service
  host_name                     ty1.org
  service_description             进程总数
  check_command                  check_local_procs!250!400!RSZDT
  }
  

  define service{
  use                           local-service
  host_name                     ty1.org
  service_description             系统负荷
  check_command                  check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
  }
  

  define service{
  use                           local-service
  host_name                     ty1.org
  service_description             交换空间利用率
  check_command                   check_local_swap!20!10
  }
  

  /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg//校验nagios配置文件正确性
  

  htpasswd -m /usr/local/nagios/etc/htpasswd.users nagiosadmin //设置登录nagios的用户(nagiosadmin由自己定义)及密码
  /etc/init.d/nagios start
  /etc/init.d/httpd restart
  

  

  

  --------------------------------------------
  

  nagios主机A远程监控B主机mysql
  B:yum install mysql-server
  >create database nagdb;
  >grant select on nagdb.* to nagios@'ipA'
  

  A:
  #cd /usr/local/nagios/libexec
  #./check_mysql -H 192.168.0.7 -u nagios -d nagdb    //如下显示则监控成功
  Uptime: 10070Threads: 1Questions: 25Slow queries: 0Opens:15Flush tables: 1Open tables: 8Queries per second avg: 0.2
  

  使nagios给QQ邮箱推送报警邮件
  #cd /nagios/etc/objects
  

  #vi commands.cfg                     //添加check_mysql自动检测命令
  # 'check_mysql' command definition
  define command{
  command_name    check_mysql
  command_line    $USER1$/check_mysql -H $HOSTADDRESS$ -u$ARG1$ -d $ARG2$
  }
  

  $USER1$ 代表/nagios/libexec目录
  

  #vi hosts.cfg                  //将以下B信息加入hosts.cfg
  define host{
  use                     linux-server
  host_name               desktop7.example.com       //B主机名
  alias                   Mysql
  address               192.168.0.7               //Bip
  icon_image            server.gif
  statusmap_image         server.gd2
  2d_coords               500,200
  3d_coords               500,200,100
  }
  

  #vi services.cfg                //加入B主机service信息
  define service{
  use                        local-service
  host_name                  desktop7.example.com
  service_description          MYSQL
  check_command                check_mysql!nagios!nagdb//!后边分别为commands.cfg中command_line中-H-d 后的变量
  notifications_enabled      1            //是否开启提醒功能,1为开启
  }
  

  #/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg//检测语法错误
  

  #vi contacts.cfg         //设置接受警报邮件的用户,多个用户用逗号分割
  define contact{
  email                           849186008@qq.com
  }
  

  在QQ邮箱里将发送的账户(nagios@server97.example.com)加入白名单
  B主机mysql服务器出现问题(nagios会先检测四次,才会sendmail),就会给邮箱发邮件报警
  

  --------------------------------------------------------------
  

  NAGIOS_NRPE 实现远端主机监控
  使用nrpe(5666)实现对remotehost基本服务(memory、CPU、loginusers等)的监控:
  配置步骤可以通过解压nrpe包在docs里有个nrpe.pdf
  

  1、Remote Host Setup:
  

  #tar xzf nagios-plugins-1.4.6.tar.gz
  #cd nagios-plugins-1.4.6
  #./configure   //编译完会显示模块情况,需要的安装完后重新执行./configure
  #make && make install
  #useradd nagios
  #chown -R nagios.nagios /usr/local/nagios/
  #yum install xinetd -y
  

  #tar zxf nrpe-2.15.tar.gz
  #cd nrpe-2.15
  #./configure
  #make all
  #make install-plugin
  #make install-daemon
  #make install-daemon-config
  #make install-xinetd
  

  #vi /etc/services
  nrpe5666/tcp         //添加此行
  

  #vi /etc/xinetd.d/nrpe
  service nrpe
  {
  flags         = REUSE
  socket_type   = stream
  port            = 5666
  wait            = no
  user            = nagios
  group         = nagios
  server          = /usr/local/nagios/bin/nrpe
  server_args   = -c /usr/local/nagios/etc/nrpe.cfg--inetd
  log_on_failure+= USERID
  disable         = no
  only_from= 127.0.0.1 192.168.1.3//添加monitor主监控ip,此处的优先级(会覆盖)大于/usr/local/nagios/etc/nrpe.cfg中的
  }
  

  #/etc/init.d/xinetd start
  #/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
  NRPE v2.15                   //检测nrpe_plugin安装是否OK
  此处可能报错:
  # /usr/local/nagios/libexec/check_nrpe -H127.0.0.1
  CHECK_NRPE: Error - Could not complete SSL handshake.
  则注意查看是否将/etc/xinetd.d/nrpe中only_from后边的127.0.0.1丢掉了,记得加上
  

  

  #vi /usr/local/nagios/etc/nrpe.cfg   //customize nrpe commands
  command=/usr/local/nagios/libexec/check_disk -w 20%-c 10% -p /
  //习惯指定磁盘检测命令为这样,其他的不变,此处根据自己而设定,可以不变,只检测根目录
  

  2、Monitoring Host Setup:
  

  #tar xzf nrpe-2.8.tar.gz
  #cd nrpe-2.8
  #./configure
  #make all
  #make install-plugin
  #/usr/local/nagios/libexec/check_nrpe -H 192.168.1.100 -ccheck_disk
  //-H指定remote主机,-c指定命令,不加-c显示nrpe版本信息
  

  3、现在用命令已经可以检测远程主机系统信息,接下来配置nrpe命令,以便nagios能够自动调用nrpe命令以web页面显示监控信息
  

  #vi commands.cfg
  define command{
  command_name    check_nrpe
  command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c$ARG1$
  }
  

  #vi services.cfg             //加入想要监控的serivce
  define service{
  use                           local-service
  host_name                     ty.org
  service_description             根分区
  check_command                   check_nrpe!check_disk
  }
  

  define service{
  use                           local-service
  host_name                     ty.org
  service_description             登录用户数
  check_command                   check_nrpe!check_users
  

  define servicegroup{      //可以将remote主机被监控的service加入服务组,只需将其host_name和service_description添加在members后边即可
  servicegroup_name 系统负荷检查
  alias 负荷检查
  membersty2.org,进程总数,ty2.org,登录用户数,ty2.org,根分区,ty2.org,交换空间利用率,ty.org,进程总数,ty.org,登录用户数,ty.org,根分区,ty.org,交换空间利用率
  }
  

  /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg          //检测配置文件语法
  /etc/init.d/nagios reload
  

  --------------------------------------------------------------
  

  配置飞信机器人
  需要包:fetionlinuxso_20101113.tar.gz
  mv fetion /usr/local/nagios/libexec/
  tar zxf linuxso_20101113.tar.gz -C /usr/lib          //32位的包放在lib中,64位的包放在lib64中
  chmod +x /usr/lib/lib*
  ldconfig /usr/lib
  

  cd /usr/local/nagios/libexec/
  chown nagios.nagios fetion
  chmod +x fetion
  ./fetion          //执行fetion命令,报错需要装依赖包,根据提示安装
  ./fetion --mobile=****** --pwd=****** --to=******--msg-utf8="haha"      //测试fetion是否能成功发送信息
  第一次要求输入验证码,在/usr/local/nagios/libexec中
  

  

  将fetion添加到配置文件,实现自动发送飞信
  vi /libexec/fetion.sh
  /usr/local/nagios/libexec/fetion --mobile=*** --pwd=***--to="$1" --msg-utf8="$2"
  

  chmod +x fetion.sh
  /usr/local/nagios/libexec/fetion.sh 18291449704 "asd"               //手动测试fetion.sh
  

  cd etc/objects/
  

  vi templates.cfg      //添加此逗号后面用fetion的模板
  service_notification_commandsnotify-service-by-email,notify-service-by-fetion
  host_notification_commands   notify-host-by-email,notify-service-by-fetion
  

  vi commands.cfg         //添加以下两个command
  define command{
  command_name    notify-host-by-fetion
  command_line    $USER1$/fetion.sh $CONTACTPAGER$"$NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$"
  }
  

  define command{
  command_name    notify-service-by-fetion
  command_line    $USER1$/fetion.sh $CONTACTPAGER"$NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is$SERVICESTATE$"
  }
  vi contacts.cfg
  define contact{
  pager                           182***                   //添加fetion消息接受号码
  }
  

  //测试配置文件语法
  /etc/init.d/nagios restart
  


  nagios+cacti整合
  需要的包:
  ndoutils-1.5.2.tar.gz
  npc-2.0.4.tar.gz
  add.sql
  

  #tar zxf npc-2.0.4.tar.gz -C /var/www/html/cacti/plugins
  进入cacti的web界面安装npc插件
  Settings->npc编辑npc,给RemoteCommands打勾,
  路径/usr/local/nagios/var/rw/nagios.cmd
  nagios URL:http://192.168.0.197/nagios
  

  INSTALL ndoutils
  tar zxf ndoutils-1.5.2.tar.gz
  cd ndoutils-1.5.2          //看以参考README安装
  

  cp src/ndomod-3x.o /usr/local/nagios/bin/ndomod.o
  chown nagios.nagios /usr/local/nagios/bin/ndomod.o
  cp config/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg
  chown nagios.nagios /usr/local/nagios/etc/ndomod.cfg
  chmod 664 /usr/local/nagios/etc/ndomod.cfg
  

  cp src/ndo2db-3x /usr/local/nagios/bin/ndo2db
  chown nagios.nagios /usr/local/nagios/bin/ndo2db
  cp config/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg
  chown nagios.nagios /usr/local/nagios/etc/ndo2ddb.cfg
  chmod 664 /usr/local/nagios/etc/ndo2db.cfg
  

  vi ndomod.cfg
  output_type=tcpsocket
  #output_type=unixsocket
  output=127.0.0.1
  #output=/usr/local/nagios/var/ndo.sock
  

  vi ndo2db.cfg                         //ndo2db默认端口5668
  #socket_type=unix
  socket_type=tcp
  #socket_name=/usr/local/nagios/var/ndo.sock   //选用tcp,注释掉uninx的
  db_name=cacti
  db_prefix=npc_            //下滑线不能少
  db_user=cacti
  db_pass=cacti
  

  /usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg //启动ndoutils
  mysql -ucacti -pcacti cacti < add.sql
  

  




页: [1]
查看完整版本: nagios监控系统解决方案及与cacti监控的整合