设为首页 收藏本站
查看: 902|回复: 0

Nagios监控报警系统

[复制链接]

尚未签到

发表于 2019-1-15 13:50:41 | 显示全部楼层 |阅读模式
  Nagios监控报警系统
  一、Nagios的安装:
  1、安装前的准备工作 构建
  (1)解决安装Nagios的依赖关系:
  Nagios基本组件的运行依赖于httpd、gcc和gd。可以通过以下命令来检查nagios所依赖的rpm包是否已经完全安装:
  yum -y install httpd gcc glibc glibc-common *gd* php php-mysql mysql mysql-server
  (2)配置selinux
  如果您的系统开启了selinux服务,则默认系统将拒绝nagios web cgi程序的运行,所以我们应检查系统是否开启了selinux
  getenforce
  如果上面命令的结果显示开启了selinux服务,通过下面的命令暂时性的将其关闭:
  setenforce 0
  如果想在以后完全关闭selinux,可以通过编辑/etc/sysconfig/selinux文件,将其中的selinux后面的值“force”修改为“disable”即可。
  当然,我们可以通过以下方式将nagios的CGI程序运行于SELinux/targeted模式而不用关闭selinux:
  chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin
  chcon -R -t httpd_sys_content_t /usr/local/nagios/share
  但是为了实验能构成功我们还是关闭selinux
  (3)安装前需要的所有软件包:
  httpd-2.4.2.tar.gz
  nagios-3.3.1.tar.gz
  nagios-plugins-1.4.15.tar.gz
  ndoutils-1.4b9.tar.gz
  npc-2.0.4.tar.gz
  nrpe-2.12.tar.gz
  php-5.3.6.tar.gz
  rrdtool-1.4.7.tar.gz
  2、在当前主机上架设nagios的过程:
  (1)、添加nagios运行所需要的用户和组:
  groupadd nagcmd
  useradd -m nagios
  usermod -a -G nagcmd nagios
  把apache加入到nagcmd组,以便于在通过web Interface操作nagios时能够具有足够的权限:
  usermod -a -G nagcmd apache
  (2)、编译安装nagios:
  tar zxf nagios-3.2.3tar.gz
  cd nagios
  ./configure--with-command-group=nagcmd--enable-event-broke--prefix=/var/www/nagios
  make all    将所有的编译环境都进行编译
  make install
  make install-init      编译安装开机启动程序
  make install-config    编译安装配置文件
  make install-commandmode   编译安装其命令
  make install-webconf    编译安装web的配置文件,在httpd的配置文件目录(conf.d)中创建Nagios的Web程序配置文件,能够让我们使用web对其进行管理
  由此我们可以看出nagios的安装非常灵活,当我们需要哪个程序的时候可以有针对性的安装。
  创建一个登录nagios web程序的用户,这个用户帐号在以后通过web登录nagios认证时所用:
  htpasswd -c /var/www/nagios/etc/htpasswd.users nagiosadmin
  修改配置文件/etc/httpd/conf/httpd.conf,将httpd服务的默认网页路径改为:
  /var/www
  以上过程配置结束以后需要重新启动httpd:
  service httpd restart
  (3)、编译、安装nagios-plugins
  nagios的所有监控工作都是通过插件完成的,因此,在启动nagios之前还需要为其安装官方提供的插件。
  tar zxf nagios-plugins-1.4.13.tar.gz
  cd nagios-plugins-1.4.13
  (4)、configure编译过程:
  ./configure \
  --with-nagios-user=nagios \
  --with-nagios-group=nagios \
  --prefix=/var/www/nagios --with-mysql
  (5)、在编译完成之后我们要仔细查看编译的过程,看是否有跳过mysql的警告语句,具体显示内容如下:

  (6)、如果有,应首先确定mysql的库文件位置没有错,然后给编译的过程指定mysql库文件的位置,方法如下:
  cp /usr/lib/mysql到/usr/lib/pkgconfig
  ./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/var/www/nagios --with-mysql
  (7)、编译完成之后我们还要查看编译过程,是否再次出现了跳过mysql的警告语句,如果还是有就拿出我们的杀手锏,方法如下
  yum install mysql-devel -y  mysql的这个组件就是解决在编译时无法找到mysql的一些组件或是其他在编译中产生的怪异问题,这步正确完成之后,就进行如下的步骤:
  make
  make install   
  (8)、配置并启动Nagios
  把nagios添加为系统服务并将之加入到自动启动服务队列:
  chkconfig --add nagios
  chkconfig nagios on
  检查其主配置文件的语法是否正确:
  /var/www/nagios/bin/nagios -v /var/www/nagios/etc/nagios.cfg
  如果显示如下,则表示语法正确

  如果上面的语法检查没有问题,接下来就可以正式启动nagios服务了:
  service nagios start
  通过web界面查看nagios:
  http://192.168.7.168/nagios   这是主机的IP,根据自己主机的IP进行相应的修改
  如果成功的话将出现如下内容,进行身份认证,输入我们之前设定的web认证帐号和密码:

  如果一切顺利,成功登录后将显示如下部分画面

  到此为止,nagios的监控端已经配置完成,现在我们只能进行当前主机的状态监控,如图
  二、对被监控端的配置:
  被监控端的操作系统类型是很重要的,在开始的时候我们介绍了不同操作系统的被监控端应进行相应不同的的配置:
  如果被监控端是windows操作系统,我们采取如下配置:
  首先关闭windows上的防火墙
  1. 被监控端安装NSClient++-0.3.8-Win32.msi
  在安装过程中只需要填写nagios服务的主机地址,并查看任务管理器中的进行是否已经开启:如图

  2. 安装完成后修改配置文件NSC.ini把需要的库都打开,
  找到配置文件的方法:
  这个程序的配置文件默认为C:\Program Files\NSClient++下的NSC.ini文件
  打开这个文件进行如下修改:
  (1)、打开需要的库文件,将行的最前端带有“;”的,将这个符号删除即为打开。
  具体修改结果如下:
  [modules]
  NRPEListener.dll
  NSClientListener.dll
  NSCAAgent.dll
  CheckWMI.dll
  FileLogger.dll
  Checksystem.dll
  CheckEventLog.dll
  CheckHelpers.dll
  ;# NSCLIENT++ MODULES
  ;# A list with DLLs to load at startup.
  ;  You will need to enable some of these for NSClient++ to work.
  ; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
  ; *                                                               *
  ; * N O T I C E ! ! ! - Y O U   H A V E   T O   E D I T   T H I S *
  ; *                                                               *
  ; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
  FileLogger.dll
  CheckSystem.dll
  CheckDisk.dll
  NSClientListener.dll
  NRPEListener.dll
  SysTray.dll
  CheckEventLog.dll
  CheckHelpers.dll
  CheckWMI.dll
  (2)、配置nagios服务器的IP地址:
  修改结果如下:
  ;# ALLOWED HOST ADDRESSES
  allowed_hosts=192.168.0.8 保存配置文件即可
  3. 在监控服务器上修改nagios配置文件nagios.cfg
  为了配置的方便进行我们对nagios的主配置文件做一个连接
  ln -vs /var/www/nagios/etc/nagios.cfg /etc/nagios.cfg
  对配置文件/etc/nagios.cfg进行如下修改
  去掉cfg_file=/var/www/nagios/etc/objects/windows.cfg 的注释
  定义windows.cfg
  修改/var/www/nagios/etc/objects/windows.cfg文件,修改结果如下
  define host{
  use             windows-server  ; Inherit default values from a template
  host_name       winserver       ; The name we're giving to this host
  alias           My Windows Server   ; A longer name associated with the host
  address         192.168.0.254  ; windows主机的IP,我的为192.168.0.254
  }
  保存退出即可:
  重新启动nagios服务
  service nagios restart
  查看我们的nagios是否监控到了windows主机:
  如图显示则表示监控成功:

  一、下面就进入对其它linux主机实现nagios监控的配置
  三、在被监控端的linux主机上:
  1、先添加nagios用户来执行此服务   
   useradd nagios
  2、为了安装nrpe,先安装nagios-plugins-1.4.15.tar.gz 插件   
   tar zxf nagios-plugins-1.4.15.tar.gz  
   cd nagios-plugins-1.4.15   
   ./configure --with-nagios-user=nagios --with-nagios-group=nagios   
   make   
   make install
  3、编译安装nrpe-2.12.tar.gz   
   tar -zxvf nrpe-2.12.tar.gz   
   cd nrpe-2.12   
   (注:在执行下步之前必须保证这个主机上已经安装了openssl、openssl-devel 否则在编译的时候将提示有不能找到ssl头文件的错误,导致编译无法进行)   
    ./configure   
    make all   
    make install-plugin   
    make install-daemon   
    make install-daemon-config
  4、对nrpe的配置文件/usr/local/nagios/etc/nrpe.cfg进行配置   
    vim /usr/local/nagios/etc/nrpe.cfg   
    server_address=127.0.0.1  允许监控的IP
  5、检测配置文件的语法并启动服务   
   /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d   
   如果没有任何提示则表示语法正确并已经启动了该服务
  到此我们在被监控的linux主机上的配置已经完成
  四、Nagios服务端配置:
  1、安装NRPE   
   tar xvf nrpe-2.12.tar.gz   
   cd nrpe-2.12   
  (注:同样,在执行下步之前必须保证这个主机上已经安装了openssl-devel、openssl,否则编译将出错)   
   ./configure   
   make all   
   make install-plugin
  2、配置nagios的服务命令文件/var/www/nagios/etc/objects/commands.cfg定义外部构件nrpe   
   vim /var/www/nagios/etc/objects/commands.cfg   
  添加如下内容:   
  #check nrpe   
  define command{   
        command_name check_nrpe   
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$   
        }
  3、由于此服务的配置文件中被没有关于监控linux主机的配置文件,所以我们要自己定义并创建   
   在/etc/nagios.cfg中定义被监控的linux主机的配置文件的名字及位置   
   vim /etc/nagios.cfg   
   添加如下内容   
   cfg_file=/var/www/nagios/etc/objects/mylinux.cfg  指定我们定义的被监控linux主机的配置文件名字和位置
  然后我们就要到定义的位置创建这个文件了   
   vim /var/www/nagios/etc/objects/mylinux.cfg   
   添加如下内容   
   define host{   
           use             linux-server   
           host_name      mylinux   
           alias            mylinux   
           address        192.168.0.200(被监控的linux主机的IP,这个是我的)   
        }
  define service{   
        use                      generic-service   
         host_name             mylinux   
        service_description     check-swap   
         check_command        check_nrpe!check_swap   
               }
  define service{   
        use                      generic-service   
         host_name             mylinux   
         service_description     check-load   
         check_command         check_nrpe!check_load
  }
  define service{   
         use                      generic-service   
         host_name             mylinux   
         service_description     check-disk   
         check_command        check_nrpe!check_had1   
        }
  define service{   
        use                      generic-service   
        host_name             mylinux   
        service_description     check-users   
        check_command        check_nrpe!check_users   
               }
  define service{   
        use                    generic-service   
        host_name           mylinux   
        service_description  otal_procs   
        check_command     check_nrpe!check_total_procs   
               }  
    保存退出   
    修改这个文件的属主、属组   
    chown nagios:nagios mylinux.cfg   
    检查我们创建的文件是否有语法错误:   
    nagios -v /var/www/nagios/etc/objects/mylinux.cfg
  4、重启nagios服   
    service ngios restart   
   好了,关于监控linux主机的配置到此为止
  5、我们查看nagios是否监控到了mylinux,显示如图:

  好了,我们监控其他linux主机已经实现了,关于nagios对其它linux主机的监控配置到此为止
  五、Nagios监控MySQL服务及飞信报警
  上面我们进行了相关主机监控的配置,但是我们只能通过查看nagios才能知道我们所监控主机的服务是否在线可用,这和我们在实际应用中的作用还有一定的差距,下面我们就来实现nagios的报警机制,即使我们不查看nagios,只要我们所监控的服务掉线了,nagios就给我们发飞信开提示我们。
  我们通过监控本机的mysql服务的在线情况来实现这个实验:
  nagios监控mysql服务器:
  1、 建立专用数据库:
  我们通过让nagios监控mysql服务中的一个特定的数据库的在线状态来实现对mysql服务在线状态的监控,
  创建这个数据库,并对其进行相应的配置   
