因为公司的nagios用了很久监控项目很多,也在zabbix迁移中,也就先临时用nagios监控mysql主从了

mysql> show slave status\G 查看其输出,即可判定主从复制是否正常。下面是某个从服务器的输出:

mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.X.X
                  Master_User: rep1
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 1752541
               Relay_Log_File: hy-mysql3-relay-bin.000088
                Relay_Log_Pos: 2339
        Relay_Master_Log_File: mysql-bin.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
这个输出,最关键处就是"Slave_IO_Running: Yes“和“Slave_SQL_Running: Yes”,这两个值全是"Yes"就表明主从复制正常,否则就是有问题。

操作步骤:
1、在主数据库服务器增加一个用户,给予较低的权限,操作为

mysql > grant Replication client on *.* to    'nagios'@'%' identified by 'nagios';
mysql> flush privileges;

  

2、登陆从服务器验证一下,看是否正常。操作为

mysql -unagios -pnagios -e "show slave stutas\G"    
  注意:这个操作是在 shell下操作的!!
3、在从服务器安装 nrpe,然后在配置文件nrpe.cfg加入一行
command[check_mysql_slave]=/usr/local/nagios-nrpe/libexec/chech_mysql_slave
4、编写脚本/usr/local/nagios-nrpe/libexec/check_mysql_slave(这是监控其作用的核心),其内容如下:
#!/bin/sh
declare -a slave_is
slave_is=($(/usr/local/mysql/bin/mysql -unagios -pnagios -e "show slave status\G"|grep Running |awk '{print $2}'))
if [ "${slave_is[0]}" = "Yes" -a "${slave_is[1]}" = "Yes" ]
then
echo "OK -slave is running"
exit 0
else
echo "Critical -slave is error"
exit 2
fi
5、给脚本添加可执行权限,手动运行这个脚本,观察输出。

[root@192-168-X-X ~]#/usr/local/nagios-nrpe/libexec/check_mysql_slave
OK -slave is running

6、修改/etc/suders
#注释掉下面这行,表示默认不需要控制台
#Defaults requiretty #添加
nagios ALL=(ALL) NOPASSWD:/usr/local/nagios-nrpe/libexec/check_mysql_slave

7、测试nrpe

[root@192-168-X-X ~]# /usr/local/nagios-nrpe/libexec/check_nrpe -Hlocalhost -c check_mysql_slave
OK -slave is running

  

8、添加nagios服务器端的services.cfg

define service{
host_name 192.168.X.X
service_description check_mysql_slave
check_command check_nrpe!check_mysql_slave
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
check_period 24x7
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
contact_groups zhaowei
}

9、重启nagios

[root@BC_BJ__Nagios ~]# service nagios restart
Running configuration check...done.
Stopping nagios: done.
Starting nagios: done.

10、web端显示如下可以监控多实例

Nagios监控mysql主从复制的更多相关文章

  1. nagios监控mysql及邮件报警

    1.使用默认监控命令check_http命令+相关的参数来实现,如下: 在command.cfg添加如下关键词监控命令:check_http_word,参数解析:-I指定IP或者主机名,-u指定URL ...

  2. shell监控脚本实例—监控mysql主从复制

    分享一例shell脚本,用于监测mysql数据库的主从复制,有需要的朋友不妨参考学习下. 转自:http://www.jbxue.com/article/14103.html(转载请注明出处) 本节内 ...

  3. nagios监控mysql主机,nginx,磁盘IO,网卡流量

    http://blog.chinaunix.net/uid-28685162-id-3506260.html nagios安装完成,打开/usr/local/nagios/etc/nagios.cfg ...

  4. Nagios 监控 Mysql

    被监控机的Mysql监控创建专用数据库.专用数据库账户mysql -uroot -pcreate database nagios_monitor;grant select on nagios_moni ...

  5. nagios监控mysql

    在nagios上部署check_mysql_health 监控mysql 博客分类: 架构   本监控为基于nagios服务器主动监控方法,利用check_mysql_health实现多种监控模式:  ...

  6. CentOS下编写shell脚本来监控MySQL主从复制的教程

    这篇文章主要介绍了在CentOS系统下编写shell脚本来监控主从复制的教程,文中举了两个发现故障后再次执行复制命令的例子,需要的朋友可以参考下 目的:定时监控MySQL主从数据库是否同步,如果不同步 ...

  7. nagios监控mysql主从状态

    看了网上很多mysql主从监控的,大部分都是shell的,就算是python的,也是在python下跑shell语句.我写了一个python的监控脚本,用到了mysqldb这个包.脚本如下: [roo ...

  8. Zabbix监控mysql主从复制状态

    原理 mysql slave show slave status\G 在输出信息中查看I/O线程和SQL线程的状态值(YES为正常,NO为错误) Slave_IO_Running: Yes Slave ...

  9. nagios系列(七)nagios通过自定义脚本的方式监控mysql主从同步

    nagios监控mysql主从同步 起因:nagios可能监控到mysql服务的运行情况,但确不能监控mysql的主从复制是否正常:有时候,同步已经停止,但管理人员却不知道. 登陆mysql从服务器, ...

随机推荐

  1. Code Force 21B Intersection

    B. Intersection time limit per test1 second memory limit per test256 megabytes inputstandard input o ...

  2. CLR via 笔记4.2 类型转换 is 与 as 区别

    is 和 as 操作符是用来进行强制类型转换的 is : 检查一个对象是否兼容于其他指定的类型,并返回一个Bool值,永远不会抛出异常 object o = new object(); if (o i ...

  3. jsp->jar

    (2)新建 WEB-INF目录 (3)在 WEB-INF/web.xml 中输入如下内容 <web-app xmlns="http://java.sun.com/xml/ns/j2ee ...

  4. OSGI框架—HelloWorld小实例

    OSGi(Open Service Gateway Initiative)技术是Java动态化模块化系统的一系列规范.OSGi一方面指维护OSGi规范的OSGI官方联盟,另一方面指的是该组织维护的基于 ...

  5. 如何获取Input标签自定义属性的值?

    HTML代码: <input type="hidden" value="${Name?if_exists}" id='ID' busCode = &quo ...

  6. Redis集群部署文档(Ubuntu15.10系统)

    Redis集群部署文档(Ubuntu15.10系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如 ...

  7. echarts容器动态设置高度

    测试提了bug,柱状图数据多的情况下,都叠到了一起,效果如下图. 要解决这个bug,首先想到的是让柱状图的容器自适应高度.于是,把原本div上写固定的高度去掉. <div id="my ...

  8. 与python的第一次邂逅

    python简介 一.什么是python python是一种面向对象.直译式的计算机程序语言,所以有了武老师的那句名言:一切皆为对象 python的设计哲学是:“优雅”,“明确”,“简单” pytho ...

  9. C#中Datatable和List互相转换

    其实早就该写的,哈哈,不过今天刚想起来注册,热热手,就写一下,哈哈. 直接上内容吧: 建立一个控制台应用程序, List<students> Studentlist = new List& ...

  10. Hbase­优化方案

    1.预分区设计 真正存储数据的是region要维护一个区间段的rowkey startRow~endRowkey ->手动设置预分区 create 'user_p','info','partit ...