Nagios监控Mysql及远程主机

    Nagios是一款Linux上成熟的监视系统运行状态和网络信息的开原IT基础设施监视系统,Nagios能监视所指定的本地或远程主机及服务,例如HTTP服务、FTP服务等,同时提供异常通知、事件处理等功能,当主机或服务出现故障时,Nagios还可以通过邮件、手机短信等形式在第一时间进行通知。Nagios可运行在Linux和Unix平台上,同时提供一个可选的基于浏览器的Web界面,方便系统管理员查看系统的运行状态、网络状态、各种系统问题及日志异常等。
环境: 192.168.0.201      mysql主机      rhel6.4
             192.186.0.202      nagios主机    rhel6.4
安装相关软件包
    yum install httpd gcc make perl-ExtUtils-Embed.x86_64 -y
    yum localinstall gd-devel-2.0.35-11.el6.x86_64.rpm   -y
安装nagios
  1. useradd nagios
  2. usermod -G nagios apache
  3. #编译所需软件包
  4. #运行 nagios 服务的用户
  5. #使 apache 用户对 nagios 目录具有写权限,不然 web 页面操作失败
  6. tar jxf nagios-cn-3.2.3.tar.bz2
  7. #nagios 软件安装
  8. cd nagios-cn-3.2.3
  9. ./configure –enable-embedded-perl
  10. make all           //根据提示完成安装
  11. make install
  12. make install-init
  13. make install-commandmode
  14. make install-config
  15. make install-webconf     //在apache下通过这条命令可以快速整合
安装nagios-plugins
  1. yum install mysql-devel openssl-devel -y
  2. tar zxf nagios-plugins-1.4.15.tar.gz
  3. cd nagios-plugins-1.4.15
  4. ./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-extra-opts --enable-libtap --enable-perl-modules
  5. make
  6. make install
配置nagios
  1. vi /usr/local/nagios/etc/nagios.cfg
  2.      #cfg_file=/usr/local/nagios/etc/objects/localhost.cfg  #注释掉localhost.cfg文件
  3.      cfg_file=/usr/local/nagios/etc/objects/services.cfg    #新建 services.cfg 文件,存放服务与服务组定义
  4.      cfg_file=/usr/local/nagios/etc/objects/hosts.cfg      #新建 hosts.cfg 文件,存放主机与主机组定义
配置hosts.cfg
  1. vi /usr/local/nagios/etc/objects/hosts.cfg
  2. define host{                                          //主机的管理
  3. use linux-server                                    //使用默认的主机规则
  4. host_name vm2.example.com                //主机名
  5. alias Nagios vm2                                    //主机别名
  6. address 127.0.0.1                                  //主机ip地址
  7. icon_image switch.gif                            //图标
  8. statusmap_image switch.gd2                   
  9. 2d_coords 100,200                                //2D图像坐标
  10. 3d_coords 100,200,100                          //3D图像坐标
  11. }
  12. define hostgroup{                                //主机组的管理
  13. hostgroup_name linux-servers               //主机组名字
  14. alias Linux Servers                                //别名
  15. members *                                           //*代表上面所有主机
  16. }
配置services.cfg
  1. define servicegroup{
  2. servicegroup_name  系统负荷检查
  3. alias 负荷检查
  4. members vm2.example.com,进程总数,vm2.example.com,登录用户数,vm2.example.com,根分区,vm2.example.com,交换空间利用率
  5. }
  6. define service{
  7. use local-service ; Name of service template to use
  8. host_name *
  9. service_description PING    //表示监控ping服务
  10. check_command check_ping!100.0,20%!500.0,60%
  11. }
  12. define service{
  13. use local-service ; Name of service template to use
  14. host_name vm2.example.com
  15. service_description 根分区
  16. check_command check_local_disk!20%!10%!/
  17. }
  18. define service{
  19. use local-service ; Name of service template to use
  20. host_name vm2.example.com
  21. service_description 登录用户数
  22. check_command check_local_users!20!50
  23. }
  24. define service{
  25. use local-service ; Name of service template to use
  26. host_name vm2.example.com
  27. service_description 进程总数
  28. check_command check_local_procs!250!400!RSZDT
  29. }
  30. define service{
  31. use local-service ; Name of service template to use
  32. host_name vm2.example.com
  33. service_description 系统负荷
  34. check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
  35. }
  36. define service{
  37. use local-service ; Name of service template to use
  38. host_name vm2.example.com
  39. service_description 交换空间利用率
  40. check_command check_local_swap!20!10
  41. }
  42. define service{
  43. use local-service ; Name of service template to use
  44. host_name vm2.example.com
  45. service_description SSH
  46. check_command check_tcp!22!1.0!10.0
  47. notifications_enabled 1 //这里表示进行通知
  48. }
  49. define service{
  50. use local-service ; Name of service template to use
  51. host_name vm2.example.com
  52. service_description HTTP
  53. check_command check_http
  54. notifications_enabled 1
  55. }
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg       校验 nagios 配置文件的正确性
如果没有error的话,开启服务
/etc/init.d/nagios  start
/etc/init.d/httpd     start
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin     nagios 监控页面访问用户和密码
打开浏览器,输入帐号密码