mysql  
mysql> create database nagios;  
mysql> grant select on nagios.* to nagios@'%' identified by 'nagios';  
mysql> flush privileges;
  2、查看/var/www/nagios/libexec/check_mysql 这个二进制文件是否存在,如果存在就   
继续下面的操作,如果不存在就重新编译安装nagios-plugins,具体方法在上一篇有关nagios的文章中,编译时一定要指明--with-mysql.
  对check-mysql这个二进制文件进行测试,看是否能够读取数据库状态信息   
   /var/www/nagios/libexec/check_mysql -H 10.1.1.30 -u nagios -d nagios -p 123qweasd
  Uptime: 970348  Threads: 1  Questions: 684584  Slow queries: 3  Opens: 672  Flush tables: 1  Open tables: 369  Queries per second avg: 0.705
  如果输出上面的信息,则表示能够读取nagios这个数据库的状态
  3、在定义监控命令的文件/var/www/nagios/etc/objects/command.cfg里增加插件命令:   
   vim  /var/www/nagios/etc/objects/command.cfg   
   添加如下内容:   
   #check mysql  
define command{  
command_name check_mysql  
command_line $USER1$/check_mysql -H $HOSTADDRESS$ -u nagios -d nagios -p nagios   
}
  4、定义服务:
  在/var/www/nagios/etc/objects/localhost.cfg 中添加如下内容  