过一会儿,你就可以看到主机状况了

OK,现在我们来监控Mysql主机  192.168.0.201
在Mysql主机上进行操作
  1. mysql> create database nagdb;
  2. mysql> grant select on nagdb.* to nagdb@‘192.168.0.202‘;
  3. mysql> flush privileges;
在Nagios主机上检测是否能连接到Mysql主机上的mysql服务
[root@vm2 ~]# /usr/local/nagios/libexec/check_mysql -H 192.168.0.201 -u nagdb -d nagdb
Uptime: 19056  Threads: 12  Questions: 102960  Slow queries: 0  Opens: 317  Flush tables: 1  Open tables: 63  Queries per second avg: 5.403
更改配置文件hosts.cfg  services.cfg  commands.cfg增加对Mysql主机的监控
  1. vi /usr/local/nagios/etc/objects/hosts.cfg   添加下面内容
  2. define host{
  3. use                       linux-server
  4. host_name            mysql主机    
  5. alias                      mysql服务器
  6. address                 192.168.0.201
  7. icon_image            server.gif
  8. statusmap_image   server.gd2
  9. 2d_coords            500,200
  10. 3d_coords            500,200,100
  11. }
  1. vi /usr/local/nagios/etc/objects/services.cfg 添加以下内容
  2. define service{
  3. use                          local-service
  4. host_name               mysql主机
  5. servce_groups          mysql服务组
  6. service_description    mysql服务
  7. check_command        check_mysql
  8. }
  9. define servicegroup{
  10. servicegroup_name    mysql服务组
  11. alias                          mysql服务器
  12. }
  1. vi /usr/local/nagios/etc/objects/commands.cfg 添加下面内容
  2. define command{
  3. command_name check_mysql
  4. command_line $USER1$/check_mysql -H $HOSTADDRESS$ -u nagdb -d nagdb
  5. }
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg        检测配置文件
service nagios reload       reload服务
截取的监控图

利用NRPE和Nagios-plugin监控远程主机:

NRPE是Nagios的一个功能扩展,它可以在远程Linux和Unix主机上执行插件程序。通过在远程服务器上安装NRPE构件及Nagios插件程序来向Nagios监控主机提供该服务器的一些本地情况,例如,CPU负载、内存使用、磁盘使用等。
远程主机配置
  1. useradd nagios
  2. tar -xzf nagios-plugins-1.4.15.tar.gz
  3. cd nagios-plugins-1.4.15
  4. ./configure  --with-nagios-user=nagios --with-nagios-group=nagios
  5. make
  6. make install
  7. yum install xinetd -y
  8. tar zxf nrpe-2.12.tar.gz
  9. cd nrpe-2.12
  10. ./configure
  11. make all
  12. make install-plugin
  13. make install-daemon
  14. make install-daemon-config
  15. make install-xinetd
  16. vim   /etc/xinetd.d/nrpe
  17.     only_from= 192.168.0.202   //添加Nagios监控主机ip
  18. vim   /etc/services
  19.     nrpe    5666/tcp      //跟/etc/xinetd.d/nrp端口一样
  20. /etc/init.d/xinetd  start
  21. netstat -anlpte | grep 5666   //检测nrpe是否启动成功
Nagoi主机配置
  1. tar zxf nrpe-2.12.tar.gz
  2. cd nrpe-2.12
  3. ./configure --with-nagios-user=nagios --with-nagios-group=nagios
  4. make all
  5. make install-plugin
检测
[root@vm2 ~]# /usr/local/nagios/libexec/check_nrpe -H 192.168.0.201
NRPE v2.12
看到以上输出说明与远程主机连接正常
修改配置文件  commands.cfg   services.cfg
  1. vi /usr/local/nagios/etc/objects/commands.cfg 
  2. define command{
  3. command_name        check_nrpe
  4. command_line           $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
  5. }
  1. vi /usr/local/nagios/etc/objects/services.cfg 
  2. define service{
  3. use     generic-service
  4. host_name       mysql主机
  5. service_description     CPU Load
  6. check_command   check_nrpe!check_load
  7. }
  8. define service{
  9. use     generic-service
  10. host_name       mysql主机
  11. service_description     Current Users
  12. check_command   check_nrpe!check_users
  13. }
  14. define service{
  15. use     generic-service
  16. host_name       mysql主机
  17. service_description     /Free Space
  18. check_command   check_nrpe!check_disk
  19. }
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg     检测配置文件
没有错误reload服务
service nagios reload
忙活了这么久,看下劳动成果:

明天再来折腾下Nagios报警,今天就到这里啦

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。