define service {  
        use                             local-service   
        host_name                       localhost   
        service_description             msyql   
        check_command                   check_mysql  监控这个服务的命令   
        notifications_enabled           1                对这个服务开启监控   
        }
  OK,我们可以到nagios的“servers”中查看是否监控到了这个服务,显示如下:

  既然当服务掉线的时候要使用飞信报警,接下来就对飞信进行配置,来实现飞信报警机制
  准备飞信的客户端和库文件:   
     fetion  libACE-5.7.2.so  libACE_SSL-5.7.2.so  libcrypto.so.4  libssl.so.4
  1、将飞信的客户端加入到/usr/bin/中,并添加执行权限   
   mv fetion /usr/bin   
   chmod +x /usr/bin/fetion
  2、将飞信的库文件加入到系统的库文件中   
   mv lib* /usr/lib/
  3、测试飞信能否成功发送信息:
  fetion --mobile 15003880800 --pwd 123qweQWE(飞信密码) --to 15003880800(电话号码) --msg-tpye=0  --msg-utf8 $HOSTNAME
  如果出现一大片的乱码信息,表示飞信连接成功,这一大片的乱码是飞信的验证码图片,这个验证码图片在图形界面下才能显示出来,只有第一次使用的时候才会用到验证码,这个图片的位置在/usr/bin下,我们输入相应的验证码即可。
  测试成功之后,就继续进行
  4、修改nagios的报警配置文件/var/www/nagios/etc/objects/ templates.cfg,修改报警机制,将email改成fetion   
   vim /var/www/nagios/etc/objects/templates.cfg 修改结果如下
  define contact{   
   name              generic-contact    ; The name of thiscontact template   
  service_notification_period  24x7 ; service notifications can be sent anytime   
   host_notification_period    24x7   ; host notifications can be sent anytime   
   service_notification_options    w,u,c,r,f,s             ; send notifications for all service states, flapping events, and scheduled downtime events   
   host_notification_options       d,u,r,f,s               ; send notifications for all host states, flapping events, and scheduled downtime events   
   service_notification_commands   notify-service-by-fetion; send service notifications via email   
host_notification_commands  notify-service-by-fetion; send host notifications via email
  register  0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLA   
        }
  5、修改命令文件/var/www/nagios/etc/objects/commands.cfg  
   vim /var/www/nagios/etc/objects/commands.cfg 添加如下内容   
define command{   
       command_name  notify-service-by-fetion   
       command_line      /usr/bin/fetion --mobile 15003880800 --pwd 123qweQWE --to 15003880800 --msg-tpye=0  --msg-utf8 $HOSTNAME   
}
  6、重启nagios服务   
   service nagios restart
  到此为止我们我们对mysql服务的飞信报警,已经配置完成了,现在我们可以关闭mysql服务,看你是否收到了我们的nagios发送的飞信。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-663650-1-1.html 上篇帖子: centos 5.4 x64 安装nagios 3.2.3 下篇帖子: nagios plugins for check remote port status
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表